import from old website
diff --git a/.gitignore b/.gitignore
new file mode 100755
index 0000000..8291ee8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.idea/
+*.ipr
+*.iws
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+*~
+examples.cache.old
\ No newline at end of file
diff --git a/README.adoc b/README.adoc
new file mode 100755
index 0000000..eb2a308
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,70 @@
+= TomEE Website Proposal
+
+== Add content
+
+Documentation is in `src/main/jbake/content`, it follows the sitemap/structure. If you add a new page ensure to add a link to it please.
+
+Preferred format is `asciidoc`.
+
+Here a sample for a new page:
+
+[source,adoc]
+----
+= My New Page
+:jbake-date: 2017-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+This page will rocks.
+
+- One point
+- Another point
+
+=== Subtitle
+
+Some content.
+----
+
+TIP: to run the website check the build section or run the main `org.apache.tomee.website.JBake`, it will log the local address to access the dev website and
+enable you to type `r[ENTER]` to rebuild it without restarting.
+
+== Build
+
+To build the final website just use:
+
+[source]
+----
+mvn compile
+----
+
+For development `mvn compile -Djbake.http=true` starts a server on http://localhost:8080 and auto refreshes
+pages after updates.
+
+
+Then website is generated in `target/site-${version}` and you just need to sync it with CMS repo.
+
+NOTE: it also opens the door to documentation versioning with subfolder per version like maven does.
+
+TIP: the rendering is just a main so if the process doesn't work for you just enrich it in `JBake` class.
+
+== Extensions
+
+Build will generate a PDF for each page containing the attribute `jbake-tomeepdf`.
+
+== Examples
+
+TomEE examples (${tomee.master}/examples) generates samples. It relies on `Examples` class
+which requests on github the README.md for each subfolder of `examples` folder.
+
+For rate limit reason examples are cached locally in examples.cache and you can set your
+github auth header (`Authorization`) setting the system property `-Dgithub.auth` to have
+a higher rate limit.
+
+The cache is just the github response excepted the content of the files which are decoded (base64).
+
+Then the main calls org.apache.tomee.website.Examples.populateTree which creates the examples
+in `src/main/jbake/content/examples`. If you want to take into account another example you
+need to delete the cache before re-running the generation.
+
+Finally note that the site generation will rely on the cache as well to generate the examples home page.
diff --git a/examples.cache b/examples.cache
new file mode 100755
index 0000000..ba5ccce
--- /dev/null
+++ b/examples.cache
@@ -0,0 +1,1653 @@
+{
+  "all":{
+    "adapters":[
+      {
+        "name":"multiple-arquillian-adapters",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters"
+      }
+    ],
+    "alternate":[
+      {
+        "name":"alternate-descriptors",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/alternate-descriptors"
+      }
+    ],
+    "alternative":[
+      {
+        "name":"cdi-alternative-and-stereotypes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes"
+      }
+    ],
+    "applet":[
+      {
+        "name":"applet",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/applet"
+      }
+    ],
+    "applicationcomposer":[
+      {
+        "name":"applicationcomposer-jaxws-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/applicationcomposer-jaxws-cdi"
+      },
+      {
+        "name":"rest-applicationcomposer",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer"
+      },
+      {
+        "name":"application-composer",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/application-composer"
+      },
+      {
+        "name":"rest-applicationcomposer-mockito",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito"
+      }
+    ],
+    "applicationexception":[
+      {
+        "name":"applicationexception",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/applicationexception"
+      }
+    ],
+    "arquillian":[
+      {
+        "name":"arquillian-jpa",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/arquillian-jpa"
+      },
+      {
+        "name":"multiple-tomee-arquillian",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multiple-tomee-arquillian"
+      },
+      {
+        "name":"multiple-arquillian-adapters",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters"
+      }
+    ],
+    "async":[
+      {
+        "name":"async-postconstruct",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/async-postconstruct"
+      },
+      {
+        "name":"async-methods",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/async-methods"
+      }
+    ],
+    "attachments":[
+      {
+        "name":"webservice-attachments",
+        "readme":"Title: Webservice Attachments\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AttachmentImpl\n\n    package org.superbiz.attachment;\n    \n    import javax.activation.DataHandler;\n    import javax.activation.DataSource;\n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    import javax.xml.ws.BindingType;\n    import javax.xml.ws.soap.SOAPBinding;\n    import java.io.IOException;\n    import java.io.InputStream;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has a single interface: {@link AttachmentWs} a webservice interface.\n     */\n    @Stateless\n    @WebService(\n            portName = \"AttachmentPort\",\n            serviceName = \"AttachmentWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.attachment.AttachmentWs\")\n    @BindingType(value = SOAPBinding.SOAP12HTTP_MTOM_BINDING)\n    public class AttachmentImpl implements AttachmentWs {\n    \n        public String stringFromBytes(byte[] data) {\n            return new String(data);\n        }\n    \n        public String stringFromDataSource(DataSource source) {\n    \n            try {\n                InputStream inStr = source.getInputStream();\n                int size = inStr.available();\n                byte[] data = new byte[size];\n                inStr.read(data);\n                inStr.close();\n                return new String(data);\n            } catch (IOException e) {\n                e.printStackTrace();\n            }\n            return \"\";\n        }\n    \n        public String stringFromDataHandler(DataHandler handler) {\n    \n            try {\n                return (String) handler.getContent();\n            } catch (IOException e) {\n                e.printStackTrace();\n            }\n            return \"\";\n        }\n    }\n\n## AttachmentWs\n\n    package org.superbiz.attachment;\n    \n    import javax.activation.DataHandler;\n    import javax.jws.WebService;\n    \n    /**\n     * This is an EJB 3 webservice interface to send attachments throughout SAOP.\n     */\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    public interface AttachmentWs {\n    \n        public String stringFromBytes(byte[] data);\n    \n        // Not working at the moment with SUN saaj provider and CXF\n        //public String stringFromDataSource(DataSource source);\n    \n        public String stringFromDataHandler(DataHandler handler);\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n\n## AttachmentTest\n\n    package org.superbiz.attachment;\n    \n    import junit.framework.TestCase;\n    \n    import javax.activation.DataHandler;\n    import javax.activation.DataSource;\n    import javax.mail.util.ByteArrayDataSource;\n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.BindingProvider;\n    import javax.xml.ws.Service;\n    import javax.xml.ws.soap.SOAPBinding;\n    import java.net.URL;\n    import java.util.Properties;\n    \n    public class AttachmentTest extends TestCase {\n    \n        //START SNIPPET: setup\t\n        private InitialContext initialContext;\n    \n        protected void setUp() throws Exception {\n    \n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            initialContext = new InitialContext(properties);\n        }\n        //END SNIPPET: setup    \n    \n        /**\n         * Create a webservice client using wsdl url\n         *\n         * @throws Exception\n         */\n        //START SNIPPET: webservice\n        public void testAttachmentViaWsInterface() throws Exception {\n            Service service = Service.create(\n                    new URL(\"http://127.0.0.1:4204/AttachmentImpl?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"AttachmentWsService\"));\n            assertNotNull(service);\n    \n            AttachmentWs ws = service.getPort(AttachmentWs.class);\n    \n            // retrieve the SOAPBinding\n            SOAPBinding binding = (SOAPBinding) ((BindingProvider) ws).getBinding();\n            binding.setMTOMEnabled(true);\n    \n            String request = \"tsztelak@gmail.com\";\n    \n            // Byte array\n            String response = ws.stringFromBytes(request.getBytes());\n            assertEquals(request, response);\n    \n            // Data Source\n            DataSource source = new ByteArrayDataSource(request.getBytes(), \"text/plain; charset=UTF-8\");\n    \n            // not yet supported !\n    //        response = ws.stringFromDataSource(source);\n    //        assertEquals(request, response);\n    \n            // Data Handler\n            response = ws.stringFromDataHandler(new DataHandler(source));\n            assertEquals(request, response);\n        }\n        //END SNIPPET: webservice\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.attachment.AttachmentTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-attachments\n    INFO - openejb.base = /Users/dblevins/examples/webservice-attachments\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-attachments/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-attachments/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-attachments/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean AttachmentImpl: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-attachments/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-attachments/classpath.ear\n    INFO - Created Ejb(deployment-id=AttachmentImpl, ejb-name=AttachmentImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=AttachmentImpl, ejb-name=AttachmentImpl, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-attachments/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.034 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-attachments"
+      }
+    ],
+    "bmt":[
+      {
+        "name":"testing-transactions-bmt",
+        "readme":"Title: Testing Transactions BMT\n\nShows how to begin, commit and rollback transactions using a UserTransaction via a Stateful Bean.\n\n## Movie\n\n    package org.superbiz.injection.tx;\n\n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n\n    @Entity\n    public class Movie {\n\n        @Id\n        @GeneratedValue\n        private Long id;\n        private String director;\n        private String title;\n        private int year;\n\n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n\n        public Movie() {\n\n        }\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getDirector() {\n            return director;\n        }\n\n        public void setDirector(String director) {\n            this.director = director;\n        }\n\n        public String getTitle() {\n            return title;\n        }\n\n        public void setTitle(String title) {\n            this.title = title;\n        }\n\n        public int getYear() {\n            return year;\n        }\n\n        public void setYear(int year) {\n            this.year = year;\n        }\n    }\n\n## Movies\n\n    package org.superbiz.injection.tx;\n\n    import javax.annotation.Resource;\n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionManagement;\n    import javax.ejb.TransactionManagementType;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import javax.transaction.UserTransaction;\n\n    @Stateful(name = \"Movies\")\n    @TransactionManagement(TransactionManagementType.BEAN)\n    public class Movies {\n\n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n\n        @Resource\n        private UserTransaction userTransaction;\n\n        public void addMovie(Movie movie) throws Exception {\n            try {\n                userTransaction.begin();\n                entityManager.persist(movie);\n\n                //For some dummy reason, this db can have only 5 titles. :O)\n                if (countMovies() > 5) {\n                    userTransaction.rollback();\n                } else {\n                    userTransaction.commit();\n                }\n\n\n            } catch (Exception e) {\n                e.printStackTrace();\n                userTransaction.rollback();\n            }\n        }\n\n        public Long countMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT COUNT(m) FROM Movie m\");\n            return Long.class.cast(query.getSingleResult());\n        }\n    }\n\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n\n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.tx.Movie</class>\n\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.injection.tx;\n\n    import org.junit.Assert;\n    import org.junit.Test;\n\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.Properties;\n\n    public class MoviesTest {\n\n        @EJB\n        private Movies movies;\n\n        @Test\n        public void testMe() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n\n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n\n            movies.addMovie(new Movie(\"Asif Kapadia\", \"Senna\", 2010));\n            movies.addMovie(new Movie(\"José Padilha\", \"Tropa de Elite\", 2007));\n            movies.addMovie(new Movie(\"Andy Wachowski/Lana Wachowski\", \"The Matrix\", 1999));\n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n            Assert.assertEquals(5L, movies.countMovies().longValue());\n        }\n\n    }\n\n\n# Running\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.tx.MoviesTest\n    INFO - ********************************************************************************\n    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Sat Jul 21 16:39:28 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 20120721\n    INFO - Build time: 12:06\n    INFO - ********************************************************************************\n    INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f\n    INFO - Succeeded in installing singleton service\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Creating Resource(id=movieDatabase)\n    INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt/target/classes\n    INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    WARNING - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Creating Container(id=Default Stateful Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Creating Resource(id=movieDatabaseNonJta)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\" loaded.\n    INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested installation of a ClassFileTransformer which requires a JavaAgent.  See http://tomee.apache.org/3.0/javaagent.html\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 399ms\n    INFO - Jndi(name=\"java:global/testing-transactions-bmt/Movies!org.superbiz.injection.tx.Movies\")\n    INFO - Jndi(name=\"java:global/testing-transactions-bmt/Movies\")\n    INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points are validated successfully.\n    INFO - OpenWebBeans Container has started, it took 157 ms.\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt)\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@709a1411\n    21-Jul-2012 4:39:32 PM null openjpa.Runtime\n    INFO: Starting OpenJPA 2.2.0\n    21-Jul-2012 4:39:32 PM null openjpa.jdbc.JDBC\n    INFO: Using dictionary class \"org.apache.openjpa.jdbc.sql.HSQLDictionary\" (HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).\n    21-Jul-2012 4:39:33 PM null openjpa.Enhance\n    INFO: Creating subclass and redefining methods for \"[class org.superbiz.injection.tx.Movie]\". This means that your application will be less efficient than it would if you ran the OpenJPA enhancer.\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@709a1411\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@627b5c\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@627b5c\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2f031310\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2f031310\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4\n    INFO - Rolling back user transaction org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.471 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-transactions-bmt"
+      }
+    ],
+    "bval":[
+      {
+        "name":"bval-evaluation-redeployment",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/bval-evaluation-redeployment"
+      }
+    ],
+    "callbacks":[
+      {
+        "name":"simple-stateful-callbacks",
+        "readme":"Title: Simple Stateful with callback methods\n\nThis example shows how to create a stateful session bean that uses the @PrePassivate, @PostActivate, @PostConstruct, @PreDestroy and @AroundInvoke annotations.\n\n## CallbackCounter\n\n    package org.superbiz.counter;\n\n    import javax.annotation.PostConstruct;\n    import javax.annotation.PreDestroy;\n    import javax.ejb.PostActivate;\n    import javax.ejb.PrePassivate;\n    import javax.ejb.Stateful;\n    import javax.ejb.StatefulTimeout;\n    import javax.interceptor.AroundInvoke;\n    import javax.interceptor.InvocationContext;\n    import java.io.Serializable;\n    import java.util.concurrent.TimeUnit;\n\n    @Stateful\n    @StatefulTimeout(value = 1, unit = TimeUnit.SECONDS)\n    public class CallbackCounter implements Serializable {\n\n        private int count = 0;\n\n        @PrePassivate\n        public void prePassivate() {\n            ExecutionChannel.getInstance().notifyObservers(\"prePassivate\");\n        }\n\n        @PostActivate\n        public void postActivate() {\n            ExecutionChannel.getInstance().notifyObservers(\"postActivate\");\n        }\n\n        @PostConstruct\n        public void postConstruct() {\n            ExecutionChannel.getInstance().notifyObservers(\"postConstruct\");\n        }\n\n        @PreDestroy\n        public void preDestroy() {\n            ExecutionChannel.getInstance().notifyObservers(\"preDestroy\");\n        }\n\n        @AroundInvoke\n        public Object intercept(InvocationContext ctx) throws Exception {\n            ExecutionChannel.getInstance().notifyObservers(ctx.getMethod().getName());\n            return ctx.proceed();\n        }\n\n        public int count() {\n            return count;\n        }\n\n        public int increment() {\n            return ++count;\n        }\n\n        public int reset() {\n            return (count = 0);\n        }\n    }\n\n## ExecutionChannel\n\n    package org.superbiz.counter;\n\n    import java.util.ArrayList;\n    import java.util.List;\n\n    public class ExecutionChannel {\n        private static final ExecutionChannel INSTANCE = new ExecutionChannel();\n\n        private final List<ExecutionObserver> observers = new ArrayList<ExecutionObserver>();\n\n        public static ExecutionChannel getInstance() {\n            return INSTANCE;\n        }\n\n        public void addObserver(ExecutionObserver observer) {\n            this.observers.add(observer);\n        }\n\n        public void notifyObservers(Object value) {\n            for (ExecutionObserver observer : this.observers) {\n                observer.onExecution(value);\n            }\n        }\n    }\n\n## ExecutionObserver\n\n    package org.superbiz.counter;\n\n    public interface ExecutionObserver {\n\n        void onExecution(Object value);\n\n    }\n\n## CounterCallbacksTest\n\n    package org.superbiz.counter;\n\n    import junit.framework.Assert;\n    import org.junit.Test;\n\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.naming.NamingException;\n    import java.util.*;\n\n    public class CounterCallbacksTest implements ExecutionObserver {\n        private static List<Object> received = new ArrayList<Object>();\n\n        public Context getContext() throws NamingException {\n            final Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            return new InitialContext(p);\n\n        }\n\n        @Test\n        public void test() throws Exception {\n            final Map<String, Object> p = new HashMap<String, Object>();\n            p.put(\"MySTATEFUL\", \"new://Container?type=STATEFUL\");\n            p.put(\"MySTATEFUL.Capacity\", \"2\"); //How many instances of Stateful beans can our server hold in memory?\n            p.put(\"MySTATEFUL.Frequency\", \"1\"); //Interval in seconds between checks\n            p.put(\"MySTATEFUL.BulkPassivate\", \"0\"); //No bulkPassivate - just passivate entities whenever it is needed\n            final EJBContainer container = EJBContainer.createEJBContainer(p);\n\n            //this is going to track the execution\n            ExecutionChannel.getInstance().addObserver(this);\n\n            {\n                final Context context = getContext();\n\n                CallbackCounter counterA = (CallbackCounter) context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\");\n                Assert.assertNotNull(counterA);\n                Assert.assertEquals(\"postConstruct\", received.remove(0));\n\n                Assert.assertEquals(0, counterA.count());\n                Assert.assertEquals(\"count\", received.remove(0));\n\n                Assert.assertEquals(1, counterA.increment());\n                Assert.assertEquals(\"increment\", received.remove(0));\n\n                Assert.assertEquals(0, counterA.reset());\n                Assert.assertEquals(\"reset\", received.remove(0));\n\n                Assert.assertEquals(1, counterA.increment());\n                Assert.assertEquals(\"increment\", received.remove(0));\n\n                System.out.println(\"Waiting 2 seconds...\");\n                Thread.sleep(2000);\n\n                Assert.assertEquals(\"preDestroy\", received.remove(0));\n\n                try {\n                    counterA.increment();\n                    Assert.fail(\"The ejb is not supposed to be there.\");\n                } catch (javax.ejb.NoSuchEJBException e) {\n                    //excepted\n                }\n\n                context.close();\n            }\n\n            {\n                final Context context = getContext();\n\n                CallbackCounter counterA = (CallbackCounter) context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\");\n                Assert.assertEquals(\"postConstruct\", received.remove(0));\n\n                Assert.assertEquals(1, counterA.increment());\n                Assert.assertEquals(\"increment\", received.remove(0));\n\n                ((CallbackCounter) context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\")).count();\n                Assert.assertEquals(\"postConstruct\", received.remove(0));\n                Assert.assertEquals(\"count\", received.remove(0));\n\n                ((CallbackCounter) context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\")).count();\n                Assert.assertEquals(\"postConstruct\", received.remove(0));\n                Assert.assertEquals(\"count\", received.remove(0));\n\n                System.out.println(\"Waiting 2 seconds...\");\n                Thread.sleep(2000);\n                Assert.assertEquals(\"prePassivate\", received.remove(0));\n\n                context.close();\n            }\n            container.close();\n\n            Assert.assertEquals(\"preDestroy\", received.remove(0));\n            Assert.assertEquals(\"preDestroy\", received.remove(0));\n\n            Assert.assertTrue(received.toString(), received.isEmpty());\n        }\n\n        @Override\n        public void onExecution(Object value) {\n            System.out.println(\"Test step -> \" + value);\n            received.add(value);\n        }\n    }\n\n# Running\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.counter.CounterCallbacksTest\n    INFO - ********************************************************************************\n    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Sat Jul 21 08:18:28 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 20120721\n    INFO - Build time: 04:06\n    INFO - ********************************************************************************\n    INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd\n    INFO - Succeeded in installing singleton service\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=MySTATEFUL, type=Container, provider-id=Default Stateful Container)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Creating Container(id=MySTATEFUL)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks/target/classes\n    INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    INFO - Auto-deploying ejb CallbackCounter: EjbDeployment(deployment-id=CallbackCounter)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.counter.CounterCallbacksTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Enterprise application \"/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\" loaded.\n    INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    INFO - Jndi(name=\"java:global/simple-stateful-callbacks/CallbackCounter!org.superbiz.counter.CallbackCounter\")\n    INFO - Jndi(name=\"java:global/simple-stateful-callbacks/CallbackCounter\")\n    INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points are validated successfully.\n    INFO - OpenWebBeans Container has started, it took 225 ms.\n    INFO - Created Ejb(deployment-id=CallbackCounter, ejb-name=CallbackCounter, container=MySTATEFUL)\n    INFO - Started Ejb(deployment-id=CallbackCounter, ejb-name=CallbackCounter, container=MySTATEFUL)\n    INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks)\n    Test step -> postConstruct\n    Test step -> count\n    Test step -> increment\n    Test step -> reset\n    Test step -> increment\n    Waiting 2 seconds...\n    Test step -> preDestroy\n    INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-8000\n    INFO - Activation failed: file not found /tmp/583c10bfdbd326ba=57f94a9b=138a9798adf=-8000\n    Test step -> postConstruct\n    Test step -> increment\n    Test step -> postConstruct\n    Test step -> count\n    Test step -> postConstruct\n    Test step -> count\n    Waiting 2 seconds...\n    Test step -> prePassivate\n    INFO - Passivating to file /tmp/583c10bfdbd326ba=57f94a9b=138a9798adf=-7fff\n    Test step -> preDestroy\n    INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-7ffe\n    Test step -> preDestroy\n    INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-7ffd\n    INFO - Undeploying app: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.487 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n    [INFO] ------------------------------------------------------------------------\n    [INFO] BUILD SUCCESS\n    [INFO] ------------------------------------------------------------------------\n    [INFO] Total time: 15.803s\n    [INFO] Finished at: Sat Jul 21 08:18:35 EDT 2012\n    [INFO] Final Memory: 11M/247M\n    [INFO] ------------------------------------------------------------------------\n\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-stateful-callbacks"
+      },
+      {
+        "name":"simple-stateless-callbacks",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-stateless-callbacks"
+      }
+    ],
+    "cdi":[
+      {
+        "name":"applicationcomposer-jaxws-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/applicationcomposer-jaxws-cdi"
+      },
+      {
+        "name":"cdi-basic",
+        "readme":"Title: CDI @Inject\n\nTo use `@Inject`, the first thing you need is a `META-INF/beans.xml` file in the module\nor jar.  This effectively turns on CDI and allows the `@Inject` references to work.\nNo `META-INF/beans.xml` no injection, period.  This may seem overly strict,\nbut it is not without reason.  The CDI API is a bit greedy and does consume a fair\nabout of resources by design.\n\nWhen the container constructs a bean with an `@Inject` reference,\nit will first find or create the object that will be injected.  For the sake of\nsimplicity, the is example has a basic `Faculty` pojo with a no-arg constructor.  Anyone\nreferencing `@Inject Faculty` will get their own instance of `Faculty`.  If the desire\nis to share the same instance of `Faculty`, see the concept of `scopes` -- this is\nexactly what scopes are for.\n\n# Example\n\nIn this example we have an `@Stateless` bean `Course` with an `@Inject` reference to an\nobject of type `Faculty`.  When `Course` is created, the container will also create an\ninstance of `Faculty`.  The `@PostConstruct` will be called on the `Faculty`,\nthen the `Faculty` instance will be injected into the `Course` bean.  Finally, the\n`@PostConstruct` will be invoked on `Course` and then we're done.  All instances will\nhave been created.\n\nThe `CourseTest` test case drives this creation process by having `Course` injected\ninto it in its `@Setup` method.  By the time our `@Test` method is invoked,\nall the real work should be done and we should be ready to go.  In the test case we do\nsome basic asserts to ensure everything was constructed, all `@PostConstruct` methods\ncalled and everyting injected.\n\n## Faculty <small>a basic injectable pojo</small>\n\n    public class Faculty {\n\n        private List<String> facultyMembers;\n\n        private String facultyName;\n\n        @PostConstruct\n        public void initialize() {\n            this.facultyMembers = new ArrayList<String>();\n            facultyMembers.add(\"Ian Schultz\");\n            facultyMembers.add(\"Diane Reyes\");\n            facultyName = \"Computer Science\";\n        }\n\n        public List<String> getFacultyMembers() {\n            return facultyMembers;\n        }\n\n        public String getFacultyName() {\n            return facultyName;\n        }\n\n    }\n\n## Course <small>a simple session bean</small>\n\n    @Stateless\n    public class Course {\n\n        @Inject\n        private Faculty faculty;\n\n        private String courseName;\n\n        private int capacity;\n\n        @PostConstruct\n        private void init() {\n            assert faculty != null;\n\n            // These strings can be externalized\n            // We'll see how to do that later\n            this.courseName = \"CDI 101 - Introduction to CDI\";\n            this.capacity = 100;\n        }\n\n        public String getCourseName() {\n            return courseName;\n        }\n\n        public int getCapacity() {\n            return capacity;\n        }\n\n        public Faculty getFaculty() {\n            return faculty;\n        }\n    }\n\n# Test Case\n\n    public class CourseTest extends TestCase {\n\n        @EJB\n        private Course course;\n\n        @Before\n        public void setUp() throws Exception {\n            EJBContainer.createEJBContainer().getContext().bind(\"inject\", this);\n        }\n\n        @Test\n        public void test() {\n\n            // Was the EJB injected?\n            assertTrue(course != null);\n\n            // Was the Course @PostConstruct called?\n            assertNotNull(course.getCourseName());\n            assertTrue(course.getCapacity() > 0);\n\n            // Was a Faculty instance injected into Course?\n            final Faculty faculty = course.getFaculty();\n            assertTrue(faculty != null);\n\n            // Was the @PostConstruct called on Faculty?\n            assertEquals(faculty.getFacultyName(), \"Computer Science\");\n            assertEquals(faculty.getFacultyMembers().size(), 2);\n        }\n    }\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.cdi.basic.CourseTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/cdi-basic\n    INFO - openejb.base = /Users/dblevins/examples/cdi-basic\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/cdi-basic/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/cdi-basic/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/cdi-basic\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean cdi-basic.Comp: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Course: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/cdi-basic\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/cdi-basic\n    INFO - Jndi(name=\"java:global/cdi-basic/cdi-basic.Comp!org.apache.openejb.BeanContext$Comp\")\n    INFO - Jndi(name=\"java:global/cdi-basic/cdi-basic.Comp\")\n    INFO - Jndi(name=\"java:global/cdi-basic/Course!org.superbiz.cdi.basic.Course\")\n    INFO - Jndi(name=\"java:global/cdi-basic/Course\")\n    INFO - Jndi(name=\"java:global/EjbModule1833350875/org.superbiz.cdi.basic.CourseTest!org.superbiz.cdi.basic.CourseTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1833350875/org.superbiz.cdi.basic.CourseTest\")\n    INFO - Created Ejb(deployment-id=Course, ejb-name=Course, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=cdi-basic.Comp, ejb-name=cdi-basic.Comp, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.cdi.basic.CourseTest, ejb-name=org.superbiz.cdi.basic.CourseTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Course, ejb-name=Course, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=cdi-basic.Comp, ejb-name=cdi-basic.Comp, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.cdi.basic.CourseTest, ejb-name=org.superbiz.cdi.basic.CourseTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/cdi-basic)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.126 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-basic"
+      },
+      {
+        "name":"simple-mdb-and-cdi",
+        "readme":"Title: Simple MDB and CDI\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## ChatBean\n\n    package org.superbiz.mdb;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.MessageDriven;\n    import javax.inject.Inject;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import javax.jms.Message;\n    import javax.jms.MessageListener;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    @MessageDriven\n    public class ChatBean implements MessageListener {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource(name = \"AnswerQueue\")\n        private Queue answerQueue;\n    \n        @Inject\n        private ChatRespondCreator responder;\n    \n        public void onMessage(Message message) {\n            try {\n    \n                final TextMessage textMessage = (TextMessage) message;\n                final String question = textMessage.getText();\n                final String response = responder.respond(question);\n    \n                if (response != null) {\n                    respond(response);\n                }\n            } catch (JMSException e) {\n                throw new IllegalStateException(e);\n            }\n        }\n    \n        private void respond(String text) throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n    \n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageProducer from the Session to the Topic or Queue\n                MessageProducer producer = session.createProducer(answerQueue);\n                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                // Create a message\n                TextMessage message = session.createTextMessage(text);\n    \n                // Tell the producer to send the message\n                producer.send(message);\n            } finally {\n                // Clean up\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    }\n\n## ChatRespondCreator\n\n    package org.superbiz.mdb;\n    \n    public class ChatRespondCreator {\n        public String respond(String question) {\n            if (\"Hello World!\".equals(question)) {\n                return \"Hello, Test Case!\";\n            } else if (\"How are you?\".equals(question)) {\n                return \"I'm doing well.\";\n            } else if (\"Still spinning?\".equals(question)) {\n                return \"Once every day, as usual.\";\n            }\n            return null;\n        }\n    }\n\n## beans.xml\n\n    <!--\n    \n        Licensed to the Apache Software Foundation (ASF) under one or more\n        contributor license agreements.  See the NOTICE file distributed with\n        this work for additional information regarding copyright ownership.\n        The ASF licenses this file to You under the Apache License, Version 2.0\n        (the \"License\"); you may not use this file except in compliance with\n        the License.  You may obtain a copy of the License at\n    \n           http://www.apache.org/licenses/LICENSE-2.0\n        Unless required by applicable law or agreed to in writing, software\n        distributed under the License is distributed on an \"AS IS\" BASIS,\n        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n        See the License for the specific language governing permissions and\n        limitations under the License.\n    -->\n    \n    <beans/>\n    \n\n## ChatBeanTest\n\n    package org.superbiz.mdb;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.JMSException;\n    import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    public class ChatBeanTest extends TestCase {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource(name = \"ChatBean\")\n        private Queue questionQueue;\n    \n        @Resource(name = \"AnswerQueue\")\n        private Queue answerQueue;\n    \n        public void test() throws Exception {\n            EJBContainer.createEJBContainer().getContext().bind(\"inject\", this);\n    \n    \n            final Connection connection = connectionFactory.createConnection();\n    \n            connection.start();\n    \n            final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n            final MessageProducer questions = session.createProducer(questionQueue);\n    \n            final MessageConsumer answers = session.createConsumer(answerQueue);\n    \n    \n            sendText(\"Hello World!\", questions, session);\n    \n            assertEquals(\"Hello, Test Case!\", receiveText(answers));\n    \n    \n            sendText(\"How are you?\", questions, session);\n    \n            assertEquals(\"I'm doing well.\", receiveText(answers));\n    \n    \n            sendText(\"Still spinning?\", questions, session);\n    \n            assertEquals(\"Once every day, as usual.\", receiveText(answers));\n        }\n    \n        private void sendText(String text, MessageProducer questions, Session session) throws JMSException {\n    \n            questions.send(session.createTextMessage(text));\n        }\n    \n        private String receiveText(MessageConsumer answers) throws JMSException {\n    \n            return ((TextMessage) answers.receive(1000)).getText();\n        }\n    }\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-mdb-and-cdi"
+      },
+      {
+        "name":"jsf-cdi-and-ejb",
+        "readme":"Title: JSF-CDI-EJB\n\nThe simple application contains a CDI managed bean `CalculatorBean`, which uses the `Calculator` EJB to add two numbers\nand display the results to the user. The EJB is injected in the managed bean using @Inject annotation.\n\nYou could run this in the latest Apache TomEE [snapshot](https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/)\n\nThe complete source code is below but lets break down to look at some smaller snippets and see  how it works.\n\n\nA little note on the setup:\n\nAs for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the\nwar. In maven terms, they would be with scope 'provided'\n\nAlso note that we use servlet 2.5 declaration in web.xml\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xmlns=\"http://java.sun.com/xml/ns/javaee\"\n  xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n  xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n  version=\"2.5\">\n\nAnd we use 2.0 version of faces-config\n\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\nTo make this a cdi-aware-archive (i.e bean archive) an empty beans.xml is added in WEB-INF\n\n       <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n       <beans xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n         http://java.sun.com/xml/ns/javaee/beans_1_0.xsd\">\n       </beans>\n\nWe'll first declare the FacesServlet in the web.xml\n\n      <servlet>\n        <servlet-name>Faces Servlet</servlet-name>\n        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n        <load-on-startup>1</load-on-startup>\n      </servlet>\n\nFacesServlet acts as the master controller.\n\nWe'll then create the calculator.xhtml file.\n\n           <h:outputText value='Enter first number'/>\n           <h:inputText value='#{calculatorBean.x}'/>\n           <h:outputText value='Enter second number'/>\n           <h:inputText value='#{calculatorBean.y}'/>\n           <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n\nNotice how we've used the bean here. By default, the bean name would be the simple name of the bean\nclass with the first letter in lower case.\n\nWe've annotated the `CalculatorBean` with `@RequestScoped`.\nSo when a request comes in, the bean is instantiated and placed in the request scope.\n\n<h:inputText value='#{calculatorBean.x}'/>\n\nHere, getX() method of calculatorBean is invoked and the resulting value is displayed.\nx being a Double, we rightly should see 0.0 displayed.\n\nWhen you change the value and submit the form, these entered values are bound using the setters\nin the bean and then the commandButton-action method is invoked.\n\nIn this case, CalculatorBean#add() is invoked.\n\nCalculator#add() delegates the work to the ejb, gets the result, stores it\nand then returns what view is to be rendered.\n\nThe return value \"success\" is checked up in faces-config navigation-rules\nand the respective page is rendered.\n\nIn our case, 'result.xhtml' page is rendered where\nuse EL and display the result from the request-scoped `calculatorBean`.\n\n#Source Code\n\n## CalculatorBean\n\n    import javax.enterprise.context.RequestScoped;\n    import javax.inject.Named;\n    import javax.inject.Inject;\n\n    @RequestScoped\n    @Named\n    public class CalculatorBean {\n        @Inject\n        Calculator calculator;\n        private double x;\n        private double y;\n        private double result;\n    \n        public double getX() {\n            return x;\n        }\n    \n        public void setX(double x) {\n            this.x = x;\n        }\n    \n        public double getY() {\n            return y;\n        }\n    \n        public void setY(double y) {\n            this.y = y;\n        }\n    \n        public double getResult() {\n            return result;\n        }\n    \n        public void setResult(double result) {\n            this.result = result;\n        }\n    \n        public String add() {\n            result = calculator.add(x, y);\n            return \"success\";\n        }\n    }\n\n## Calculator\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Stateless;\n    \n    @Stateless\n    public class Calculator{\n    \n        public double add(double x, double y) {\n            return x + y;\n        }\n    }\n\n\n#web.xml\n\n<?xml version=\"1.0\"?>\n\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xmlns=\"http://java.sun.com/xml/ns/javaee\"\n         xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n         version=\"2.5\">\n\n  <description>MyProject web.xml</description>\n\n  <!-- Faces Servlet -->\n  <servlet>\n    <servlet-name>Faces Servlet</servlet-name>\n    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n    <load-on-startup>1</load-on-startup>\n  </servlet>\n\n  <!-- Faces Servlet Mapping -->\n  <servlet-mapping>\n    <servlet-name>Faces Servlet</servlet-name>\n    <url-pattern>*.jsf</url-pattern>\n  </servlet-mapping>\n\n  <!-- Welcome files -->\n  <welcome-file-list>\n    <welcome-file>index.jsp</welcome-file>\n    <welcome-file>index.html</welcome-file>\n  </welcome-file-list>\n\n</web-app>\n\n\n#Calculator.xhtml\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:f=\"http://java.sun.com/jsf/core\"\n      xmlns:h=\"http://java.sun.com/jsf/html\">\n\n\n<h:body bgcolor=\"white\">\n    <f:view>\n        <h:form>\n            <h:panelGrid columns=\"2\">\n                <h:outputText value='Enter first number'/>\n                <h:inputText value='#{calculatorBean.x}'/>\n                <h:outputText value='Enter second number'/>\n                <h:inputText value='#{calculatorBean.y}'/>\n                <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n            </h:panelGrid>\n        </h:form>\n    </f:view>\n</h:body>\n</html>\n\n\n #Result.xhtml\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:f=\"http://java.sun.com/jsf/core\"\n      xmlns:h=\"http://java.sun.com/jsf/html\">\n\n<h:body>\n<f:view>\n    <h:form id=\"mainForm\">\n        <h2><h:outputText value=\"Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }\"/></h2>\n        <h:commandLink action=\"back\">\n            <h:outputText value=\"Home\"/>\n        </h:commandLink>\n    </h:form>\n</f:view>\n</h:body>\n</html>\n\n #faces-config.xml\n\n <?xml version=\"1.0\"?>\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\n   <navigation-rule>\n     <from-view-id>/calculator.xhtml</from-view-id>\n     <navigation-case>\n       <from-outcome>success</from-outcome>\n       <to-view-id>/result.xhtml</to-view-id>\n     </navigation-case>\n   </navigation-rule>\n\n   <navigation-rule>\n     <from-view-id>/result.xhtml</from-view-id>\n     <navigation-case>\n       <from-outcome>back</from-outcome>\n       <to-view-id>/calculator.xhtml</to-view-id>\n     </navigation-case>\n   </navigation-rule>\n </faces-config>",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jsf-cdi-and-ejb"
+      },
+      {
+        "name":"groovy-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/groovy-cdi"
+      },
+      {
+        "name":"cdi-ejbcontext-jaas",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-ejbcontext-jaas"
+      },
+      {
+        "name":"cdi-produces-disposes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-produces-disposes"
+      },
+      {
+        "name":"cdi-interceptors",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-interceptors"
+      },
+      {
+        "name":"cdi-application-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-application-scope"
+      },
+      {
+        "name":"cdi-request-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-request-scope"
+      },
+      {
+        "name":"cdi-alternative-and-stereotypes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes"
+      },
+      {
+        "name":"cdi-produces-field",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-produces-field"
+      },
+      {
+        "name":"simple-cdi-interceptor",
+        "readme":"#Simple CDI Interceptor\n\nLet's write a simple application that would allow us to book tickets for a movie show. As with all applications, logging is one cross-cutting concern that we have. \n\n(Relevant snippets are inlined but you can check out the complete code, from the links provided)\n\nHow do we mark which methods are to be intercepted ? Wouldn't it be handy to annotate a method like \n\n    @Log\n    public void aMethod(){...} \n\nLet's create an  annotation that would \"mark\" a method for interception. \n\n    @InterceptorBinding\n    @Target({ TYPE, METHOD })\n    @Retention(RUNTIME)\n    public @interface Log {\n    }\n\nSure, you haven't missed the @InterceptorBinding annotation above ! Now that our custom annotation is created, lets attach it (or to use a better term for it, \"bind it\" )\nto an interceptor. \n\nSo here's our logging interceptor. An @AroundInvoke method and we are almost done.\n\n    @Interceptor\n    @Log  //binding the interceptor here. now any method annotated with @Log would be intercepted by logMethodEntry\n    public class LoggingInterceptor {\n        @AroundInvoke\n        public Object logMethodEntry(InvocationContext ctx) throws Exception {\n            System.out.println(\"Entering method: \" + ctx.getMethod().getName());\n            //or logger.info statement \n            return ctx.proceed();\n        }\n    }\n\nNow the @Log annotation we created is bound to this interceptor.\n\nThat done, let's annotate at class-level or method-level and have fun intercepting ! \n\n    @Log\n    @Stateful\n    public class BookShow implements Serializable {\n        private static final long serialVersionUID = 6350400892234496909L;\n        public List<String> getMoviesList() {\n            List<String> moviesAvailable = new ArrayList<String>();\n            moviesAvailable.add(\"12 Angry Men\");\n            moviesAvailable.add(\"Kings speech\");\n            return moviesAvailable;\n        }\n        public Integer getDiscountedPrice(int ticketPrice) {\n            return ticketPrice - 50;\n        }\n        // assume more methods are present\n    }\n\nThe `@Log` annotation applied at class level denotes that all the methods should be intercepted with `LoggingInterceptor`.\n\nBefore we say \"all done\" there's one last thing we are left with ! To enable the interceptors ! \n\nLets quickly put up a [beans.xml file]\n\n    <beans>\n      <interceptors>\n        <class>org.superbiz.cdi.bookshow.interceptors.LoggingInterceptor\n        </class>\n      </interceptors>\n    </beans>\n\n in META-INF\n\n\nThose lines in beans.xml not only \"enable\" the interceptors, but also define the \"order of execution\" of the interceptors.\nBut we'll see that in another example on multiple-cdi-interceptors.\n\nFire up the test, and we should see a 'Entering method: getMoviesList' printed in the console.\n\n#Tests\n    Apache OpenEJB 4.0.0-beta-2    build: 20111103-01:00\n    http://tomee.apache.org/\n    INFO - openejb.home = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    INFO - openejb.base = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true' \n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes\n    INFO - Beginning load: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes\n    INFO - Configuring enterprise application: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean cdi-simple-interceptors.Comp: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean BookShow: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Enterprise application \"/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\" loaded.\n    INFO - Assembling app: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    INFO - Jndi(name=\"java:global/cdi-simple-interceptors/BookShow!org.superbiz.cdi.bookshow.beans.BookShow\")\n    INFO - Jndi(name=\"java:global/cdi-simple-interceptors/BookShow\")\n    INFO - Created Ejb(deployment-id=BookShow, ejb-name=BookShow, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=BookShow, ejb-name=BookShow, container=Default Stateful Container)\n    INFO - Deployed Application(path=/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors)\n    Entering method: getMoviesList\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-cdi-interceptor"
+      },
+      {
+        "name":"cdi-events",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-events"
+      },
+      {
+        "name":"cdi-realm",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-realm"
+      },
+      {
+        "name":"rest-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-cdi"
+      },
+      {
+        "name":"cdi-session-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-session-scope"
+      }
+    ],
+    "ciphered":[
+      {
+        "name":"datasource-ciphered-password",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/datasource-ciphered-password"
+      }
+    ],
+    "client":[
+      {
+        "name":"client-resource-lookup-preview",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/client-resource-lookup-preview"
+      }
+    ],
+    "cmp2":[
+      {
+        "name":"simple-cmp2",
+        "readme":"Title: EJB 2.1 CMP EntityBeans (CMP2)\n\n\n\nOpenEJB, the EJB Container for TomEE and Geronimo,  does support all of EJB 1.1 to 3.1, including CMP2.\n\nThe CMP2 implementation is actually done by adapting the CMP2 bean into a JPA Entity dynamically at deploy time.\n\nAppropriate subclasses, a JPA persistence.xml file and a mapping.xml file are generated at deployment\ntime for the CMP2 EntityBeans and all the Entities will be then run on OpenJPA.  This innovative code\nhas been used as the sole CMP2 implementation in Geronimo for its J2EE 1.4, JavaEE 5 and JavaEE 6 certifications.\n\nThe persistence.xml and mapping.xml files generated at deploy time can be saved to disk and included\nin the application, allowing you to:\n\n - gain finer control over persistence options\n - slowly convert individual entities from CMP2 to JPA\n\nLet's see an example.\n\n# Movies application\n\nThe following is a basic EJB 2.1 application consisting of one CMP2 Entity.  For those that are reading this example\nout of curiosity and are not familiar with CMP2 or EJB 2.x, each CMP2 Entity is composed of two parts\n\n - **A Home interface** which has data access methods like \"find\", \"create\", and \"remove\".  This is essentially\n  what people use `@Stateless` beans for today, but with difference that you do not need to supply\n  the implementation of the interface -- the container will generate one for you.  This is partly what inspired\n  the creation of the OpenEJB-specific [Dynamic DAO](../dynamic-dao-implementation/README.html) feature.\n\n - **An abstract EntityBean class** which declares the persistent \"properties\" of the entity without actually\ndeclaring any fields.  It is the container's job to implement the actual methods and create the appropriate\nfields.  OpenEJB will implement this bean as a JPA `@Entity` bean.\n\nAs such a CMP2 EntityBean is really just the description of a persistent object and the description of a \ndata-access object.  There is no actual code to write.\n\nThe majority of work in CMP2 is done in the xml:\n\n - **ejb-jar.xml** mapping information, which describes the persistent properties of the entity and the queries\n for all *Home* find, create and remove methods.  This information will be converted by OpenEJB into\n a JPA mapping.xml file.  All queries in the cmp2 part of the ejb-jar.xml are converted \n into named queries in JPA and generally everything is converted to its JPA equivalent. \n\n## CMP2 EntityBean, MovieBean\n\n    package org.superbiz.cmp2;\n    \n    import javax.ejb.EntityBean;\n    \n    public abstract class MovieBean implements EntityBean {\n    \n        public MovieBean() {\n        }\n    \n        public Integer ejbCreate(String director, String title, int year) {\n            this.setDirector(director);\n            this.setTitle(title);\n            this.setYear(year);\n            return null;\n        }\n    \n        public abstract java.lang.Integer getId();\n    \n        public abstract void setId(java.lang.Integer id);\n    \n        public abstract String getDirector();\n    \n        public abstract void setDirector(String director);\n    \n        public abstract String getTitle();\n    \n        public abstract void setTitle(String title);\n    \n        public abstract int getYear();\n    \n        public abstract void setYear(int year);\n    \n    }\n\n## CMP2 Home interface, Movies\n\n    package org.superbiz.cmp2;\n    \n    import javax.ejb.CreateException;\n    import javax.ejb.FinderException;\n    import java.util.Collection;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    interface Movies extends javax.ejb.EJBLocalHome {\n        Movie create(String director, String title, int year) throws CreateException;\n    \n        Movie findByPrimaryKey(Integer primarykey) throws FinderException;\n    \n        Collection<Movie> findAll() throws FinderException;\n    \n        Collection<Movie> findByDirector(String director) throws FinderException;\n    }\n\n## CMP2 mapping in ejb-jar.xml\n\n    <ejb-jar>\n      <enterprise-beans>\n        <entity>\n          <ejb-name>MovieBean</ejb-name>\n          <local-home>org.superbiz.cmp2.Movies</local-home>\n          <local>org.superbiz.cmp2.Movie</local>\n          <ejb-class>org.superbiz.cmp2.MovieBean</ejb-class>\n          <persistence-type>Container</persistence-type>\n          <prim-key-class>java.lang.Integer</prim-key-class>\n          <reentrant>false</reentrant>\n          <cmp-version>2.x</cmp-version>\n          <abstract-schema-name>MovieBean</abstract-schema-name>\n          <cmp-field>\n            <field-name>id</field-name>\n          </cmp-field>\n          <cmp-field>\n            <field-name>director</field-name>\n          </cmp-field>\n          <cmp-field>\n            <field-name>year</field-name>\n          </cmp-field>\n          <cmp-field>\n            <field-name>title</field-name>\n          </cmp-field>\n          <primkey-field>id</primkey-field>\n          <query>\n            <query-method>\n              <method-name>findByDirector</method-name>\n              <method-params>\n                <method-param>java.lang.String</method-param>\n              </method-params>\n            </query-method>\n            <ejb-ql>SELECT m FROM MovieBean m WHERE m.director = ?1</ejb-ql>\n          </query>\n          <query>\n            <query-method>\n              <method-name>findAll</method-name>\n              <method-params/>\n            </query-method>\n            <ejb-ql>SELECT m FROM MovieBean as m</ejb-ql>\n          </query>\n        </entity>\n      </enterprise-beans>\n    </ejb-jar>\n    \n\n## openejb-jar.xml\n\n    <openejb-jar xmlns=\"http://www.openejb.org/xml/ns/openejb-jar-2.1\">\n      <enterprise-beans>\n        <entity>\n          <ejb-name>MovieBean</ejb-name>\n          <key-generator xmlns=\"http://www.openejb.org/xml/ns/pkgen-2.1\">\n            <uuid/>\n          </key-generator>\n        </entity>\n      </enterprise-beans>\n    </openejb-jar>\n    \n\n## MoviesTest\n\n    package org.superbiz.cmp2;\n    \n    import junit.framework.TestCase;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import java.util.Collection;\n    import java.util.Properties;\n    \n    /**\n     * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $\n     */\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n            Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            p.put(\"movieDatabaseUnmanaged\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabaseUnmanaged.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabaseUnmanaged.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n            p.put(\"movieDatabaseUnmanaged.JtaManaged\", \"false\");\n    \n            Context context = new InitialContext(p);\n    \n            Movies movies = (Movies) context.lookup(\"MovieBeanLocalHome\");\n    \n            movies.create(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992);\n            movies.create(\"Joel Coen\", \"Fargo\", 1996);\n            movies.create(\"Joel Coen\", \"The Big Lebowski\", 1998);\n    \n            Collection<Movie> list = movies.findAll();\n            assertEquals(\"Collection.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.remove(movie.getPrimaryKey());\n            }\n    \n            assertEquals(\"Movies.findAll()\", 0, movies.findAll().size());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.cmp2.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/simple-cmp2/target\n    INFO - openejb.base = /Users/dblevins/examples/simple-cmp2/target\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-cmp2/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/simple-cmp2/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/simple-cmp2/target/classpath.ear\n    INFO - Configuring Service(id=Default CMP Container, type=Container, provider-id=Default CMP Container)\n    INFO - Auto-creating a container for bean MovieBean: Container(type=CMP_ENTITY, id=Default CMP Container)\n    INFO - Configuring PersistenceUnit(name=cmp)\n    INFO - Adjusting PersistenceUnit cmp <jta-data-source> to Resource ID 'movieDatabase' from 'null'\n    INFO - Adjusting PersistenceUnit cmp <non-jta-data-source> to Resource ID 'movieDatabaseUnmanaged' from 'null'\n    INFO - Enterprise application \"/Users/dblevins/examples/simple-cmp2/target/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/simple-cmp2/target/classpath.ear\n    INFO - PersistenceUnit(name=cmp, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 160ms\n    INFO - Jndi(name=MovieBeanLocalHome) --> Ejb(deployment-id=MovieBean)\n    INFO - Jndi(name=global/classpath.ear/simple-cmp2/MovieBean!org.superbiz.cmp2.Movies) --> Ejb(deployment-id=MovieBean)\n    INFO - Jndi(name=global/classpath.ear/simple-cmp2/MovieBean) --> Ejb(deployment-id=MovieBean)\n    INFO - Created Ejb(deployment-id=MovieBean, ejb-name=MovieBean, container=Default CMP Container)\n    INFO - Started Ejb(deployment-id=MovieBean, ejb-name=MovieBean, container=Default CMP Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/simple-cmp2/target/classpath.ear)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.919 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n# CMP2 to JPA\n\nAs mentioned OpenEJB will implement the abstract CMP2 `EntityBean` as a JPA `@Entity`, create a `persistence.xml` file and convert all `ejb-jar.xml` mapping and queries to\na JPA `entity-mappings.xml` file.\n\nBoth of these files will be written to disk by setting the system property `openejb.descriptors.output` to `true`.  In the testcase\nabove, this can be done via the `InitialContext` parameters via code like this:\n\n    Properties p = new Properties();\n    p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n\n    // setup the data sources as usual...\n\n    // write the generated descriptors\n    p.put(\"openejb.descriptors.output\", \"true\");\n\n    Context context = new InitialContext(p);\n\nBelow are the generated `persistence.xml` and `mapping.xml` files for our CMP2 `EntityBean`\n\n## CMP2 to JPA generated persistence.xml file\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n        <persistence-unit name=\"cmp\" transaction-type=\"JTA\">\n            <jta-data-source>movieDatabase</jta-data-source>\n            <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n            <mapping-file>META-INF/openejb-cmp-generated-orm.xml</mapping-file>\n            <class>openejb.org.superbiz.cmp2.MovieBean</class>\n            <properties>\n                <property name=\"openjpa.jdbc.SynchronizeMappings\"\n                value=\"buildSchema(ForeignKeys=true, Indexes=false, IgnoreErrors=true)\"/>\n                <property name=\"openjpa.Log\" value=\"DefaultLevel=INFO\"/>\n            </properties>\n        </persistence-unit>\n    </persistence>\n\nAll of this `persitence.xml` can be changed, however the `persistence-unit` must have the `name` fixed to `cmp`.\n\n## CMP2 to JPA generated mapping file\n\nNote that the `persistence.xml` above refers to this mappings file as `META-INF/openejb-cmp-generated-orm.xml`.  It is possible\nto rename this file to whatever name you prefer, just make sure to update the `<mapping-file>` element of the `cmp` persistence unit\naccordingly.\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n    <entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\" version=\"1.0\">\n        <entity class=\"openejb.org.superbiz.cmp2.MovieBean\" name=\"MovieBean\">\n            <description>simple-cmp2#MovieBean</description>\n            <table/>\n            <named-query name=\"MovieBean.findByDirector(java.lang.String)\">\n                <query>SELECT m FROM MovieBean m WHERE m.director = ?1</query>\n            </named-query>\n            <named-query name=\"MovieBean.findAll\">\n                <query>SELECT m FROM MovieBean as m</query>\n            </named-query>\n            <attributes>\n                <id name=\"id\">\n                    <generated-value strategy=\"IDENTITY\"/>\n                </id>\n                <basic name=\"director\"/>\n                <basic name=\"year\"/>\n                <basic name=\"title\"/>\n            </attributes>\n        </entity>\n    </entity-mappings>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-cmp2"
+      }
+    ],
+    "codi":[
+      {
+        "name":"myfaces-codi-demo",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/myfaces-codi-demo"
+      }
+    ],
+    "component":[
+      {
+        "name":"component-interfaces",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/component-interfaces"
+      }
+    ],
+    "config":[
+      {
+        "name":"deltaspike-configproperty",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-configproperty"
+      },
+      {
+        "name":"webservice-ws-with-resources-config",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-ws-with-resources-config"
+      }
+    ],
+    "connectionfactory":[
+      {
+        "name":"injection-of-connectionfactory",
+        "readme":"Title: Injection Of Connectionfactory\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Messages\n\n    package org.superbiz.injection.jms;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.Stateless;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    @Stateless\n    public class Messages {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource\n        private Queue chatQueue;\n    \n    \n        public void sendMessage(String text) throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n    \n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageProducer from the Session to the Topic or Queue\n                MessageProducer producer = session.createProducer(chatQueue);\n                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                // Create a message\n                TextMessage message = session.createTextMessage(text);\n    \n                // Tell the producer to send the message\n                producer.send(message);\n            } finally {\n                // Clean up\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    \n        public String receiveMessage() throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n            MessageConsumer consumer = null;\n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageConsumer from the Session to the Topic or Queue\n                consumer = session.createConsumer(chatQueue);\n    \n                // Wait for a message\n                TextMessage message = (TextMessage) consumer.receive(1000);\n    \n                return message.getText();\n            } finally {\n                if (consumer != null) consumer.close();\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    }\n\n## MessagingBeanTest\n\n    package org.superbiz.injection.jms;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    public class MessagingBeanTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            Messages messages = (Messages) context.lookup(\"java:global/injection-of-connectionfactory/Messages\");\n    \n            messages.sendMessage(\"Hello World!\");\n            messages.sendMessage(\"How are you?\");\n            messages.sendMessage(\"Still spinning?\");\n    \n            assertEquals(messages.receiveMessage(), \"Hello World!\");\n            assertEquals(messages.receiveMessage(), \"How are you?\");\n            assertEquals(messages.receiveMessage(), \"Still spinning?\");\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.jms.MessagingBeanTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-connectionfactory/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-connectionfactory/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-connectionfactory\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Messages: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)\n    INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'Messages'.\n    INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.injection.jms.Messages/connectionFactory' in bean Messages to Resource(id=Default JMS Connection Factory)\n    INFO - Configuring Service(id=org.superbiz.injection.jms.Messages/chatQueue, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'org.superbiz.injection.jms.Messages/chatQueue' of type 'javax.jms.Queue for 'Messages'.\n    INFO - Auto-linking resource-env-ref 'java:comp/env/org.superbiz.injection.jms.Messages/chatQueue' in bean Messages to Resource(id=org.superbiz.injection.jms.Messages/chatQueue)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.jms.MessagingBeanTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-connectionfactory\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - Jndi(name=\"java:global/injection-of-connectionfactory/Messages!org.superbiz.injection.jms.Messages\")\n    INFO - Jndi(name=\"java:global/injection-of-connectionfactory/Messages\")\n    INFO - Jndi(name=\"java:global/EjbModule1634151355/org.superbiz.injection.jms.MessagingBeanTest!org.superbiz.injection.jms.MessagingBeanTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1634151355/org.superbiz.injection.jms.MessagingBeanTest\")\n    INFO - Created Ejb(deployment-id=Messages, ejb-name=Messages, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.jms.MessagingBeanTest, ejb-name=org.superbiz.injection.jms.MessagingBeanTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Messages, ejb-name=Messages, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.jms.MessagingBeanTest, ejb-name=org.superbiz.injection.jms.MessagingBeanTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-connectionfactory)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.562 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-connectionfactory"
+      }
+    ],
+    "contract":[
+      {
+        "name":"bean-validation-design-by-contract",
+        "readme":"# Bean Validation - Design By Contract\n\nBean Validation (aka JSR 303) contains an optional appendix dealing with method validation.\n\nSome implementions of this JSR implement this appendix (Apache bval, Hibernate validator for example).\n\nOpenEJB provides an interceptor which allows you to use this feature to do design by contract.\n\n# Design by contract\n\nThe goal is to be able to configure with a finer grain your contract. In the example you specify\nthe minimum centimeters a sport man should jump at pole vaulting:\n\n    @Local\n    public interface PoleVaultingManager {\n        int points(@Min(120) int centimeters);\n    }\n\n# Usage\n\nTomEE and OpenEJB do not provide anymore `BeanValidationAppendixInterceptor` since\nBean Validation 1.1 does it (with a slighly different usage but the exact same feature).\n\nSo basically you don't need to configure anything to use it.\n# Errors\n\nIf a parameter is not validated an exception is thrown, it is an EJBException wrapping a ConstraintViolationException:\n\n    try {\n        gamesManager.addSportMan(\"I lose\", \"EN\");\n        fail(\"no space should be in names\");\n    } catch (EJBException wrappingException) {\n        assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n        ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n        assertEquals(1, exception.getConstraintViolations().size());\n    }\n\n# Example\n\n## OlympicGamesManager\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Stateless;\n    import javax.validation.constraints.NotNull;\n    import javax.validation.constraints.Pattern;\n    import javax.validation.constraints.Size;\n\n    @Stateless\n    public class OlympicGamesManager {\n        public String addSportMan(@Pattern(regexp = \"^[A-Za-z]+$\") String name, @Size(min = 2, max = 4) String country) {\n            if (country.equals(\"USA\")) {\n                return null;\n            }\n            return new StringBuilder(name).append(\" [\").append(country).append(\"]\").toString();\n        }\n    }\n\n## PoleVaultingManager\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Local;\n    import javax.validation.constraints.Min;\n\n    @Local\n    public interface PoleVaultingManager {\n        int points(@Min(120) int centimeters);\n    }\n\n## PoleVaultingManagerBean\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Stateless;\n\n    @Stateless\n    public class PoleVaultingManagerBean implements PoleVaultingManager {\n        @Override\n        public int points(int centimeters) {\n            return centimeters - 120;\n        }\n    }\n\n## OlympicGamesTest\n\n    public class OlympicGamesTest {\n        private static Context context;\n\n        @EJB\n        private OlympicGamesManager gamesManager;\n\n        @EJB\n        private PoleVaultingManager poleVaultingManager;\n\n        @BeforeClass\n        public static void start() {\n            Properties properties = new Properties();\n            properties.setProperty(BeanContext.USER_INTERCEPTOR_KEY, BeanValidationAppendixInterceptor.class.getName());\n            context = EJBContainer.createEJBContainer(properties).getContext();\n        }\n\n        @Before\n        public void inject() throws Exception {\n            context.bind(\"inject\", this);\n        }\n\n        @AfterClass\n        public static void stop() throws Exception {\n            if (context != null) {\n                context.close();\n            }\n        }\n\n        @Test\n        public void sportMenOk() throws Exception {\n            assertEquals(\"IWin [FR]\", gamesManager.addSportMan(\"IWin\", \"FR\"));\n        }\n\n        @Test\n        public void sportMenKoBecauseOfName() throws Exception {\n            try {\n                gamesManager.addSportMan(\"I lose\", \"EN\");\n                fail(\"no space should be in names\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n\n        @Test\n        public void sportMenKoBecauseOfCountry() throws Exception {\n            try {\n                gamesManager.addSportMan(\"ILoseTwo\", \"TOO-LONG\");\n                fail(\"country should be between 2 and 4 characters\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n\n        @Test\n        public void polVaulting() throws Exception {\n            assertEquals(100, poleVaultingManager.points(220));\n        }\n\n        @Test\n        public void tooShortPolVaulting() throws Exception {\n            try {\n                poleVaultingManager.points(119);\n                fail(\"the jump is too short\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n    }\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running OlympicGamesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - openejb.base = /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/bean-validation-design-by-contract/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/bean-validation-design-by-contract/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean PoleVaultingManagerBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean OlympicGamesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/bean-validation-design-by-contract\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/PoleVaultingManagerBean!org.superbiz.designbycontract.PoleVaultingManager\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/PoleVaultingManagerBean\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/OlympicGamesManager!org.superbiz.designbycontract.OlympicGamesManager\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/OlympicGamesManager\")\n    INFO - Jndi(name=\"java:global/EjbModule236054577/OlympicGamesTest!OlympicGamesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule236054577/OlympicGamesTest\")\n    INFO - Created Ejb(deployment-id=OlympicGamesManager, ejb-name=OlympicGamesManager, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=PoleVaultingManagerBean, ejb-name=PoleVaultingManagerBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=OlympicGamesTest, ejb-name=OlympicGamesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=OlympicGamesManager, ejb-name=OlympicGamesManager, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=PoleVaultingManagerBean, ejb-name=PoleVaultingManagerBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=OlympicGamesTest, ejb-name=OlympicGamesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/bean-validation-design-by-contract)\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.245 sec\n\n    Results :\n\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/bean-validation-design-by-contract"
+      }
+    ],
+    "cucumber":[
+      {
+        "name":"cucumber-jvm",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cucumber-jvm"
+      }
+    ],
+    "dao":[
+      {
+        "name":"dynamic-dao-implementation",
+        "readme":"Title: Dynamic DAO Implementation\n\nMany aspects of Data Access Objects (DAOs) are very repetitive and boiler plate.  As a fun and experimental feature, TomEE supports dynamically implementing an interface\nthat is seen to have standard DAO-style methods.\n\nThe interface has to be annotated with @PersistenceContext to define which EntityManager to use.\n\nMethods should respect these conventions:\n\n  * void save(Foo foo): persist foo\n  * Foo update(Foo foo): merge foo\n  * void delete(Foo foo): remove foo, if foo is detached it tries to attach it\n  * Collection<Foo>|Foo namedQuery(String name[, Map<String, ?> params, int first, int max]): run the named query called name, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo>|Foo nativeQuery(String name[, Map<String, ?> params, int first, int max]): run the native query called name, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo>|Foo query(String value [, Map<String, ?> params, int first, int max]): run the query put as first parameter, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo> findAll([int first, int max]): find all Foo, parameters are used for pagination\n  * Collection<Foo> findByBar1AndBar2AndBar3(<bar 1 type> bar1, <bar 2 type> bar2, <bar3 type> bar3 [, int first, int max]): find all Foo with specified field values for bar1, bar2, bar3.\n\nDynamic finder can have as much as you want field constraints. For String like is used and for other type equals is used.\n\n# Example\n\n## User\n\n    package org.superbiz.dynamic;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n    import javax.persistence.NamedQueries;\n    import javax.persistence.NamedQuery;\n    \n    @Entity\n    @NamedQueries({\n            @NamedQuery(name = \"dynamic-ejb-impl-test.query\", query = \"SELECT u FROM User AS u WHERE u.name LIKE :name\"),\n            @NamedQuery(name = \"dynamic-ejb-impl-test.all\", query = \"SELECT u FROM User AS u\")\n    })\n    public class User {\n        @Id\n        @GeneratedValue\n        private long id;\n        private String name;\n        private int age;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public void setAge(int age) {\n            this.age = age;\n        }\n    }\n\n## UserDao\n\n    package org.superbiz.dynamic;\n    \n    \n    import javax.ejb.Stateless;\n    import javax.persistence.PersistenceContext;\n    import java.util.Collection;\n    import java.util.Map;\n    \n    @Stateless\n    @PersistenceContext(name = \"dynamic\")\n    public interface UserDao {\n        User findById(long id);\n    \n        Collection<User> findByName(String name);\n    \n        Collection<User> findByNameAndAge(String name, int age);\n    \n        Collection<User> findAll();\n    \n        Collection<User> findAll(int first, int max);\n    \n        Collection<User> namedQuery(String name, Map<String, ?> params, int first, int max);\n    \n        Collection<User> namedQuery(String name, int first, int max, Map<String, ?> params);\n    \n        Collection<User> namedQuery(String name, Map<String, ?> params);\n    \n        Collection<User> namedQuery(String name);\n    \n        Collection<User> query(String value, Map<String, ?> params);\n    \n        void save(User u);\n    \n        void delete(User u);\n    \n        User update(User u);\n    }\n\n## persistence.xml\n\n    <persistence version=\"2.0\"\n                 xmlns=\"http://java.sun.com/xml/ns/persistence\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"\n          http://java.sun.com/xml/ns/persistence\n          http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">\n      <persistence-unit name=\"dynamic\" transaction-type=\"JTA\">\n        <jta-data-source>jdbc/dynamicDB</jta-data-source>\n        <class>org.superbiz.dynamic.User</class>\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n    \n\n## DynamicUserDaoTest\n\n    package org.superbiz.dynamic;\n    \n    import junit.framework.Assert;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.EJBException;\n    import javax.ejb.Stateless;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.persistence.EntityManager;\n    import javax.persistence.NoResultException;\n    import javax.persistence.PersistenceContext;\n    import java.util.Collection;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.Properties;\n    \n    import static junit.framework.Assert.assertEquals;\n    import static junit.framework.Assert.assertNotNull;\n    import static junit.framework.Assert.assertTrue;\n    \n    public class DynamicUserDaoTest {\n        private static UserDao dao;\n        private static Util util;\n    \n        @BeforeClass\n        public static void init() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"jdbc/dynamicDB\", \"new://Resource?type=DataSource\");\n            p.put(\"jdbc/dynamicDB.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"jdbc/dynamicDB.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n            p.put(\"jdbc/dynamicDB.UserName\", \"sa\");\n            p.put(\"jdbc/dynamicDB.Password\", \"\");\n    \n            final Context context = EJBContainer.createEJBContainer(p).getContext();\n            dao = (UserDao) context.lookup(\"java:global/dynamic-dao-implementation/UserDao\");\n            util = (Util) context.lookup(\"java:global/dynamic-dao-implementation/Util\");\n    \n            util.init(); // init database\n        }\n    \n        @Test\n        public void simple() {\n            User user = dao.findById(1);\n            assertNotNull(user);\n            assertEquals(1, user.getId());\n        }\n    \n        @Test\n        public void findAll() {\n            Collection<User> users = dao.findAll();\n            assertEquals(10, users.size());\n        }\n    \n        @Test\n        public void pagination() {\n            Collection<User> users = dao.findAll(0, 5);\n            assertEquals(5, users.size());\n    \n            users = dao.findAll(6, 1);\n            assertEquals(1, users.size());\n            assertEquals(7, users.iterator().next().getId());\n        }\n    \n        @Test\n        public void persist() {\n            User u = new User();\n            dao.save(u);\n            assertNotNull(u.getId());\n            util.remove(u);\n        }\n    \n        @Test\n        public void remove() {\n            User u = new User();\n            dao.save(u);\n            assertNotNull(u.getId());\n            dao.delete(u);\n            try {\n                dao.findById(u.getId());\n                Assert.fail();\n            } catch (EJBException ee) {\n                assertTrue(ee.getCause() instanceof NoResultException);\n            }\n        }\n    \n        @Test\n        public void merge() {\n            User u = new User();\n            u.setAge(1);\n            dao.save(u);\n            assertEquals(1, u.getAge());\n            assertNotNull(u.getId());\n    \n            u.setAge(2);\n            dao.update(u);\n            assertEquals(2, u.getAge());\n    \n            dao.delete(u);\n        }\n    \n        @Test\n        public void oneCriteria() {\n            Collection<User> users = dao.findByName(\"foo\");\n            assertEquals(4, users.size());\n            for (User user : users) {\n                assertEquals(\"foo\", user.getName());\n            }\n        }\n    \n        @Test\n        public void twoCriteria() {\n            Collection<User> users = dao.findByNameAndAge(\"bar-1\", 1);\n            assertEquals(1, users.size());\n    \n            User user = users.iterator().next();\n            assertEquals(\"bar-1\", user.getName());\n            assertEquals(1, user.getAge());\n        }\n    \n        @Test\n        public void query() {\n            Map<String, Object> params = new HashMap<String, Object>();\n            params.put(\"name\", \"foo\");\n    \n            Collection<User> users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params, 0, 100);\n            assertEquals(4, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params);\n            assertEquals(4, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params, 0, 2);\n            assertEquals(2, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", 0, 2, params);\n            assertEquals(2, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.all\");\n            assertEquals(10, users.size());\n    \n            params.remove(\"name\");\n            params.put(\"age\", 1);\n            users = dao.query(\"SELECT u FROM User AS u WHERE u.age = :age\", params);\n            assertEquals(3, users.size());\n        }\n    \n        @Stateless\n        public static class Util {\n            @PersistenceContext\n            private EntityManager em;\n    \n            public void remove(User o) {\n                em.remove(em.find(User.class, o.getId()));\n            }\n    \n            public void init() {\n                for (int i = 0; i < 10; i++) {\n                    User u = new User();\n                    u.setAge(i % 4);\n                    if (i % 3 == 0) {\n                        u.setName(\"foo\");\n                    } else {\n                        u.setName(\"bar-\" + i);\n                    }\n                    em.persist(u);\n                }\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.dynamic.DynamicUserDaoTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - openejb.base = /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=jdbc/dynamicDB, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-dao-implementation/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-dao-implementation/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-dao-implementation/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-dao-implementation/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean UserDao: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.dynamic.DynamicUserDaoTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=dynamic)\n    INFO - Auto-creating a Resource with id 'jdbc/dynamicDBNonJta' of type 'DataSource for 'dynamic'.\n    INFO - Configuring Service(id=jdbc/dynamicDBNonJta, type=Resource, provider-id=jdbc/dynamicDB)\n    INFO - Adjusting PersistenceUnit dynamic <non-jta-data-source> to Resource ID 'jdbc/dynamicDBNonJta' from 'null'\n    INFO - Enterprise application \"/Users/dblevins/examples/dynamic-dao-implementation\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - PersistenceUnit(name=dynamic, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 417ms\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/UserDao!org.superbiz.dynamic.UserDao\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/UserDao\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/Util!org.superbiz.dynamic.DynamicUserDaoTest$Util\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/Util\")\n    INFO - Jndi(name=\"java:global/EjbModule346613126/org.superbiz.dynamic.DynamicUserDaoTest!org.superbiz.dynamic.DynamicUserDaoTest\")\n    INFO - Jndi(name=\"java:global/EjbModule346613126/org.superbiz.dynamic.DynamicUserDaoTest\")\n    INFO - Created Ejb(deployment-id=UserDao, ejb-name=UserDao, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=Util, ejb-name=Util, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.dynamic.DynamicUserDaoTest, ejb-name=org.superbiz.dynamic.DynamicUserDaoTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=UserDao, ejb-name=UserDao, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=Util, ejb-name=Util, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.dynamic.DynamicUserDaoTest, ejb-name=org.superbiz.dynamic.DynamicUserDaoTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-dao-implementation)\n    WARN - Meta class \"org.superbiz.dynamic.User_\" for entity class org.superbiz.dynamic.User can not be registered with following exception \"java.security.PrivilegedActionException: java.lang.ClassNotFoundException: org.superbiz.dynamic.User_\"\n    WARN - Query \"SELECT u FROM User AS u WHERE u.name LIKE :name\" is removed from cache  excluded permanently. Query \"SELECT u FROM User AS u WHERE u.name LIKE :name\" is not cached because it uses pagination..\n    Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.471 sec\n    \n    Results :\n    \n    Tests run: 9, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-dao-implementation"
+      }
+    ],
+    "data":[
+      {
+        "name":"spring-data-proxy",
+        "readme":"# Spring Data sample #\n\nThis example uses OpenEJB hooks to replace an EJB implementation by a proxy\nto uses Spring Data in your preferred container.\n\nIt is pretty simple: simply provide to OpenEJB an InvocationHandler using delegating to spring data\nand that's it!\n\nIt is what is done in org.superbiz.dynamic.SpringDataProxy.\n\nIt contains a little trick: even if it is not annotated \"implementingInterfaceClass\" attribute\nis injected by OpenEJB to get the interface.\n\nThen we simply create the Spring Data repository and delegate to it.\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/spring-data-proxy"
+      },
+      {
+        "name":"spring-data-proxy-meta",
+        "readme":"# Spring Data With Meta sample #\n\nThis example simply simplifies the usage of spring-data sample\nproviding a meta annotation @SpringRepository to do all the dynamic procy EJB job.\n\nIt replaces @Proxy and @Stateless annotations.\n\nIsn't it more comfortable?\n\nTo do it we defined a meta annotation \"Metatype\" and used it.\n\nThe proxy implementation is the same than for spring-data sample.\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/spring-data-proxy-meta"
+      }
+    ],
+    "datasource":[
+      {
+        "name":"dynamic-datasource-routing",
+        "readme":"Title: Dynamic Datasource Routing\n\nThe TomEE dynamic datasource api aims to allow to use multiple data sources as one from an application point of view.\n\nIt can be useful for technical reasons (load balancing for example) or more generally\nfunctionnal reasons (filtering, aggregation, enriching...). However please note you can choose\nonly one datasource by transaction. It means the goal of this feature is not to switch more than\nonce of datasource in a transaction. The following code will not work:\n\n    @Stateless\n    public class MyEJB {\n        @Resource private MyRouter router;\n        @PersistenceContext private EntityManager em;\n\n        public void workWithDataSources() {\n            router.setDataSource(\"ds1\");\n            em.persist(new MyEntity());\n\n            router.setDataSource(\"ds2\"); // same transaction -> this invocation doesn't work\n            em.persist(new MyEntity());\n        }\n    }\n\nIn this example the implementation simply use a datasource from its name and needs to be set before using any JPA\noperation in the transaction (to keep the logic simple in the example).\n\n# The implementation of the Router\n\nOur router has two configuration parameters:\n* a list of jndi names representing datasources to use\n* a default datasource to use\n\n## Router implementation\n\nThe interface Router (`org.apache.openejb.resource.jdbc.Router`) has only one method to implement, `public DataSource getDataSource()`\n\nOur `DeterminedRouter` implementation uses a ThreadLocal to manage the currently used datasource. Keep in mind JPA used more than once the getDatasource() method\nfor one operation. To change the datasource in one transaction is dangerous and should be avoid.\n\n    package org.superbiz.dynamicdatasourcerouting;\n\n    import org.apache.openejb.resource.jdbc.AbstractRouter;\n\n    import javax.naming.NamingException;\n    import javax.sql.DataSource;\n    import java.util.Map;\n    import java.util.concurrent.ConcurrentHashMap;\n\n    public class DeterminedRouter extends AbstractRouter {\n        private String dataSourceNames;\n        private String defaultDataSourceName;\n        private Map<String, DataSource> dataSources = null;\n        private ThreadLocal<DataSource> currentDataSource = new ThreadLocal<DataSource>();\n\n        /**\n         * @param datasourceList datasource resource name, separator is a space\n         */\n        public void setDataSourceNames(String datasourceList) {\n            dataSourceNames = datasourceList;\n        }\n\n        /**\n         * lookup datasource in openejb resources\n         */\n        private void init() {\n            dataSources = new ConcurrentHashMap<String, DataSource>();\n            for (String ds : dataSourceNames.split(\" \")) {\n                try {\n                    Object o = getOpenEJBResource(ds);\n                    if (o instanceof DataSource) {\n                        dataSources.put(ds, DataSource.class.cast(o));\n                    }\n                } catch (NamingException e) {\n                    // ignored\n                }\n            }\n        }\n\n        /**\n         * @return the user selected data source if it is set\n         *         or the default one\n         *  @throws IllegalArgumentException if the data source is not found\n         */\n        @Override\n        public DataSource getDataSource() {\n            // lazy init of routed datasources\n            if (dataSources == null) {\n                init();\n            }\n\n            // if no datasource is selected use the default one\n            if (currentDataSource.get() == null) {\n                if (dataSources.containsKey(defaultDataSourceName)) {\n                    return dataSources.get(defaultDataSourceName);\n\n                } else {\n                    throw new IllegalArgumentException(\"you have to specify at least one datasource\");\n                }\n            }\n\n            // the developper set the datasource to use\n            return currentDataSource.get();\n        }\n\n        /**\n         *\n         * @param datasourceName data source name\n         */\n        public void setDataSource(String datasourceName) {\n            if (dataSources == null) {\n                init();\n            }\n            if (!dataSources.containsKey(datasourceName)) {\n                throw new IllegalArgumentException(\"data source called \" + datasourceName + \" can't be found.\");\n            }\n            DataSource ds = dataSources.get(datasourceName);\n            currentDataSource.set(ds);\n        }\n\n        /**\n         * reset the data source\n         */\n        public void clear() {\n            currentDataSource.remove();\n        }\n\n        public void setDefaultDataSourceName(String name) {\n            this.defaultDataSourceName = name;\n        }\n    }\n\n## Declaring the implementation\n\nTo be able to use your router as a resource you need to provide a service configuration. It is done in a file\nyou can find in META-INF/org.router/ and called service-jar.xml\n(for your implementation you can of course change the package name).\n\nIt contains the following code:\n\n    <ServiceJar>\n      <ServiceProvider id=\"DeterminedRouter\" <!-- the name you want to use -->\n          service=\"Resource\"\n          type=\"org.apache.openejb.resource.jdbc.Router\"\n          class-name=\"org.superbiz.dynamicdatasourcerouting.DeterminedRouter\"> <!-- implementation class -->\n\n        # the parameters\n\n        DataSourceNames\n        DefaultDataSourceName\n      </ServiceProvider>\n    </ServiceJar>\n\n\n# Using the Router\n\nHere we have a `RoutedPersister` stateless bean which uses our `DeterminedRouter`\n\n    package org.superbiz.dynamicdatasourcerouting;\n\n    import javax.annotation.Resource;\n    import javax.ejb.Stateless;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n\n    @Stateless\n    public class RoutedPersister {\n        @PersistenceContext(unitName = \"router\")\n        private EntityManager em;\n\n        @Resource(name = \"My Router\", type = DeterminedRouter.class)\n        private DeterminedRouter router;\n\n        public void persist(int id, String name, String ds) {\n            router.setDataSource(ds);\n            em.persist(new Person(id, name));\n        }\n    }\n\n# The test\n\nIn test mode and using property style configuration the foolowing configuration is used:\n\n    public class DynamicDataSourceTest {\n        @Test\n        public void route() throws Exception {\n            String[] databases = new String[]{\"database1\", \"database2\", \"database3\"};\n\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());\n\n            // resources\n            // datasources\n            for (int i = 1; i <= databases.length; i++) {\n                String dbName = databases[i - 1];\n                properties.setProperty(dbName, \"new://Resource?type=DataSource\");\n                dbName += \".\";\n                properties.setProperty(dbName + \"JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n                properties.setProperty(dbName + \"JdbcUrl\", \"jdbc:hsqldb:mem:db\" + i);\n                properties.setProperty(dbName + \"UserName\", \"sa\");\n                properties.setProperty(dbName + \"Password\", \"\");\n                properties.setProperty(dbName + \"JtaManaged\", \"true\");\n            }\n\n            // router\n            properties.setProperty(\"My Router\", \"new://Resource?provider=org.router:DeterminedRouter&type=\" + DeterminedRouter.class.getName());\n            properties.setProperty(\"My Router.DatasourceNames\", \"database1 database2 database3\");\n            properties.setProperty(\"My Router.DefaultDataSourceName\", \"database1\");\n\n            // routed datasource\n            properties.setProperty(\"Routed Datasource\", \"new://Resource?provider=RoutedDataSource&type=\" + Router.class.getName());\n            properties.setProperty(\"Routed Datasource.Router\", \"My Router\");\n\n            Context ctx = EJBContainer.createEJBContainer(properties).getContext();\n            RoutedPersister ejb = (RoutedPersister) ctx.lookup(\"java:global/dynamic-datasource-routing/RoutedPersister\");\n            for (int i = 0; i < 18; i++) {\n                // persisting a person on database db -> kind of manual round robin\n                String name = \"record \" + i;\n                String db = databases[i % 3];\n                ejb.persist(i, name, db);\n            }\n\n            // assert database records number using jdbc\n            for (int i = 1; i <= databases.length; i++) {\n                Connection connection = DriverManager.getConnection(\"jdbc:hsqldb:mem:db\" + i, \"sa\", \"\");\n                Statement st = connection.createStatement();\n                ResultSet rs = st.executeQuery(\"select count(*) from PERSON\");\n                rs.next();\n                assertEquals(6, rs.getInt(1));\n                st.close();\n                connection.close();\n            }\n\n            ctx.close();\n        }\n    }\n\n# Configuration via openejb.xml\n\nThe testcase above uses properties for configuration.  The identical way to do it via the `conf/openejb.xml` is as follows:\n\n    <!-- Router and datasource -->\n    <Resource id=\"My Router\" type=\"org.apache.openejb.router.test.DynamicDataSourceTest$DeterminedRouter\" provider=\"org.routertest:DeterminedRouter\">\n        DatasourceNames = database1 database2 database3\n        DefaultDataSourceName = database1\n    </Resource>\n    <Resource id=\"Routed Datasource\" type=\"org.apache.openejb.resource.jdbc.Router\" provider=\"RoutedDataSource\">\n        Router = My Router\n    </Resource>\n\n    <!-- real datasources -->\n    <Resource id=\"database1\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db1\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n    <Resource id=\"database2\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db2\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n    <Resource id=\"database3\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db3\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n\n\n\n\n## Some hack for OpenJPA\n\nUsing more than one datasource behind one EntityManager means the databases are already created. If it is not the case,\nthe JPA provider has to create the datasource at boot time.\n\nHibernate do it so if you declare your databases it will work. However with OpenJPA\n(the default JPA provider for OpenEJB), the creation is lazy and it happens only once so when you'll switch of database\nit will no more work.\n\nOf course OpenEJB provides @Singleton and @Startup features of Java EE 6 and we can do a bean just making a simple find,\neven on none existing entities, just to force the database creation:\n\n    @Startup\n    @Singleton\n    public class BoostrapUtility {\n        // inject all real databases\n\n        @PersistenceContext(unitName = \"db1\")\n        private EntityManager em1;\n\n        @PersistenceContext(unitName = \"db2\")\n        private EntityManager em2;\n\n        @PersistenceContext(unitName = \"db3\")\n        private EntityManager em3;\n\n        // force database creation\n\n        @PostConstruct\n        @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n        public void initDatabase() {\n            em1.find(Person.class, 0);\n            em2.find(Person.class, 0);\n            em3.find(Person.class, 0);\n        }\n    }\n\n## Using the routed datasource\n\nNow you configured the way you want to route your JPA operation, you registered the resources and you initialized\nyour databases you can use it and see how it is simple:\n\n    @Stateless\n    public class RoutedPersister {\n        // injection of the \"proxied\" datasource\n        @PersistenceContext(unitName = \"router\")\n        private EntityManager em;\n\n        // injection of the router you need it to configured the database\n        @Resource(name = \"My Router\", type = DeterminedRouter.class)\n        private DeterminedRouter router;\n\n        public void persist(int id, String name, String ds) {\n            router.setDataSource(ds); // configuring the database for the current transaction\n            em.persist(new Person(id, name)); // will use ds database automatically\n        }\n    }\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - openejb.base = /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=My Router, type=Resource, provider-id=DeterminedRouter)\n    INFO - Configuring Service(id=database3, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=database2, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=Routed Datasource, type=Resource, provider-id=RoutedDataSource)\n    INFO - Configuring Service(id=database1, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-datasource-routing/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-datasource-routing/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-datasource-routing\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean BoostrapUtility: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean RoutedPersister: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/My Router' in bean RoutedPersister to Resource(id=My Router)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=router)\n    INFO - Configuring PersistenceUnit(name=db1)\n    INFO - Auto-creating a Resource with id 'database1NonJta' of type 'DataSource for 'db1'.\n    INFO - Configuring Service(id=database1NonJta, type=Resource, provider-id=database1)\n    INFO - Adjusting PersistenceUnit db1 <non-jta-data-source> to Resource ID 'database1NonJta' from 'null'\n    INFO - Configuring PersistenceUnit(name=db2)\n    INFO - Auto-creating a Resource with id 'database2NonJta' of type 'DataSource for 'db2'.\n    INFO - Configuring Service(id=database2NonJta, type=Resource, provider-id=database2)\n    INFO - Adjusting PersistenceUnit db2 <non-jta-data-source> to Resource ID 'database2NonJta' from 'null'\n    INFO - Configuring PersistenceUnit(name=db3)\n    INFO - Auto-creating a Resource with id 'database3NonJta' of type 'DataSource for 'db3'.\n    INFO - Configuring Service(id=database3NonJta, type=Resource, provider-id=database3)\n    INFO - Adjusting PersistenceUnit db3 <non-jta-data-source> to Resource ID 'database3NonJta' from 'null'\n    INFO - Enterprise application \"/Users/dblevins/examples/dynamic-datasource-routing\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - PersistenceUnit(name=router, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 504ms\n    INFO - PersistenceUnit(name=db1, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 11ms\n    INFO - PersistenceUnit(name=db2, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 7ms\n    INFO - PersistenceUnit(name=db3, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 6ms\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/BoostrapUtility!org.superbiz.dynamicdatasourcerouting.BoostrapUtility\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/BoostrapUtility\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/RoutedPersister!org.superbiz.dynamicdatasourcerouting.RoutedPersister\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/RoutedPersister\")\n    INFO - Jndi(name=\"java:global/EjbModule1519652738/org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest!org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1519652738/org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\")\n    INFO - Created Ejb(deployment-id=RoutedPersister, ejb-name=RoutedPersister, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, ejb-name=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=BoostrapUtility, ejb-name=BoostrapUtility, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=RoutedPersister, ejb-name=RoutedPersister, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, ejb-name=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=BoostrapUtility, ejb-name=BoostrapUtility, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-datasource-routing)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.504 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-datasource-routing"
+      },
+      {
+        "name":"injection-of-datasource",
+        "readme":"Title: Injection Of Datasource\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection;\n    \n    /**\n     * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $\n     */\n    public class Movie {\n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection;\n    \n    import javax.annotation.PostConstruct;\n    import javax.annotation.Resource;\n    import javax.ejb.Stateful;\n    import javax.sql.DataSource;\n    import java.sql.Connection;\n    import java.sql.PreparedStatement;\n    import java.sql.ResultSet;\n    import java.util.ArrayList;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        /**\n         * The field name \"movieDatabase\" matches the DataSource we\n         * configure in the TestCase via :\n         * p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n         * <p/>\n         * This would also match an equivalent delcaration in an openejb.xml:\n         * <Resource id=\"movieDatabase\" type=\"DataSource\"/>\n         * <p/>\n         * If you'd like the freedom to change the field name without\n         * impact on your configuration you can set the \"name\" attribute\n         * of the @Resource annotation to \"movieDatabase\" instead.\n         */\n        @Resource\n        private DataSource movieDatabase;\n    \n        @PostConstruct\n        private void construct() throws Exception {\n            Connection connection = movieDatabase.getConnection();\n            try {\n                PreparedStatement stmt = connection.prepareStatement(\"CREATE TABLE movie ( director VARCHAR(255), title VARCHAR(255), year integer)\");\n                stmt.execute();\n            } finally {\n                connection.close();\n            }\n        }\n    \n        public void addMovie(Movie movie) throws Exception {\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"INSERT into movie (director, title, year) values (?, ?, ?)\");\n                sql.setString(1, movie.getDirector());\n                sql.setString(2, movie.getTitle());\n                sql.setInt(3, movie.getYear());\n                sql.execute();\n            } finally {\n                conn.close();\n            }\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"DELETE from movie where director = ? AND title = ? AND year = ?\");\n                sql.setString(1, movie.getDirector());\n                sql.setString(2, movie.getTitle());\n                sql.setInt(3, movie.getYear());\n                sql.execute();\n            } finally {\n                conn.close();\n            }\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            ArrayList<Movie> movies = new ArrayList<Movie>();\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"SELECT director, title, year from movie\");\n                ResultSet set = sql.executeQuery();\n                while (set.next()) {\n                    Movie movie = new Movie();\n                    movie.setDirector(set.getString(\"director\"));\n                    movie.setTitle(set.getString(\"title\"));\n                    movie.setYear(set.getInt(\"year\"));\n                    movies.add(movie);\n                }\n            } finally {\n                conn.close();\n            }\n            return movies;\n        }\n    }\n\n## MoviesTest\n\n    package org.superbiz.injection;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            Context context = EJBContainer.createEJBContainer(p).getContext();\n    \n            Movies movies = (Movies) context.lookup(\"java:global/injection-of-datasource/Movies\");\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-datasource\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-datasource\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-datasource/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-datasource/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-datasource\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.injection.Movies/movieDatabase' in bean Movies to Resource(id=movieDatabase)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-datasource\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-datasource\n    INFO - Jndi(name=\"java:global/injection-of-datasource/Movies!org.superbiz.injection.Movies\")\n    INFO - Jndi(name=\"java:global/injection-of-datasource/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1508028338/org.superbiz.injection.MoviesTest!org.superbiz.injection.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1508028338/org.superbiz.injection.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.MoviesTest, ejb-name=org.superbiz.injection.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.MoviesTest, ejb-name=org.superbiz.injection.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-datasource)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.276 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-datasource"
+      },
+      {
+        "name":"datasource-definition",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/datasource-definition"
+      },
+      {
+        "name":"datasource-versioning",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/datasource-versioning"
+      },
+      {
+        "name":"datasource-ciphered-password",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/datasource-ciphered-password"
+      }
+    ],
+    "decorators":[
+      {
+        "name":"decorators",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/decorators"
+      }
+    ],
+    "definition":[
+      {
+        "name":"datasource-definition",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/datasource-definition"
+      }
+    ],
+    "deltaspike":[
+      {
+        "name":"deltaspike-fullstack",
+        "readme":"Title: Apache DeltaSpike Demo\nNotice:    Licensed to the Apache Software Foundation (ASF) under one\n           or more contributor license agreements.  See the NOTICE file\n           distributed with this work for additional information\n           regarding copyright ownership.  The ASF licenses this file\n           to you under the Apache License, Version 2.0 (the\n           \"License\"); you may not use this file except in compliance\n           with the License.  You may obtain a copy of the License at\n           .\n             http://www.apache.org/licenses/LICENSE-2.0\n           .\n           Unless required by applicable law or agreed to in writing,\n           software distributed under the License is distributed on an\n           \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n           KIND, either express or implied.  See the License for the\n           specific language governing permissions and limitations\n           under the License.\n\n<h2>Steps to run the example</h2>\n\nBuild and start the demo:\n\n    mvn clean package tomee:run\n\nOpen:\n\n    http://localhost:8080/\n\nThis example shows how to improve JSF2/CDI/BV/JPA applications with features provided by Apache DeltaSpike and MyFaces ExtVal.\n\n<h2>Intro of Apache DeltaSpike and MyFaces ExtVal</h2>\n\nThe Apache DeltaSpike project hosts portable extensions for Contexts and Dependency Injection (CDI - JSR 299). DeltaSpike is a toolbox for your CDI application. Like CDI itself DeltaSpike is focused on type-safety. It is a modularized and extensible framework. So it's easy to choose the needed parts to facilitate the daily work in your project.\n\nMyFaces Extensions Validator (aka ExtVal) is a JSF centric validation framework which is compatible with JSF 1.x and JSF 2.x.\nThis example shows how it improves the default integration of Bean-Validation (JSR-303) with JSF2 as well as meta-data based cross-field validation.\n\n\n<h2>Illustrated Features</h2>\n\n<h3>Apache DeltaSpike</h3>\n\n<ul>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/config/Pages.java\" target=\"_blank\">Type-safe view-config</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/InfoPage.java\" target=\"_blank\">Type-safe (custom) view-meta-data</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/MenuBean.java\" target=\"_blank\">Type-safe navigation</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/CustomProjectStage.java\" target=\"_blank\">Type-safe custom project-stage</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/UserHolder.java\" target=\"_blank\">@WindowScoped</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/MenuBean.java\" target=\"_blank\">Controlling DeltaSpike grouped-conversations with GroupedConversationManager</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/FeedbackPage.java\" target=\"_blank\">@GroupedConversationScoped</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/FeedbackPage.java\" target=\"_blank\">Manual conversation handling</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/security/LoginAccessDecisionVoter.java\" target=\"_blank\">Secured pages (AccessDecisionVoter)</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/repository/Repository.java\" target=\"_blank\">@Transactional</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/RegistrationPage.java\" target=\"_blank\">I18n (type-safe messages)</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/domain/validation/UniqueUserNameValidator.java\" target=\"_blank\">Dependency-Injection for JSR303 (BV) constraint-validators</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/DebugPhaseListener.java\" target=\"_blank\">Dependency-Injection for JSF phase-listeners</a></li>\n</ul>\n\n<h3>Apache MyFaces ExtVal</h3>\n\n<ul>\n    <li><a href=\"./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java\" target=\"_blank\">Cross-Field validation (@Equals)</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java\" target=\"_blank\">Type-safe group-validation (@BeanValidation) for JSF action-methods</a></li>\n</ul>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-fullstack"
+      },
+      {
+        "name":"deltaspike-exception-handling",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-exception-handling"
+      },
+      {
+        "name":"deltaspike-i18n",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-i18n"
+      },
+      {
+        "name":"deltaspike-configproperty",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-configproperty"
+      }
+    ],
+    "descriptor":[
+      {
+        "name":"simple-stateless-with-descriptor",
+        "readme":"Title: Simple Stateless with Descriptor\n\nThis test is similar to simple-stateless, with two major differences. In this case all the classes are regular POJOs without annotations.\nThe EJB-specific metadata is provided via an XML descriptor. The second difference is the explicite use of Local and Remote interfaces. \n\n## CalculatorImpl\n\n    package org.superbiz.calculator;\n    \n    /**\n     * This is an EJB 3 stateless session bean, configured using an EJB 3\n     * deployment descriptor as opposed to using annotations.\n     * This EJB has 2 business interfaces: CalculatorRemote, a remote business\n     * interface, and CalculatorLocal, a local business interface\n     */\n    public class CalculatorImpl implements CalculatorRemote, CalculatorLocal {\n    \n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## CalculatorLocal\n\n    package org.superbiz.calculator;\n    \n    /**\n     * This is an EJB 3 local business interface\n     * This interface is specified using the business-local tag in the deployment descriptor\n     */\n    public interface CalculatorLocal {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## CalculatorRemote\n\n    package org.superbiz.calculator;\n    \n    \n    /**\n     * This is an EJB 3 remote business interface\n     * This interface is specified using the business-local tag in the deployment descriptor\n     */\n    public interface CalculatorRemote {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## ejb-jar.xml\n\nThe XML descriptor defines the EJB class and both local and remote interfaces.\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\"\n             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n             version=\"3.0\">\n      <enterprise-beans>\n        <session>\n          <ejb-name>CalculatorImpl</ejb-name>\n          <business-local>org.superbiz.calculator.CalculatorLocal</business-local>\n          <business-remote>org.superbiz.calculator.CalculatorRemote</business-remote>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n      </enterprise-beans>\n    </ejb-jar>\n\n    \n\n## CalculatorTest\n\nTwo tests obtain a Local and Remote interface to the bean instance. This time an `InitialContext` object is directly created, \nas opposed to getting the context from `EJBContainer`, as we did in the previous example. \n\n    package org.superbiz.calculator;\n    \n    import junit.framework.TestCase;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import java.util.Properties;\n    \n    public class CalculatorTest extends TestCase {\n    \n        private InitialContext initialContext;\n    \n        protected void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n    \n            initialContext = new InitialContext(properties);\n        }\n\n        /**\n         * Lookup the Calculator bean via its remote home interface\n         *\n         * @throws Exception\n         */\n        public void testCalculatorViaRemoteInterface() throws Exception {\n            Object object = initialContext.lookup(\"CalculatorImplRemote\");\n    \n            assertNotNull(object);\n            assertTrue(object instanceof CalculatorRemote);\n            CalculatorRemote calc = (CalculatorRemote) object;\n            assertEquals(10, calc.sum(4, 6));\n            assertEquals(12, calc.multiply(3, 4));\n        }\n\n        /**\n         * Lookup the Calculator bean via its local home interface\n         *\n         * @throws Exception\n         */\n        public void testCalculatorViaLocalInterface() throws Exception {\n            Object object = initialContext.lookup(\"CalculatorImplLocal\");\n    \n            assertNotNull(object);\n            assertTrue(object instanceof CalculatorLocal);\n            CalculatorLocal calc = (CalculatorLocal) object;\n            assertEquals(10, calc.sum(4, 6));\n            assertEquals(12, calc.multiply(3, 4));\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.CalculatorTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/simple-stateless-with-descriptor\n    INFO - openejb.base = /Users/dblevins/examples/simple-stateless-with-descriptor\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-stateless-with-descriptor/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/simple-stateless-with-descriptor/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean CalculatorImpl: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear\n    INFO - Jndi(name=CalculatorImplLocal) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl!org.superbiz.calculator.CalculatorLocal) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear)\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.475 sec\n    \n    Results :\n    \n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-stateless-with-descriptor"
+      },
+      {
+        "name":"simple-mdb-with-descriptor",
+        "readme":"Title: Simple MDB with Descriptor\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## ChatBean\n\n    package org.superbiz.mdbdesc;\n    \n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import javax.jms.Message;\n    import javax.jms.MessageListener;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    public class ChatBean implements MessageListener {\n    \n        private ConnectionFactory connectionFactory;\n    \n        private Queue answerQueue;\n    \n        public void onMessage(Message message) {\n            try {\n    \n                final TextMessage textMessage = (TextMessage) message;\n                final String question = textMessage.getText();\n    \n                if (\"Hello World!\".equals(question)) {\n    \n                    respond(\"Hello, Test Case!\");\n                } else if (\"How are you?\".equals(question)) {\n    \n                    respond(\"I'm doing well.\");\n                } else if (\"Still spinning?\".equals(question)) {\n    \n                    respond(\"Once every day, as usual.\");\n                }\n            } catch (JMSException e) {\n                throw new IllegalStateException(e);\n            }\n        }\n    \n        private void respond(String text) throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n    \n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageProducer from the Session to the Topic or Queue\n                MessageProducer producer = session.createProducer(answerQueue);\n                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                // Create a message\n                TextMessage message = session.createTextMessage(text);\n    \n                // Tell the producer to send the message\n                producer.send(message);\n            } finally {\n                // Clean up\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" metadata-complete=\"true\">\n      <enterprise-beans>\n    \n        <message-driven>\n    \n          <ejb-name>ChatBean</ejb-name>\n          <ejb-class>org.superbiz.mdbdesc.ChatBean</ejb-class>\n    \n          <messaging-type>javax.jms.MessageListener</messaging-type>\n    \n          <activation-config>\n            <activation-config-property>\n              <activation-config-property-name>destination</activation-config-property-name>\n              <activation-config-property-value>ChatBean</activation-config-property-value>\n            </activation-config-property>\n            <activation-config-property>\n              <activation-config-property-name>destinationType</activation-config-property-name>\n              <activation-config-property-value>javax.jms.Queue</activation-config-property-value>\n            </activation-config-property>\n          </activation-config>\n    \n          <resource-ref>\n            <res-ref-name>java:comp/env/org.superbiz.mdbdesc.ChatBean/connectionFactory</res-ref-name>\n            <res-type>javax.jms.ConnectionFactory</res-type>\n            <injection-target>\n              <injection-target-class>org.superbiz.mdbdesc.ChatBean</injection-target-class>\n              <injection-target-name>connectionFactory</injection-target-name>\n            </injection-target>\n          </resource-ref>\n    \n          <resource-env-ref>\n            <resource-env-ref-name>java:comp/env/AnswerQueue</resource-env-ref-name>\n            <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>\n            <mapped-name>AnswerQueue</mapped-name>\n            <injection-target>\n              <injection-target-class>org.superbiz.mdbdesc.ChatBean</injection-target-class>\n              <injection-target-name>answerQueue</injection-target-name>\n            </injection-target>\n          </resource-env-ref>\n    \n        </message-driven>\n    \n      </enterprise-beans>\n    </ejb-jar>\n    \n\n## ChatBeanTest\n\n    package org.superbiz.mdb;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.JMSException;\n    import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    public class ChatBeanTest extends TestCase {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource(name = \"ChatBean\")\n        private Queue questionQueue;\n    \n        @Resource(name = \"AnswerQueue\")\n        private Queue answerQueue;\n    \n        public void test() throws Exception {\n    \n            EJBContainer.createEJBContainer().getContext().bind(\"inject\", this);\n    \n            final Connection connection = connectionFactory.createConnection();\n    \n            connection.start();\n    \n            final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n            final MessageProducer questions = session.createProducer(questionQueue);\n    \n            final MessageConsumer answers = session.createConsumer(answerQueue);\n    \n    \n            sendText(\"Hello World!\", questions, session);\n    \n            assertEquals(\"Hello, Test Case!\", receiveText(answers));\n    \n    \n            sendText(\"How are you?\", questions, session);\n    \n            assertEquals(\"I'm doing well.\", receiveText(answers));\n    \n    \n            sendText(\"Still spinning?\", questions, session);\n    \n            assertEquals(\"Once every day, as usual.\", receiveText(answers));\n        }\n    \n        private void sendText(String text, MessageProducer questions, Session session) throws JMSException {\n    \n            questions.send(session.createTextMessage(text));\n        }\n    \n        private String receiveText(MessageConsumer answers) throws JMSException {\n    \n            return ((TextMessage) answers.receive(1000)).getText();\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.mdb.ChatBeanTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/simple-mdb-with-descriptor\n    INFO - openejb.base = /Users/dblevins/examples/simple-mdb-with-descriptor\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-mdb-with-descriptor/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/simple-mdb-with-descriptor/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/simple-mdb-with-descriptor\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default MDB Container, type=Container, provider-id=Default MDB Container)\n    INFO - Auto-creating a container for bean ChatBean: Container(type=MESSAGE, id=Default MDB Container)\n    INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)\n    INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)\n    INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'ChatBean'.\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdbdesc.ChatBean/connectionFactory' in bean ChatBean to Resource(id=Default JMS Connection Factory)\n    INFO - Configuring Service(id=AnswerQueue, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'AnswerQueue' of type 'javax.jms.Queue for 'ChatBean'.\n    INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean ChatBean to Resource(id=AnswerQueue)\n    INFO - Configuring Service(id=ChatBean, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'ChatBean' of type 'javax.jms.Queue for 'ChatBean'.\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.mdb.ChatBeanTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdb.ChatBeanTest/connectionFactory' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=Default JMS Connection Factory)\n    INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=AnswerQueue)\n    INFO - Auto-linking resource-env-ref 'java:comp/env/ChatBean' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=ChatBean)\n    INFO - Enterprise application \"/Users/dblevins/examples/simple-mdb-with-descriptor\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/simple-mdb-with-descriptor\n    INFO - Jndi(name=\"java:global/EjbModule1842275169/org.superbiz.mdb.ChatBeanTest!org.superbiz.mdb.ChatBeanTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1842275169/org.superbiz.mdb.ChatBeanTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/simple-mdb-with-descriptor)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.914 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-mdb-with-descriptor"
+      },
+      {
+        "name":"alternate-descriptors",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/alternate-descriptors"
+      },
+      {
+        "name":"lookup-of-ejbs-with-descriptor",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs-with-descriptor"
+      }
+    ],
+    "design":[
+      {
+        "name":"bean-validation-design-by-contract",
+        "readme":"# Bean Validation - Design By Contract\n\nBean Validation (aka JSR 303) contains an optional appendix dealing with method validation.\n\nSome implementions of this JSR implement this appendix (Apache bval, Hibernate validator for example).\n\nOpenEJB provides an interceptor which allows you to use this feature to do design by contract.\n\n# Design by contract\n\nThe goal is to be able to configure with a finer grain your contract. In the example you specify\nthe minimum centimeters a sport man should jump at pole vaulting:\n\n    @Local\n    public interface PoleVaultingManager {\n        int points(@Min(120) int centimeters);\n    }\n\n# Usage\n\nTomEE and OpenEJB do not provide anymore `BeanValidationAppendixInterceptor` since\nBean Validation 1.1 does it (with a slighly different usage but the exact same feature).\n\nSo basically you don't need to configure anything to use it.\n# Errors\n\nIf a parameter is not validated an exception is thrown, it is an EJBException wrapping a ConstraintViolationException:\n\n    try {\n        gamesManager.addSportMan(\"I lose\", \"EN\");\n        fail(\"no space should be in names\");\n    } catch (EJBException wrappingException) {\n        assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n        ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n        assertEquals(1, exception.getConstraintViolations().size());\n    }\n\n# Example\n\n## OlympicGamesManager\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Stateless;\n    import javax.validation.constraints.NotNull;\n    import javax.validation.constraints.Pattern;\n    import javax.validation.constraints.Size;\n\n    @Stateless\n    public class OlympicGamesManager {\n        public String addSportMan(@Pattern(regexp = \"^[A-Za-z]+$\") String name, @Size(min = 2, max = 4) String country) {\n            if (country.equals(\"USA\")) {\n                return null;\n            }\n            return new StringBuilder(name).append(\" [\").append(country).append(\"]\").toString();\n        }\n    }\n\n## PoleVaultingManager\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Local;\n    import javax.validation.constraints.Min;\n\n    @Local\n    public interface PoleVaultingManager {\n        int points(@Min(120) int centimeters);\n    }\n\n## PoleVaultingManagerBean\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Stateless;\n\n    @Stateless\n    public class PoleVaultingManagerBean implements PoleVaultingManager {\n        @Override\n        public int points(int centimeters) {\n            return centimeters - 120;\n        }\n    }\n\n## OlympicGamesTest\n\n    public class OlympicGamesTest {\n        private static Context context;\n\n        @EJB\n        private OlympicGamesManager gamesManager;\n\n        @EJB\n        private PoleVaultingManager poleVaultingManager;\n\n        @BeforeClass\n        public static void start() {\n            Properties properties = new Properties();\n            properties.setProperty(BeanContext.USER_INTERCEPTOR_KEY, BeanValidationAppendixInterceptor.class.getName());\n            context = EJBContainer.createEJBContainer(properties).getContext();\n        }\n\n        @Before\n        public void inject() throws Exception {\n            context.bind(\"inject\", this);\n        }\n\n        @AfterClass\n        public static void stop() throws Exception {\n            if (context != null) {\n                context.close();\n            }\n        }\n\n        @Test\n        public void sportMenOk() throws Exception {\n            assertEquals(\"IWin [FR]\", gamesManager.addSportMan(\"IWin\", \"FR\"));\n        }\n\n        @Test\n        public void sportMenKoBecauseOfName() throws Exception {\n            try {\n                gamesManager.addSportMan(\"I lose\", \"EN\");\n                fail(\"no space should be in names\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n\n        @Test\n        public void sportMenKoBecauseOfCountry() throws Exception {\n            try {\n                gamesManager.addSportMan(\"ILoseTwo\", \"TOO-LONG\");\n                fail(\"country should be between 2 and 4 characters\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n\n        @Test\n        public void polVaulting() throws Exception {\n            assertEquals(100, poleVaultingManager.points(220));\n        }\n\n        @Test\n        public void tooShortPolVaulting() throws Exception {\n            try {\n                poleVaultingManager.points(119);\n                fail(\"the jump is too short\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n    }\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running OlympicGamesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - openejb.base = /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/bean-validation-design-by-contract/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/bean-validation-design-by-contract/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean PoleVaultingManagerBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean OlympicGamesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/bean-validation-design-by-contract\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/PoleVaultingManagerBean!org.superbiz.designbycontract.PoleVaultingManager\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/PoleVaultingManagerBean\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/OlympicGamesManager!org.superbiz.designbycontract.OlympicGamesManager\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/OlympicGamesManager\")\n    INFO - Jndi(name=\"java:global/EjbModule236054577/OlympicGamesTest!OlympicGamesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule236054577/OlympicGamesTest\")\n    INFO - Created Ejb(deployment-id=OlympicGamesManager, ejb-name=OlympicGamesManager, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=PoleVaultingManagerBean, ejb-name=PoleVaultingManagerBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=OlympicGamesTest, ejb-name=OlympicGamesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=OlympicGamesManager, ejb-name=OlympicGamesManager, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=PoleVaultingManagerBean, ejb-name=PoleVaultingManagerBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=OlympicGamesTest, ejb-name=OlympicGamesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/bean-validation-design-by-contract)\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.245 sec\n\n    Results :\n\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/bean-validation-design-by-contract"
+      }
+    ],
+    "disposes":[
+      {
+        "name":"cdi-produces-disposes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-produces-disposes"
+      }
+    ],
+    "dynamic":[
+      {
+        "name":"dynamic-implementation",
+        "readme":"Title: Dynamic Implementation\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## SocialBean\n\n    package org.superbiz.dynamic;\n    \n    import org.apache.openejb.api.Proxy;\n    \n    import javax.ejb.Singleton;\n    import javax.interceptor.Interceptors;\n    \n    @Singleton\n    @Proxy(SocialHandler.class)\n    @Interceptors(SocialInterceptor.class)\n    public interface SocialBean {\n        public String facebookStatus();\n    \n        public String twitterStatus();\n    \n        public String status();\n    }\n\n## SocialHandler\n\n    package org.superbiz.dynamic;\n    \n    import java.lang.reflect.InvocationHandler;\n    import java.lang.reflect.Method;\n    \n    public class SocialHandler implements InvocationHandler {\n        @Override\n        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\n            String mtd = method.getName();\n            if (mtd.toLowerCase().contains(\"facebook\")) {\n                return \"You think you have a life!\";\n            } else if (mtd.toLowerCase().contains(\"twitter\")) {\n                return \"Wow, you eat pop corn!\";\n            }\n            return \"Hey, you have no virtual friend!\";\n        }\n    }\n\n## SocialInterceptor\n\n    packagenull\n    }\n\n## SocialTest\n\n    package org.superbiz.dynamic;\n    \n    import org.junit.AfterClass;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    \n    import static junit.framework.Assert.assertTrue;\n    \n    public class SocialTest {\n        private static SocialBean social;\n        private static EJBContainer container;\n    \n        @BeforeClass\n        public static void init() throws Exception {\n            container = EJBContainer.createEJBContainer();\n            social = (SocialBean) container.getContext().lookup(\"java:global/dynamic-implementation/SocialBean\");\n        }\n    \n        @AfterClass\n        public static void close() {\n            container.close();\n        }\n    \n        @Test\n        public void simple() {\n            assertTrue(social.facebookStatus().contains(\"think\"));\n            assertTrue(social.twitterStatus().contains(\"eat\"));\n            assertTrue(social.status().contains(\"virtual\"));\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.dynamic.SocialTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/dynamic-implementation\n    INFO - openejb.base = /Users/dblevins/examples/dynamic-implementation\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-implementation/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-implementation/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-implementation\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean SocialBean: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.dynamic.SocialTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/dynamic-implementation\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/dynamic-implementation\n    INFO - Jndi(name=\"java:global/dynamic-implementation/SocialBean!org.superbiz.dynamic.SocialBean\")\n    INFO - Jndi(name=\"java:global/dynamic-implementation/SocialBean\")\n    INFO - Jndi(name=\"java:global/EjbModule236706648/org.superbiz.dynamic.SocialTest!org.superbiz.dynamic.SocialTest\")\n    INFO - Jndi(name=\"java:global/EjbModule236706648/org.superbiz.dynamic.SocialTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.dynamic.SocialTest, ejb-name=org.superbiz.dynamic.SocialTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=SocialBean, ejb-name=SocialBean, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.dynamic.SocialTest, ejb-name=org.superbiz.dynamic.SocialTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=SocialBean, ejb-name=SocialBean, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-implementation)\n    INFO - Undeploying app: /Users/dblevins/examples/dynamic-implementation\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.107 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-implementation"
+      },
+      {
+        "name":"dynamic-datasource-routing",
+        "readme":"Title: Dynamic Datasource Routing\n\nThe TomEE dynamic datasource api aims to allow to use multiple data sources as one from an application point of view.\n\nIt can be useful for technical reasons (load balancing for example) or more generally\nfunctionnal reasons (filtering, aggregation, enriching...). However please note you can choose\nonly one datasource by transaction. It means the goal of this feature is not to switch more than\nonce of datasource in a transaction. The following code will not work:\n\n    @Stateless\n    public class MyEJB {\n        @Resource private MyRouter router;\n        @PersistenceContext private EntityManager em;\n\n        public void workWithDataSources() {\n            router.setDataSource(\"ds1\");\n            em.persist(new MyEntity());\n\n            router.setDataSource(\"ds2\"); // same transaction -> this invocation doesn't work\n            em.persist(new MyEntity());\n        }\n    }\n\nIn this example the implementation simply use a datasource from its name and needs to be set before using any JPA\noperation in the transaction (to keep the logic simple in the example).\n\n# The implementation of the Router\n\nOur router has two configuration parameters:\n* a list of jndi names representing datasources to use\n* a default datasource to use\n\n## Router implementation\n\nThe interface Router (`org.apache.openejb.resource.jdbc.Router`) has only one method to implement, `public DataSource getDataSource()`\n\nOur `DeterminedRouter` implementation uses a ThreadLocal to manage the currently used datasource. Keep in mind JPA used more than once the getDatasource() method\nfor one operation. To change the datasource in one transaction is dangerous and should be avoid.\n\n    package org.superbiz.dynamicdatasourcerouting;\n\n    import org.apache.openejb.resource.jdbc.AbstractRouter;\n\n    import javax.naming.NamingException;\n    import javax.sql.DataSource;\n    import java.util.Map;\n    import java.util.concurrent.ConcurrentHashMap;\n\n    public class DeterminedRouter extends AbstractRouter {\n        private String dataSourceNames;\n        private String defaultDataSourceName;\n        private Map<String, DataSource> dataSources = null;\n        private ThreadLocal<DataSource> currentDataSource = new ThreadLocal<DataSource>();\n\n        /**\n         * @param datasourceList datasource resource name, separator is a space\n         */\n        public void setDataSourceNames(String datasourceList) {\n            dataSourceNames = datasourceList;\n        }\n\n        /**\n         * lookup datasource in openejb resources\n         */\n        private void init() {\n            dataSources = new ConcurrentHashMap<String, DataSource>();\n            for (String ds : dataSourceNames.split(\" \")) {\n                try {\n                    Object o = getOpenEJBResource(ds);\n                    if (o instanceof DataSource) {\n                        dataSources.put(ds, DataSource.class.cast(o));\n                    }\n                } catch (NamingException e) {\n                    // ignored\n                }\n            }\n        }\n\n        /**\n         * @return the user selected data source if it is set\n         *         or the default one\n         *  @throws IllegalArgumentException if the data source is not found\n         */\n        @Override\n        public DataSource getDataSource() {\n            // lazy init of routed datasources\n            if (dataSources == null) {\n                init();\n            }\n\n            // if no datasource is selected use the default one\n            if (currentDataSource.get() == null) {\n                if (dataSources.containsKey(defaultDataSourceName)) {\n                    return dataSources.get(defaultDataSourceName);\n\n                } else {\n                    throw new IllegalArgumentException(\"you have to specify at least one datasource\");\n                }\n            }\n\n            // the developper set the datasource to use\n            return currentDataSource.get();\n        }\n\n        /**\n         *\n         * @param datasourceName data source name\n         */\n        public void setDataSource(String datasourceName) {\n            if (dataSources == null) {\n                init();\n            }\n            if (!dataSources.containsKey(datasourceName)) {\n                throw new IllegalArgumentException(\"data source called \" + datasourceName + \" can't be found.\");\n            }\n            DataSource ds = dataSources.get(datasourceName);\n            currentDataSource.set(ds);\n        }\n\n        /**\n         * reset the data source\n         */\n        public void clear() {\n            currentDataSource.remove();\n        }\n\n        public void setDefaultDataSourceName(String name) {\n            this.defaultDataSourceName = name;\n        }\n    }\n\n## Declaring the implementation\n\nTo be able to use your router as a resource you need to provide a service configuration. It is done in a file\nyou can find in META-INF/org.router/ and called service-jar.xml\n(for your implementation you can of course change the package name).\n\nIt contains the following code:\n\n    <ServiceJar>\n      <ServiceProvider id=\"DeterminedRouter\" <!-- the name you want to use -->\n          service=\"Resource\"\n          type=\"org.apache.openejb.resource.jdbc.Router\"\n          class-name=\"org.superbiz.dynamicdatasourcerouting.DeterminedRouter\"> <!-- implementation class -->\n\n        # the parameters\n\n        DataSourceNames\n        DefaultDataSourceName\n      </ServiceProvider>\n    </ServiceJar>\n\n\n# Using the Router\n\nHere we have a `RoutedPersister` stateless bean which uses our `DeterminedRouter`\n\n    package org.superbiz.dynamicdatasourcerouting;\n\n    import javax.annotation.Resource;\n    import javax.ejb.Stateless;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n\n    @Stateless\n    public class RoutedPersister {\n        @PersistenceContext(unitName = \"router\")\n        private EntityManager em;\n\n        @Resource(name = \"My Router\", type = DeterminedRouter.class)\n        private DeterminedRouter router;\n\n        public void persist(int id, String name, String ds) {\n            router.setDataSource(ds);\n            em.persist(new Person(id, name));\n        }\n    }\n\n# The test\n\nIn test mode and using property style configuration the foolowing configuration is used:\n\n    public class DynamicDataSourceTest {\n        @Test\n        public void route() throws Exception {\n            String[] databases = new String[]{\"database1\", \"database2\", \"database3\"};\n\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());\n\n            // resources\n            // datasources\n            for (int i = 1; i <= databases.length; i++) {\n                String dbName = databases[i - 1];\n                properties.setProperty(dbName, \"new://Resource?type=DataSource\");\n                dbName += \".\";\n                properties.setProperty(dbName + \"JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n                properties.setProperty(dbName + \"JdbcUrl\", \"jdbc:hsqldb:mem:db\" + i);\n                properties.setProperty(dbName + \"UserName\", \"sa\");\n                properties.setProperty(dbName + \"Password\", \"\");\n                properties.setProperty(dbName + \"JtaManaged\", \"true\");\n            }\n\n            // router\n            properties.setProperty(\"My Router\", \"new://Resource?provider=org.router:DeterminedRouter&type=\" + DeterminedRouter.class.getName());\n            properties.setProperty(\"My Router.DatasourceNames\", \"database1 database2 database3\");\n            properties.setProperty(\"My Router.DefaultDataSourceName\", \"database1\");\n\n            // routed datasource\n            properties.setProperty(\"Routed Datasource\", \"new://Resource?provider=RoutedDataSource&type=\" + Router.class.getName());\n            properties.setProperty(\"Routed Datasource.Router\", \"My Router\");\n\n            Context ctx = EJBContainer.createEJBContainer(properties).getContext();\n            RoutedPersister ejb = (RoutedPersister) ctx.lookup(\"java:global/dynamic-datasource-routing/RoutedPersister\");\n            for (int i = 0; i < 18; i++) {\n                // persisting a person on database db -> kind of manual round robin\n                String name = \"record \" + i;\n                String db = databases[i % 3];\n                ejb.persist(i, name, db);\n            }\n\n            // assert database records number using jdbc\n            for (int i = 1; i <= databases.length; i++) {\n                Connection connection = DriverManager.getConnection(\"jdbc:hsqldb:mem:db\" + i, \"sa\", \"\");\n                Statement st = connection.createStatement();\n                ResultSet rs = st.executeQuery(\"select count(*) from PERSON\");\n                rs.next();\n                assertEquals(6, rs.getInt(1));\n                st.close();\n                connection.close();\n            }\n\n            ctx.close();\n        }\n    }\n\n# Configuration via openejb.xml\n\nThe testcase above uses properties for configuration.  The identical way to do it via the `conf/openejb.xml` is as follows:\n\n    <!-- Router and datasource -->\n    <Resource id=\"My Router\" type=\"org.apache.openejb.router.test.DynamicDataSourceTest$DeterminedRouter\" provider=\"org.routertest:DeterminedRouter\">\n        DatasourceNames = database1 database2 database3\n        DefaultDataSourceName = database1\n    </Resource>\n    <Resource id=\"Routed Datasource\" type=\"org.apache.openejb.resource.jdbc.Router\" provider=\"RoutedDataSource\">\n        Router = My Router\n    </Resource>\n\n    <!-- real datasources -->\n    <Resource id=\"database1\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db1\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n    <Resource id=\"database2\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db2\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n    <Resource id=\"database3\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db3\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n\n\n\n\n## Some hack for OpenJPA\n\nUsing more than one datasource behind one EntityManager means the databases are already created. If it is not the case,\nthe JPA provider has to create the datasource at boot time.\n\nHibernate do it so if you declare your databases it will work. However with OpenJPA\n(the default JPA provider for OpenEJB), the creation is lazy and it happens only once so when you'll switch of database\nit will no more work.\n\nOf course OpenEJB provides @Singleton and @Startup features of Java EE 6 and we can do a bean just making a simple find,\neven on none existing entities, just to force the database creation:\n\n    @Startup\n    @Singleton\n    public class BoostrapUtility {\n        // inject all real databases\n\n        @PersistenceContext(unitName = \"db1\")\n        private EntityManager em1;\n\n        @PersistenceContext(unitName = \"db2\")\n        private EntityManager em2;\n\n        @PersistenceContext(unitName = \"db3\")\n        private EntityManager em3;\n\n        // force database creation\n\n        @PostConstruct\n        @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n        public void initDatabase() {\n            em1.find(Person.class, 0);\n            em2.find(Person.class, 0);\n            em3.find(Person.class, 0);\n        }\n    }\n\n## Using the routed datasource\n\nNow you configured the way you want to route your JPA operation, you registered the resources and you initialized\nyour databases you can use it and see how it is simple:\n\n    @Stateless\n    public class RoutedPersister {\n        // injection of the \"proxied\" datasource\n        @PersistenceContext(unitName = \"router\")\n        private EntityManager em;\n\n        // injection of the router you need it to configured the database\n        @Resource(name = \"My Router\", type = DeterminedRouter.class)\n        private DeterminedRouter router;\n\n        public void persist(int id, String name, String ds) {\n            router.setDataSource(ds); // configuring the database for the current transaction\n            em.persist(new Person(id, name)); // will use ds database automatically\n        }\n    }\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - openejb.base = /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=My Router, type=Resource, provider-id=DeterminedRouter)\n    INFO - Configuring Service(id=database3, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=database2, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=Routed Datasource, type=Resource, provider-id=RoutedDataSource)\n    INFO - Configuring Service(id=database1, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-datasource-routing/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-datasource-routing/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-datasource-routing\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean BoostrapUtility: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean RoutedPersister: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/My Router' in bean RoutedPersister to Resource(id=My Router)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=router)\n    INFO - Configuring PersistenceUnit(name=db1)\n    INFO - Auto-creating a Resource with id 'database1NonJta' of type 'DataSource for 'db1'.\n    INFO - Configuring Service(id=database1NonJta, type=Resource, provider-id=database1)\n    INFO - Adjusting PersistenceUnit db1 <non-jta-data-source> to Resource ID 'database1NonJta' from 'null'\n    INFO - Configuring PersistenceUnit(name=db2)\n    INFO - Auto-creating a Resource with id 'database2NonJta' of type 'DataSource for 'db2'.\n    INFO - Configuring Service(id=database2NonJta, type=Resource, provider-id=database2)\n    INFO - Adjusting PersistenceUnit db2 <non-jta-data-source> to Resource ID 'database2NonJta' from 'null'\n    INFO - Configuring PersistenceUnit(name=db3)\n    INFO - Auto-creating a Resource with id 'database3NonJta' of type 'DataSource for 'db3'.\n    INFO - Configuring Service(id=database3NonJta, type=Resource, provider-id=database3)\n    INFO - Adjusting PersistenceUnit db3 <non-jta-data-source> to Resource ID 'database3NonJta' from 'null'\n    INFO - Enterprise application \"/Users/dblevins/examples/dynamic-datasource-routing\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - PersistenceUnit(name=router, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 504ms\n    INFO - PersistenceUnit(name=db1, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 11ms\n    INFO - PersistenceUnit(name=db2, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 7ms\n    INFO - PersistenceUnit(name=db3, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 6ms\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/BoostrapUtility!org.superbiz.dynamicdatasourcerouting.BoostrapUtility\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/BoostrapUtility\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/RoutedPersister!org.superbiz.dynamicdatasourcerouting.RoutedPersister\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/RoutedPersister\")\n    INFO - Jndi(name=\"java:global/EjbModule1519652738/org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest!org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1519652738/org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\")\n    INFO - Created Ejb(deployment-id=RoutedPersister, ejb-name=RoutedPersister, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, ejb-name=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=BoostrapUtility, ejb-name=BoostrapUtility, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=RoutedPersister, ejb-name=RoutedPersister, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, ejb-name=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=BoostrapUtility, ejb-name=BoostrapUtility, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-datasource-routing)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.504 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-datasource-routing"
+      },
+      {
+        "name":"dynamic-dao-implementation",
+        "readme":"Title: Dynamic DAO Implementation\n\nMany aspects of Data Access Objects (DAOs) are very repetitive and boiler plate.  As a fun and experimental feature, TomEE supports dynamically implementing an interface\nthat is seen to have standard DAO-style methods.\n\nThe interface has to be annotated with @PersistenceContext to define which EntityManager to use.\n\nMethods should respect these conventions:\n\n  * void save(Foo foo): persist foo\n  * Foo update(Foo foo): merge foo\n  * void delete(Foo foo): remove foo, if foo is detached it tries to attach it\n  * Collection<Foo>|Foo namedQuery(String name[, Map<String, ?> params, int first, int max]): run the named query called name, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo>|Foo nativeQuery(String name[, Map<String, ?> params, int first, int max]): run the native query called name, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo>|Foo query(String value [, Map<String, ?> params, int first, int max]): run the query put as first parameter, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo> findAll([int first, int max]): find all Foo, parameters are used for pagination\n  * Collection<Foo> findByBar1AndBar2AndBar3(<bar 1 type> bar1, <bar 2 type> bar2, <bar3 type> bar3 [, int first, int max]): find all Foo with specified field values for bar1, bar2, bar3.\n\nDynamic finder can have as much as you want field constraints. For String like is used and for other type equals is used.\n\n# Example\n\n## User\n\n    package org.superbiz.dynamic;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n    import javax.persistence.NamedQueries;\n    import javax.persistence.NamedQuery;\n    \n    @Entity\n    @NamedQueries({\n            @NamedQuery(name = \"dynamic-ejb-impl-test.query\", query = \"SELECT u FROM User AS u WHERE u.name LIKE :name\"),\n            @NamedQuery(name = \"dynamic-ejb-impl-test.all\", query = \"SELECT u FROM User AS u\")\n    })\n    public class User {\n        @Id\n        @GeneratedValue\n        private long id;\n        private String name;\n        private int age;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public void setAge(int age) {\n            this.age = age;\n        }\n    }\n\n## UserDao\n\n    package org.superbiz.dynamic;\n    \n    \n    import javax.ejb.Stateless;\n    import javax.persistence.PersistenceContext;\n    import java.util.Collection;\n    import java.util.Map;\n    \n    @Stateless\n    @PersistenceContext(name = \"dynamic\")\n    public interface UserDao {\n        User findById(long id);\n    \n        Collection<User> findByName(String name);\n    \n        Collection<User> findByNameAndAge(String name, int age);\n    \n        Collection<User> findAll();\n    \n        Collection<User> findAll(int first, int max);\n    \n        Collection<User> namedQuery(String name, Map<String, ?> params, int first, int max);\n    \n        Collection<User> namedQuery(String name, int first, int max, Map<String, ?> params);\n    \n        Collection<User> namedQuery(String name, Map<String, ?> params);\n    \n        Collection<User> namedQuery(String name);\n    \n        Collection<User> query(String value, Map<String, ?> params);\n    \n        void save(User u);\n    \n        void delete(User u);\n    \n        User update(User u);\n    }\n\n## persistence.xml\n\n    <persistence version=\"2.0\"\n                 xmlns=\"http://java.sun.com/xml/ns/persistence\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"\n          http://java.sun.com/xml/ns/persistence\n          http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">\n      <persistence-unit name=\"dynamic\" transaction-type=\"JTA\">\n        <jta-data-source>jdbc/dynamicDB</jta-data-source>\n        <class>org.superbiz.dynamic.User</class>\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n    \n\n## DynamicUserDaoTest\n\n    package org.superbiz.dynamic;\n    \n    import junit.framework.Assert;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.EJBException;\n    import javax.ejb.Stateless;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.persistence.EntityManager;\n    import javax.persistence.NoResultException;\n    import javax.persistence.PersistenceContext;\n    import java.util.Collection;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.Properties;\n    \n    import static junit.framework.Assert.assertEquals;\n    import static junit.framework.Assert.assertNotNull;\n    import static junit.framework.Assert.assertTrue;\n    \n    public class DynamicUserDaoTest {\n        private static UserDao dao;\n        private static Util util;\n    \n        @BeforeClass\n        public static void init() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"jdbc/dynamicDB\", \"new://Resource?type=DataSource\");\n            p.put(\"jdbc/dynamicDB.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"jdbc/dynamicDB.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n            p.put(\"jdbc/dynamicDB.UserName\", \"sa\");\n            p.put(\"jdbc/dynamicDB.Password\", \"\");\n    \n            final Context context = EJBContainer.createEJBContainer(p).getContext();\n            dao = (UserDao) context.lookup(\"java:global/dynamic-dao-implementation/UserDao\");\n            util = (Util) context.lookup(\"java:global/dynamic-dao-implementation/Util\");\n    \n            util.init(); // init database\n        }\n    \n        @Test\n        public void simple() {\n            User user = dao.findById(1);\n            assertNotNull(user);\n            assertEquals(1, user.getId());\n        }\n    \n        @Test\n        public void findAll() {\n            Collection<User> users = dao.findAll();\n            assertEquals(10, users.size());\n        }\n    \n        @Test\n        public void pagination() {\n            Collection<User> users = dao.findAll(0, 5);\n            assertEquals(5, users.size());\n    \n            users = dao.findAll(6, 1);\n            assertEquals(1, users.size());\n            assertEquals(7, users.iterator().next().getId());\n        }\n    \n        @Test\n        public void persist() {\n            User u = new User();\n            dao.save(u);\n            assertNotNull(u.getId());\n            util.remove(u);\n        }\n    \n        @Test\n        public void remove() {\n            User u = new User();\n            dao.save(u);\n            assertNotNull(u.getId());\n            dao.delete(u);\n            try {\n                dao.findById(u.getId());\n                Assert.fail();\n            } catch (EJBException ee) {\n                assertTrue(ee.getCause() instanceof NoResultException);\n            }\n        }\n    \n        @Test\n        public void merge() {\n            User u = new User();\n            u.setAge(1);\n            dao.save(u);\n            assertEquals(1, u.getAge());\n            assertNotNull(u.getId());\n    \n            u.setAge(2);\n            dao.update(u);\n            assertEquals(2, u.getAge());\n    \n            dao.delete(u);\n        }\n    \n        @Test\n        public void oneCriteria() {\n            Collection<User> users = dao.findByName(\"foo\");\n            assertEquals(4, users.size());\n            for (User user : users) {\n                assertEquals(\"foo\", user.getName());\n            }\n        }\n    \n        @Test\n        public void twoCriteria() {\n            Collection<User> users = dao.findByNameAndAge(\"bar-1\", 1);\n            assertEquals(1, users.size());\n    \n            User user = users.iterator().next();\n            assertEquals(\"bar-1\", user.getName());\n            assertEquals(1, user.getAge());\n        }\n    \n        @Test\n        public void query() {\n            Map<String, Object> params = new HashMap<String, Object>();\n            params.put(\"name\", \"foo\");\n    \n            Collection<User> users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params, 0, 100);\n            assertEquals(4, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params);\n            assertEquals(4, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params, 0, 2);\n            assertEquals(2, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", 0, 2, params);\n            assertEquals(2, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.all\");\n            assertEquals(10, users.size());\n    \n            params.remove(\"name\");\n            params.put(\"age\", 1);\n            users = dao.query(\"SELECT u FROM User AS u WHERE u.age = :age\", params);\n            assertEquals(3, users.size());\n        }\n    \n        @Stateless\n        public static class Util {\n            @PersistenceContext\n            private EntityManager em;\n    \n            public void remove(User o) {\n                em.remove(em.find(User.class, o.getId()));\n            }\n    \n            public void init() {\n                for (int i = 0; i < 10; i++) {\n                    User u = new User();\n                    u.setAge(i % 4);\n                    if (i % 3 == 0) {\n                        u.setName(\"foo\");\n                    } else {\n                        u.setName(\"bar-\" + i);\n                    }\n                    em.persist(u);\n                }\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.dynamic.DynamicUserDaoTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - openejb.base = /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=jdbc/dynamicDB, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-dao-implementation/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-dao-implementation/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-dao-implementation/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-dao-implementation/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean UserDao: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.dynamic.DynamicUserDaoTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=dynamic)\n    INFO - Auto-creating a Resource with id 'jdbc/dynamicDBNonJta' of type 'DataSource for 'dynamic'.\n    INFO - Configuring Service(id=jdbc/dynamicDBNonJta, type=Resource, provider-id=jdbc/dynamicDB)\n    INFO - Adjusting PersistenceUnit dynamic <non-jta-data-source> to Resource ID 'jdbc/dynamicDBNonJta' from 'null'\n    INFO - Enterprise application \"/Users/dblevins/examples/dynamic-dao-implementation\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - PersistenceUnit(name=dynamic, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 417ms\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/UserDao!org.superbiz.dynamic.UserDao\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/UserDao\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/Util!org.superbiz.dynamic.DynamicUserDaoTest$Util\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/Util\")\n    INFO - Jndi(name=\"java:global/EjbModule346613126/org.superbiz.dynamic.DynamicUserDaoTest!org.superbiz.dynamic.DynamicUserDaoTest\")\n    INFO - Jndi(name=\"java:global/EjbModule346613126/org.superbiz.dynamic.DynamicUserDaoTest\")\n    INFO - Created Ejb(deployment-id=UserDao, ejb-name=UserDao, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=Util, ejb-name=Util, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.dynamic.DynamicUserDaoTest, ejb-name=org.superbiz.dynamic.DynamicUserDaoTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=UserDao, ejb-name=UserDao, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=Util, ejb-name=Util, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.dynamic.DynamicUserDaoTest, ejb-name=org.superbiz.dynamic.DynamicUserDaoTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-dao-implementation)\n    WARN - Meta class \"org.superbiz.dynamic.User_\" for entity class org.superbiz.dynamic.User can not be registered with following exception \"java.security.PrivilegedActionException: java.lang.ClassNotFoundException: org.superbiz.dynamic.User_\"\n    WARN - Query \"SELECT u FROM User AS u WHERE u.name LIKE :name\" is removed from cache  excluded permanently. Query \"SELECT u FROM User AS u WHERE u.name LIKE :name\" is not cached because it uses pagination..\n    Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.471 sec\n    \n    Results :\n    \n    Tests run: 9, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-dao-implementation"
+      },
+      {
+        "name":"dynamic-proxy-to-access-mbean",
+        "readme":"Title: dynamic-proxy-to-access-mbean\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Example\n\nAcessing MBean is something simple through the JMX API but it is often technical and not very interesting.\n\nThis example simplify this work simply doing it generically in a proxy.\n\nSo from an user side you simple declare an interface to access your MBeans.\n\nNote: the example implementation uses a local MBeanServer but enhancing the example API\nit is easy to imagine a remote connection with user/password if needed.\n\n## ObjectName API (annotation)\n\nSimply an annotation to get the object\n\n    package org.superbiz.dynamic.mbean;\n\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.Target;\n\n    import static java.lang.annotation.ElementType.TYPE;\n    import static java.lang.annotation.ElementType.METHOD;\n    import static java.lang.annotation.RetentionPolicy.RUNTIME;\n\n    @Target({TYPE, METHOD})\n    @Retention(RUNTIME)\n    public @interface ObjectName {\n        String value();\n\n        // for remote usage only\n        String url() default \"\";\n        String user() default \"\";\n        String password() default \"\";\n    }\n\n## DynamicMBeanHandler (thr proxy implementation)\n\n    package org.superbiz.dynamic.mbean;\n\n    import javax.annotation.PreDestroy;\n    import javax.management.Attribute;\n    import javax.management.MBeanAttributeInfo;\n    import javax.management.MBeanInfo;\n    import javax.management.MBeanServer;\n    import javax.management.MBeanServerConnection;\n    import javax.management.ObjectName;\n    import javax.management.remote.JMXConnector;\n    import javax.management.remote.JMXConnectorFactory;\n    import javax.management.remote.JMXServiceURL;\n    import java.io.IOException;\n    import java.lang.management.ManagementFactory;\n    import java.lang.reflect.InvocationHandler;\n    import java.lang.reflect.Method;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.concurrent.ConcurrentHashMap;\n\n    /**\n     * Need a @PreDestroy method to disconnect the remote host when used in remote mode.\n     */\n    public class DynamicMBeanHandler implements InvocationHandler {\n        private final Map<Method, ConnectionInfo> infos = new ConcurrentHashMap<Method, ConnectionInfo>();\n\n        @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\n            final String methodName = method.getName();\n            if (method.getDeclaringClass().equals(Object.class) && \"toString\".equals(methodName)) {\n                return getClass().getSimpleName() + \" Proxy\";\n            }\n            if (method.getAnnotation(PreDestroy.class) != null) {\n                return destroy();\n            }\n\n            final ConnectionInfo info = getConnectionInfo(method);\n            final MBeanInfo infos = info.getMBeanInfo();\n            if (methodName.startsWith(\"set\") && methodName.length() > 3 && args != null && args.length == 1\n                && (Void.TYPE.equals(method.getReturnType()) || Void.class.equals(method.getReturnType()))) {\n                final String attributeName = attributeName(infos, methodName, method.getParameterTypes()[0]);\n                info.setAttribute(new Attribute(attributeName, args[0]));\n                return null;\n            } else if (methodName.startsWith(\"get\") && (args == null || args.length == 0) && methodName.length() > 3) {\n                final String attributeName = attributeName(infos, methodName, method.getReturnType());\n                return info.getAttribute(attributeName);\n            }\n            // operation\n            return info.invoke(methodName, args, getSignature(method));\n        }\n\n        public Object destroy() {\n            for (ConnectionInfo info : infos.values()) {\n                info.clean();\n            }\n            infos.clear();\n            return null;\n        }\n\n        private String[] getSignature(Method method) {\n            String[] args = new String[method.getParameterTypes().length];\n            for (int i = 0; i < method.getParameterTypes().length; i++) {\n                args[i] = method.getParameterTypes()[i].getName();\n            }\n            return args; // note: null should often work...\n        }\n\n        private String attributeName(MBeanInfo infos, String methodName, Class<?> type) {\n            String found = null;\n            String foundBackUp = null; // without checking the type\n            final String attributeName = methodName.substring(3, methodName.length());\n            final String lowerName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4, methodName.length());\n\n            for (MBeanAttributeInfo attribute : infos.getAttributes()) {\n                final String name = attribute.getName();\n                if (attributeName.equals(name)) {\n                    foundBackUp = attributeName;\n                    if (attribute.getType().equals(type.getName())) {\n                        found = name;\n                    }\n                } else if (found == null && ((lowerName.equals(name) && !attributeName.equals(name))\n                    || lowerName.equalsIgnoreCase(name))) {\n                    foundBackUp = name;\n                    if (attribute.getType().equals(type.getName())) {\n                        found = name;\n                    }\n                }\n            }\n\n            if (found == null && foundBackUp == null) {\n                throw new UnsupportedOperationException(\"cannot find attribute \" + attributeName);\n            }\n\n            if (found != null) {\n                return found;\n            }\n            return foundBackUp;\n        }\n\n        private synchronized ConnectionInfo getConnectionInfo(Method method) throws Exception {\n            if (!infos.containsKey(method)) {\n                synchronized (infos) {\n                    if (!infos.containsKey(method)) { // double check for synchro\n                        org.superbiz.dynamic.mbean.ObjectName on = method.getAnnotation(org.superbiz.dynamic.mbean.ObjectName.class);\n                        if (on == null) {\n                            Class<?> current = method.getDeclaringClass();\n                            do {\n                                on = method.getDeclaringClass().getAnnotation(org.superbiz.dynamic.mbean.ObjectName.class);\n                                current = current.getSuperclass();\n                            } while (on == null && current != null);\n                            if (on == null) {\n                                throw new UnsupportedOperationException(\"class or method should define the objectName to use for invocation: \" + method.toGenericString());\n                            }\n                        }\n                        final ConnectionInfo info;\n                        if (on.url().isEmpty()) {\n                            info = new LocalConnectionInfo();\n                            ((LocalConnectionInfo) info).server = ManagementFactory.getPlatformMBeanServer(); // could use an id...\n                        } else {\n                            info = new RemoteConnectionInfo();\n                            final Map<String, String[]> environment = new HashMap<String, String[]>();\n                            if (!on.user().isEmpty()) {\n                                environment.put(JMXConnector.CREDENTIALS, new String[]{ on.user(), on.password() });\n                            }\n                            // ((RemoteConnectionInfo) info).connector = JMXConnectorFactory.newJMXConnector(new JMXServiceURL(on.url()), environment);\n                            ((RemoteConnectionInfo) info).connector = JMXConnectorFactory.connect(new JMXServiceURL(on.url()), environment);\n\n                        }\n                        info.objectName = new ObjectName(on.value());\n\n                        infos.put(method, info);\n                    }\n                }\n            }\n            return infos.get(method);\n        }\n\n        private abstract static class ConnectionInfo {\n            protected ObjectName objectName;\n\n            public abstract void setAttribute(Attribute attribute) throws Exception;\n            public abstract Object getAttribute(String attribute) throws Exception;\n            public abstract Object invoke(String operationName, Object params[], String signature[]) throws Exception;\n            public abstract MBeanInfo getMBeanInfo() throws Exception;\n            public abstract void clean();\n        }\n\n        private static class LocalConnectionInfo extends ConnectionInfo {\n            private MBeanServer server;\n\n            @Override public void setAttribute(Attribute attribute) throws Exception {\n                server.setAttribute(objectName, attribute);\n            }\n\n            @Override public Object getAttribute(String attribute) throws Exception {\n                return server.getAttribute(objectName, attribute);\n            }\n\n            @Override\n            public Object invoke(String operationName, Object[] params, String[] signature) throws Exception {\n                return server.invoke(objectName, operationName, params, signature);\n            }\n\n            @Override public MBeanInfo getMBeanInfo() throws Exception {\n                return server.getMBeanInfo(objectName);\n            }\n\n            @Override public void clean() {\n                // no-op\n            }\n        }\n\n        private static class RemoteConnectionInfo extends ConnectionInfo {\n            private JMXConnector connector;\n            private MBeanServerConnection connection;\n\n            private void before() throws IOException {\n                connection = connector.getMBeanServerConnection();\n            }\n\n            private void after() throws IOException {\n                // no-op\n            }\n\n            @Override public void setAttribute(Attribute attribute) throws Exception {\n                before();\n                connection.setAttribute(objectName, attribute);\n                after();\n            }\n\n            @Override public Object getAttribute(String attribute) throws Exception {\n                before();\n                try {\n                    return connection.getAttribute(objectName, attribute);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override\n            public Object invoke(String operationName, Object[] params, String[] signature) throws Exception {\n                before();\n                try {\n                    return connection.invoke(objectName, operationName, params, signature);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override public MBeanInfo getMBeanInfo() throws Exception {\n                before();\n                try {\n                    return connection.getMBeanInfo(objectName);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override public void clean() {\n                try {\n                    connector.close();\n                } catch (IOException e) {\n                    // no-op\n                }\n            }\n        }\n    }\n\n## Dynamic Proxies    \n\n### DynamicMBeanClient (the dynamic JMX client)\n\n\tpackage org.superbiz.dynamic.mbean;\n\n\timport org.apache.openejb.api.Proxy;\n\timport org.superbiz.dynamic.mbean.DynamicMBeanHandler;\n\timport org.superbiz.dynamic.mbean.ObjectName;\n\n\timport javax.ejb.Singleton;\n\n\t/**\n\t * @author rmannibucau\n\t */\n\t@Singleton\n\t@Proxy(DynamicMBeanHandler.class)\n\t@ObjectName(DynamicMBeanClient.OBJECT_NAME)\n\tpublic interface DynamicMBeanClient {\n\t\tstatic final String OBJECT_NAME = \"test:group=DynamicMBeanClientTest\";\n\n\t\tint getCounter();\n\t\tvoid setCounter(int i);\n\t\tint length(String aString);\n\t}\n\n### DynamicMBeanClient (the dynamic JMX client)\n    package org.superbiz.dynamic.mbean;\n\n    import org.apache.openejb.api.Proxy;\n\n    import javax.annotation.PreDestroy;\n    import javax.ejb.Singleton;\n\n\n    @Singleton\n    @Proxy(DynamicMBeanHandler.class)\n    @ObjectName(value = DynamicRemoteMBeanClient.OBJECT_NAME, url = \"service:jmx:rmi:///jndi/rmi://localhost:8243/jmxrmi\")\n    public interface DynamicRemoteMBeanClient {\n        static final String OBJECT_NAME = \"test:group=DynamicMBeanClientTest\";\n\n        int getCounter();\n        void setCounter(int i);\n        int length(String aString);\n\n        @PreDestroy void clean();\n    }\n\n## The MBean used for the test\n\n### SimpleMBean\n\n\tpackage org.superbiz.dynamic.mbean.simple;\n\n\tpublic interface SimpleMBean {\n\t\tint length(String s);\n\n\t\tint getCounter();\n\t\tvoid setCounter(int c);\n\t}\n\n## Simple\n\n\tpackage org.superbiz.dynamic.mbean.simple;\n\n\tpublic class Simple implements SimpleMBean {\n\t\tprivate int counter = 0;\n\n\t\t@Override public int length(String s) {\n\t\t    if (s == null) {\n\t\t        return 0;\n\t\t    }\n\t\t    return s.length();\n\t\t}\n\n\t\t@Override public int getCounter() {\n\t\t    return counter;\n\t\t}\n\n\t\t@Override public void setCounter(int c) {\n\t\t    counter = c;\n\t\t}\n\t}\n\n## DynamicMBeanClientTest (The test)\n\n    package org.superbiz.dynamic.mbean;\n\n    import org.junit.After;\n    import org.junit.AfterClass;\n    import org.junit.Before;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    import org.superbiz.dynamic.mbean.simple.Simple;\n\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.management.Attribute;\n    import javax.management.ObjectName;\n    import java.lang.management.ManagementFactory;\n\n    import static junit.framework.Assert.assertEquals;\n\n    public class DynamicMBeanClientTest {\n        private static ObjectName objectName;\n        private static EJBContainer container;\n\n        @EJB private DynamicMBeanClient localClient;\n        @EJB private DynamicRemoteMBeanClient remoteClient;\n\n        @BeforeClass public static void start() {\n            container = EJBContainer.createEJBContainer();\n        }\n\n        @Before public void injectAndRegisterMBean() throws Exception {\n            container.getContext().bind(\"inject\", this);\n            objectName = new ObjectName(DynamicMBeanClient.OBJECT_NAME);\n            ManagementFactory.getPlatformMBeanServer().registerMBean(new Simple(), objectName);\n        }\n\n        @After public void unregisterMBean() throws Exception {\n            if (objectName != null) {\n                ManagementFactory.getPlatformMBeanServer().unregisterMBean(objectName);\n            }\n        }\n\n        @Test public void localGet() throws Exception {\n            assertEquals(0, localClient.getCounter());\n            ManagementFactory.getPlatformMBeanServer().setAttribute(objectName, new Attribute(\"Counter\", 5));\n            assertEquals(5, localClient.getCounter());\n        }\n\n        @Test public void localSet() throws Exception {\n            assertEquals(0, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n            localClient.setCounter(8);\n            assertEquals(8, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n        }\n\n        @Test public void localOperation() {\n            assertEquals(7, localClient.length(\"openejb\"));\n        }\n\n        @Test public void remoteGet() throws Exception {\n            assertEquals(0, remoteClient.getCounter());\n            ManagementFactory.getPlatformMBeanServer().setAttribute(objectName, new Attribute(\"Counter\", 5));\n            assertEquals(5, remoteClient.getCounter());\n        }\n\n        @Test public void remoteSet() throws Exception {\n            assertEquals(0, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n            remoteClient.setCounter(8);\n            assertEquals(8, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n        }\n\n        @Test public void remoteOperation() {\n            assertEquals(7, remoteClient.length(\"openejb\"));\n        }\n\n        @AfterClass public static void close() {\n            if (container != null) {\n                container.close();\n            }\n        }\n    }\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-proxy-to-access-mbean"
+      }
+    ],
+    "ear":[
+      {
+        "name":"ear-testing",
+        "readme":"Title: EAR Testing\n\nThe goal of this example is to demonstrate how maven projects might be organized in a more real world style and how testing with OpenEJB can fit into that structure.\n\nThis example takes the basic moviefun code we us in many of examples and splits it into two modules:\n\n - `business-logic`\n - `business-model`\n\nAs the names imply, we keep our `@Entity` beans in the `business-model` module and our session beans in the `business-logic` model.  The tests located and run from the business logic module.\n\n    ear-testing\n    ear-testing/business-logic\n    ear-testing/business-logic/pom.xml\n    ear-testing/business-logic/src/main/java/org/superbiz/logic/Movies.java\n    ear-testing/business-logic/src/main/java/org/superbiz/logic/MoviesImpl.java\n    ear-testing/business-logic/src/main/resources\n    ear-testing/business-logic/src/main/resources/META-INF\n    ear-testing/business-logic/src/main/resources/META-INF/ejb-jar.xml\n    ear-testing/business-logic/src/test/java/org/superbiz/logic/MoviesTest.java\n    ear-testing/business-model\n    ear-testing/business-model/pom.xml\n    ear-testing/business-model/src/main/java/org/superbiz/model/Movie.java\n    ear-testing/business-model/src/main/resources/META-INF/persistence.xml\n    ear-testing/pom.xml\n\n# Project configuration\n\nThe parent pom, trimmed to the minimum, looks like so:\n\n    <project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n      <modelVersion>4.0.0</modelVersion>\n      <groupId>org.superbiz</groupId>\n      <artifactId>myear</artifactId>\n      <version>1.1.0-SNAPSHOT</version>\n\n      <packaging>pom</packaging>\n\n      <modules>\n        <module>business-model</module>\n        <module>business-logic</module>\n      </modules>\n\n      <dependencyManagement>\n        <dependencies>\n          <dependency>\n            <groupId>org.apache.openejb</groupId>\n            <artifactId>javaee-api</artifactId>\n            <version>6.0-2</version>\n          </dependency>\n          <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.8.1</version>\n          </dependency>\n        </dependencies>\n      </dependencyManagement>\n    </project>\n\nThe `business-model/pom.xml` as follows:\n\n    <project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n      <parent>\n        <groupId>org.superbiz</groupId>\n        <artifactId>myear</artifactId>\n        <version>1.1.0-SNAPSHOT</version>\n      </parent>\n\n      <modelVersion>4.0.0</modelVersion>\n\n      <artifactId>business-model</artifactId>\n      <packaging>jar</packaging>\n\n      <dependencies>\n        <dependency>\n          <groupId>org.apache.openejb</groupId>\n          <artifactId>javaee-api</artifactId>\n          <scope>provided</scope>\n        </dependency>\n        <dependency>\n          <groupId>junit</groupId>\n          <artifactId>junit</artifactId>\n          <scope>test</scope>\n        </dependency>\n\n      </dependencies>\n\n    </project>\n\nAnd finally, the `business-logic/pom.xml` which is setup to support embedded testing with OpenEJB:\n\n    <project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n      <parent>\n        <groupId>org.superbiz</groupId>\n        <artifactId>myear</artifactId>\n        <version>1.1.0-SNAPSHOT</version>\n      </parent>\n\n      <modelVersion>4.0.0</modelVersion>\n\n      <artifactId>business-logic</artifactId>\n      <packaging>jar</packaging>\n\n      <dependencies>\n        <dependency>\n          <groupId>org.superbiz</groupId>\n          <artifactId>business-model</artifactId>\n          <version>${project.version}</version>\n        </dependency>\n        <dependency>\n          <groupId>org.apache.openejb</groupId>\n          <artifactId>javaee-api</artifactId>\n          <scope>provided</scope>\n        </dependency>\n        <dependency>\n          <groupId>junit</groupId>\n          <artifactId>junit</artifactId>\n          <scope>test</scope>\n        </dependency>\n        <!--\n        The <scope>test</scope> guarantees that non of your runtime\n        code is dependent on any OpenEJB classes.\n        -->\n        <dependency>\n          <groupId>org.apache.openejb</groupId>\n          <artifactId>openejb-core</artifactId>\n          <version>7.0.0-SNAPSHOT</version>\n          <scope>test</scope>\n        </dependency>\n      </dependencies>\n    </project>\n\n# TestCode\n\nThe test code is the same as always:\n\n    public class MoviesTest extends TestCase {\n\n        public void test() throws Exception {\n            Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n\n            p.put(\"openejb.deployments.classpath.ear\", \"true\");\n\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n\n            p.put(\"movieDatabaseUnmanaged\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabaseUnmanaged.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabaseUnmanaged.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n            p.put(\"movieDatabaseUnmanaged.JtaManaged\", \"false\");\n\n            Context context = new InitialContext(p);\n\n            Movies movies = (Movies) context.lookup(\"MoviesLocal\");\n\n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n\n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n\n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.logic.MoviesTest\n    Apache OpenEJB 7.0.0-SNAPSHOT    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/ear-testing/business-logic\n    INFO - openejb.base = /Users/dblevins/examples/ear-testing/business-logic\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found PersistenceModule in classpath: /Users/dblevins/examples/ear-testing/business-model/target/business-model-1.0.jar\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/ear-testing/business-logic/target/classes\n    INFO - Using 'openejb.deployments.classpath.ear=true'\n    INFO - Beginning load: /Users/dblevins/examples/ear-testing/business-model/target/business-model-1.0.jar\n    INFO - Beginning load: /Users/dblevins/examples/ear-testing/business-logic/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/ear-testing/business-logic/classpath.ear\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Enterprise application \"/Users/dblevins/examples/ear-testing/business-logic/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/ear-testing/business-logic/classpath.ear\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 415ms\n    INFO - Jndi(name=MoviesLocal) --> Ejb(deployment-id=Movies)\n    INFO - Jndi(name=global/classpath.ear/business-logic/Movies!org.superbiz.logic.Movies) --> Ejb(deployment-id=Movies)\n    INFO - Jndi(name=global/classpath.ear/business-logic/Movies) --> Ejb(deployment-id=Movies)\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/ear-testing/business-logic/classpath.ear)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.393 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/ear-testing"
+      }
+    ],
+    "eclipselink":[
+      {
+        "name":"jpa-eclipselink",
+        "readme":"Title: JPA Eclipselink\n\nThis example shows how to configure `persistence.xml` to work with Eclipselink. It uses an `@Entity` class and a `@Stateful` bean to add and delete entities from a database.\n\n## Creating the JPA Entity\n\nThe entity itself is simply a pojo annotated with `@Entity`.  We create one pojo called `Movie` which we can use to hold movie records.\n\n    package org.superbiz.eclipselink;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    \n    @Entity\n    public class Movie {\n    \n        @Id\n        @GeneratedValue(strategy = GenerationType.AUTO)\n        private long id;\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Database Operations\n\nThis is the bean responsible for database operations; it allows us to persist or delete entities.\nFor more information we recommend you to see [injection-of-entitymanager](http://tomee.apache.org/examples-trunk/injection-of-entitymanager/README.html)\n\n\n    package org.superbiz.eclipselink;\n    \n    import javax.ejb.Stateful;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## Persistence.xml with EclipseLink configuration\n\nThis operation is too easy, just set the `provider` to `org.eclipse.persistence.jpa.PersistenceProvider` and add additional properties to the persistence unit. \nThe example has followed a strategy that allows the creation of tables in a HSQL database.\nFor a complete list of persistence unit properties see [here](http://www.eclipse.org/eclipselink/api/2.4/org/eclipse/persistence/config/PersistenceUnitProperties.html)\n\n    <persistence version=\"1.0\"\n                 xmlns=\"http://java.sun.com/xml/ns/persistence\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\">\n      <persistence-unit name=\"movie-unit\">\n        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <properties>\n          <property name=\"eclipselink.target-database\" value=\"org.eclipse.persistence.platform.database.HSQLPlatform\"/>\n          <property name=\"eclipselink.ddl-generation\" value=\"create-tables\"/>\n          <property name=\"eclipselink.ddl-generation.output-mode\" value=\"database\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n    \n\n## MoviesTest\n\nTesting JPA is quite easy, we can simply use the `EJBContainer` API to create a container in our test case.\n\n    package org.superbiz.eclipselink;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.List;\n    import java.util.Properties;\n    \n    /**\n     * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $\n     */\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            final Context context = EJBContainer.createEJBContainer(p).getContext();\n    \n            Movies movies = (Movies) context.lookup(\"java:global/jpa-eclipselink/Movies\");\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n# Running\n\nWhen we run our test case we should see output similar to the following.    \n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.eclipselink.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/jpa-eclipselink\n    INFO - openejb.base = /Users/dblevins/examples/jpa-eclipselink\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/jpa-eclipselink/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/jpa-eclipselink/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/jpa-eclipselink\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.eclipselink.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit, provider=org.eclipse.persistence.jpa.PersistenceProvider)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/jpa-eclipselink\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/jpa-eclipselink\n    INFO - PersistenceUnit(name=movie-unit, provider=org.eclipse.persistence.jpa.PersistenceProvider) - provider time 511ms\n    INFO - Jndi(name=\"java:global/jpa-eclipselink/Movies!org.superbiz.eclipselink.Movies\")\n    INFO - Jndi(name=\"java:global/jpa-eclipselink/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule225280863/org.superbiz.eclipselink.MoviesTest!org.superbiz.eclipselink.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule225280863/org.superbiz.eclipselink.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.eclipselink.MoviesTest, ejb-name=org.superbiz.eclipselink.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.eclipselink.MoviesTest, ejb-name=org.superbiz.eclipselink.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/jpa-eclipselink)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.188 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    ",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jpa-eclipselink"
+      },
+      {
+        "name":"tomee-jersey-eclipselink",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/tomee-jersey-eclipselink"
+      }
+    ],
+    "ejb":[
+      {
+        "name":"rest-on-ejb",
+        "readme":"Title: REST on EJB\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## User\n\n    package org.superbiz.rest;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n    import javax.persistence.NamedQueries;\n    import javax.persistence.NamedQuery;\n    import javax.xml.bind.annotation.XmlRootElement;\n    \n    @Entity\n    @NamedQueries({\n            @NamedQuery(name = \"user.list\", query = \"select u from User u\")\n    }\n\n## UserService\n\n    package org.superbiz.rest;\n    \n    import javax.ejb.Lock;\n    import javax.ejb.LockType;\n    import javax.ejb.Singleton;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.ws.rs.DELETE;\n    import javax.ws.rs.DefaultValue;\n    import javax.ws.rs.GET;\n    import javax.ws.rs.POST;\n    import javax.ws.rs.PUT;\n    import javax.ws.rs.Path;\n    import javax.ws.rs.PathParam;\n    import javax.ws.rs.Produces;\n    import javax.ws.rs.QueryParam;\n    import javax.ws.rs.core.MediaType;\n    import javax.ws.rs.core.Response;\n    import java.util.ArrayList;\n    import java.util.List;\n    \n    /**\n     * Outputs are copied because of the enhancement of OpenJPA.\n     *\n     */\n    @Singleton\n    @Lock(LockType.WRITE)\n    @Path(\"/user\")\n    @Produces(MediaType.APPLICATION_XML)\n    public class UserService {\n        @PersistenceContext\n        private EntityManager em;\n    \n        @Path(\"/create\")\n        @PUT\n        public User create(@QueryParam(\"name\") String name,\n                           @QueryParam(\"pwd\") String pwd,\n                           @QueryParam(\"mail\") String mail) {\n            User user = new User();\n            user.setFullname(name);\n            user.setPassword(pwd);\n            user.setEmail(mail);\n            em.persist(user);\n            return user;\n        }\n    \n        @Path(\"/list\")\n        @GET\n        public List<User> list(@QueryParam(\"first\") @DefaultValue(\"0\") int first,\n                               @QueryParam(\"max\") @DefaultValue(\"20\") int max) {\n            List<User> users = new ArrayList<User>();\n            List<User> found = em.createNamedQuery(\"user.list\", User.class).setFirstResult(first).setMaxResults(max).getResultList();\n            for (User u : found) {\n                users.add(u.copy());\n            }\n            return users;\n        }\n    \n        @Path(\"/show/{id}\")\n        @GET\n        public User find(@PathParam(\"id\") long id) {\n            User user = em.find(User.class, id);\n            if (user == null) {\n                return null;\n            }\n            return user.copy();\n        }\n    \n        @Path(\"/delete/{id}\")\n        @DELETE\n        public void delete(@PathParam(\"id\") long id) {\n            User user = em.find(User.class, id);\n            if (user != null) {\n                em.remove(user);\n            }\n        }\n    \n        @Path(\"/update/{id}\")\n        @POST\n        public Response update(@PathParam(\"id\") long id,\n                               @QueryParam(\"name\") String name,\n                               @QueryParam(\"pwd\") String pwd,\n                               @QueryParam(\"mail\") String mail) {\n            User user = em.find(User.class, id);\n            if (user == null) {\n                throw new IllegalArgumentException(\"user id \" + id + \" not found\");\n            }\n    \n            user.setFullname(name);\n            user.setPassword(pwd);\n            user.setEmail(mail);\n            em.merge(user);\n    \n            return Response.ok(user.copy()).build();\n        }\n    }\n\n## persistence.xml\n\n    <persistence version=\"2.0\"\n                 xmlns=\"http://java.sun.com/xml/ns/persistence\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence\n                           http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">\n      <persistence-unit name=\"user\">\n        <jta-data-source>My DataSource</jta-data-source>\n        <non-jta-data-source>My Unmanaged DataSource</non-jta-data-source>\n        <class>org.superbiz.rest.User</class>\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## UserServiceTest\n\n    package org.superbiz.rest;\n    \n    import org.apache.cxf.jaxrs.client.WebClient;\n    import org.apache.openejb.OpenEjbContainer;\n    import org.junit.AfterClass;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.naming.NamingException;\n    import javax.ws.rs.core.Response;\n    import javax.xml.bind.JAXBContext;\n    import javax.xml.bind.Unmarshaller;\n    import java.io.InputStream;\n    import java.util.ArrayList;\n    import java.util.List;\n    import java.util.Properties;\n    \n    import static junit.framework.Assert.assertEquals;\n    import static junit.framework.Assert.assertNull;\n    import static junit.framework.Assert.fail;\n    \n    public class UserServiceTest {\n        private static Context context;\n        private static UserService service;\n        private static List<User> users = new ArrayList<User>();\n    \n        @BeforeClass\n        public static void start() throws NamingException {\n            Properties properties = new Properties();\n            properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, \"true\");\n            context = EJBContainer.createEJBContainer(properties).getContext();\n    \n            // create some records\n            service = (UserService) context.lookup(\"java:global/rest-on-ejb/UserService\");\n            users.add(service.create(\"foo\", \"foopwd\", \"foo@foo.com\"));\n            users.add(service.create(\"bar\", \"barpwd\", \"bar@bar.com\"));\n        }\n    \n        @AfterClass\n        public static void close() throws NamingException {\n            if (context != null) {\n                context.close();\n            }\n        }\n    \n        @Test\n        public void create() {\n            int expected = service.list(0, 100).size() + 1;\n            Response response = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/create\")\n                    .query(\"name\", \"dummy\")\n                    .query(\"pwd\", \"unbreakable\")\n                    .query(\"mail\", \"foo@bar.fr\")\n                    .put(null);\n            List<User> list = service.list(0, 100);\n            for (User u : list) {\n                if (!users.contains(u)) {\n                    service.delete(u.getId());\n                    return;\n                }\n            }\n            fail(\"user was not added\");\n        }\n    \n        @Test\n        public void delete() throws Exception {\n            User user = service.create(\"todelete\", \"dontforget\", \"delete@me.com\");\n    \n            WebClient.create(\"http://localhost:4204\").path(\"/user/delete/\" + user.getId()).delete();\n    \n            user = service.find(user.getId());\n            assertNull(user);\n        }\n    \n        @Test\n        public void show() {\n            User user = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/show/\" + users.iterator().next().getId())\n                    .get(User.class);\n            assertEquals(\"foo\", user.getFullname());\n            assertEquals(\"foopwd\", user.getPassword());\n            assertEquals(\"foo@foo.com\", user.getEmail());\n        }\n    \n        @Test\n        public void list() throws Exception {\n            String users = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/list\")\n                    .get(String.class);\n            assertEquals(\n                    \"<users>\" +\n                            \"<user>\" +\n                            \"<email>foo@foo.com</email>\" +\n                            \"<fullname>foo</fullname>\" +\n                            \"<id>1</id>\" +\n                            \"<password>foopwd</password>\" +\n                            \"</user>\" +\n                            \"<user>\" +\n                            \"<email>bar@bar.com</email>\" +\n                            \"<fullname>bar</fullname>\" +\n                            \"<id>2</id>\" +\n                            \"<password>barpwd</password>\" +\n                            \"</user>\" +\n                            \"</users>\", users);\n        }\n    \n        @Test\n        public void update() throws Exception {\n            User created = service.create(\"name\", \"pwd\", \"mail\");\n            Response response = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/update/\" + created.getId())\n                    .query(\"name\", \"corrected\")\n                    .query(\"pwd\", \"userpwd\")\n                    .query(\"mail\", \"it@is.ok\")\n                    .post(null);\n    \n            JAXBContext ctx = JAXBContext.newInstance(User.class);\n            Unmarshaller unmarshaller = ctx.createUnmarshaller();\n            User modified = (User) unmarshaller.unmarshal(InputStream.class.cast(response.getEntity()));\n    \n            assertEquals(\"corrected\", modified.getFullname());\n            assertEquals(\"userpwd\", modified.getPassword());\n            assertEquals(\"it@is.ok\", modified.getEmail());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.rest.UserServiceTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/rest-on-ejb\n    INFO - openejb.base = /Users/dblevins/examples/rest-on-ejb\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/rest-on-ejb/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/rest-on-ejb/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/rest-on-ejb\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean UserService: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.rest.UserServiceTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=user)\n    INFO - Configuring Service(id=Default JDBC Database, type=Resource, provider-id=Default JDBC Database)\n    INFO - Auto-creating a Resource with id 'Default JDBC Database' of type 'DataSource for 'user'.\n    INFO - Configuring Service(id=Default Unmanaged JDBC Database, type=Resource, provider-id=Default Unmanaged JDBC Database)\n    INFO - Auto-creating a Resource with id 'Default Unmanaged JDBC Database' of type 'DataSource for 'user'.\n    INFO - Adjusting PersistenceUnit user <jta-data-source> to Resource ID 'Default JDBC Database' from 'My DataSource'\n    INFO - Adjusting PersistenceUnit user <non-jta-data-source> to Resource ID 'Default Unmanaged JDBC Database' from 'My Unmanaged DataSource'\n    INFO - Enterprise application \"/Users/dblevins/examples/rest-on-ejb\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/rest-on-ejb\n    INFO - PersistenceUnit(name=user, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 407ms\n    INFO - Jndi(name=\"java:global/rest-on-ejb/UserService!org.superbiz.rest.UserService\")\n    INFO - Jndi(name=\"java:global/rest-on-ejb/UserService\")\n    INFO - Jndi(name=\"java:global/EjbModule1789767313/org.superbiz.rest.UserServiceTest!org.superbiz.rest.UserServiceTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1789767313/org.superbiz.rest.UserServiceTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.rest.UserServiceTest, ejb-name=org.superbiz.rest.UserServiceTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=UserService, ejb-name=UserService, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.rest.UserServiceTest, ejb-name=org.superbiz.rest.UserServiceTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=UserService, ejb-name=UserService, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/rest-on-ejb)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Creating ServerService(id=cxf-rs)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    WARN - Query \"select u from User u\" is removed from cache  excluded permanently. Query \"select u from User u\" is not cached because it uses pagination..\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.102 sec\n    \n    Results :\n    \n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-on-ejb"
+      },
+      {
+        "name":"jsf-managedBean-and-ejb",
+        "readme":"Title: JSF Application that uses managed-bean and ejb\n\nThis is a simple web-app showing how to use dependency injection in JSF managed beans using TomEE.\n\nIt contains a Local Stateless session bean `CalculatorImpl` which adds two numbers and returns the result.\nThe application also contains a JSF managed bean `CalculatorBean`, which uses the EJB to add two numbers\nand display the results to the user. The EJB is injected in the managed bean using `@EJB` annotation.\n\n\n## A little note on the setup:\n\nYou could run this in the latest Apache TomEE [snapshot](https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/)\n\nAs for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the\nwar. In maven terms, they would be with scope 'provided'\n\nAlso note that we use servlet 2.5 declaration in web.xml\n    \n    <web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n    xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n    version=\"2.5\">\n\nAnd we use 2.0 version of faces-config\n\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\n\nThe complete source code is provided below but let's break down to look at some smaller snippets and see  how it works.\n\nWe'll first declare the `FacesServlet` in the `web.xml`\n\n      <servlet>\n        <servlet-name>Faces Servlet</servlet-name>\n        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n        <load-on-startup>1</load-on-startup>\n      </servlet>\n\n`FacesServlet` acts as the master controller.\n\nWe'll then create the `calculator.xhtml` file.\n\n           <h:outputText value='Enter first number'/>\n           <h:inputText value='#{calculatorBean.x}'/>\n           <h:outputText value='Enter second number'/>\n           <h:inputText value='#{calculatorBean.y}'/>\n           <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n\n\nNotice how we've use the bean here.\nBy default it is the simple class name of the managed bean.\n\nWhen a request comes in, the bean is instantiated and placed in the appropriate scope.\nBy default, the bean is placed in the request scope.\n\n            <h:inputText value='#{calculatorBean.x}'/>\n\nHere, getX() method of calculatorBean is invoked and the resulting value is displayed.\nx being a Double, we rightly should see 0.0 displayed.\n\nWhen you change the value and submit the form, these entered values are bound using the setters\nin the bean and then the commandButton-action method is invoked.\n\nIn this case, `CalculatorBean#add()` is invoked.\n\n`Calculator#add()` delegates the work to the ejb, gets the result, stores it\nand then instructs what view is to be rendered.\n\nYou're right. The return value \"success\" is checked up in faces-config navigation-rules\nand the respective page is rendered.\n\nIn our case, `result.xhtml` page is rendered.\n\nThe request scoped `calculatorBean` is available here, and we use EL to display the values.\n\n## Source\n\n## Calculator\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Local;\n    \n    @Local\n    public interface Calculator {\n        public double add(double x, double y);\n    }\n\n\n## CalculatorBean\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.EJB;\n    import javax.faces.bean.ManagedBean;\n\n    @ManagedBean\n    public class CalculatorBean {\n        @EJB\n        Calculator calculator;\n        private double x;\n        private double y;\n        private double result;\n    \n        public double getX() {\n            return x;\n        }\n    \n        public void setX(double x) {\n            this.x = x;\n        }\n    \n        public double getY() {\n            return y;\n        }\n    \n        public void setY(double y) {\n            this.y = y;\n        }\n    \n        public double getResult() {\n            return result;\n        }\n    \n        public void setResult(double result) {\n            this.result = result;\n        }\n    \n        public String add() {\n            result = calculator.add(x, y);\n            return \"success\";\n        }\n    }\n\n## CalculatorImpl\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Stateless;\n    \n    @Stateless\n    public class CalculatorImpl implements Calculator {\n    \n        public double add(double x, double y) {\n            return x + y;\n        }\n    }\n\n\n# web.xml\n\n    <?xml version=\"1.0\"?>\n\n        <web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n        xmlns=\"http://java.sun.com/xml/ns/javaee\"\n        xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n        xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n        version=\"2.5\">\n\n        <description>MyProject web.xml</description>\n\n        <!-- Faces Servlet -->\n        <servlet>\n            <servlet-name>Faces Servlet</servlet-name>\n            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n            <load-on-startup>1</load-on-startup>\n        </servlet>\n\n        <!-- Faces Servlet Mapping -->\n        <servlet-mapping>\n           <servlet-name>Faces Servlet</servlet-name>\n            <url-pattern>*.jsf</url-pattern>\n        </servlet-mapping>\n\n        <!-- Welcome files -->\n        <welcome-file-list>\n           <welcome-file>index.jsp</welcome-file>\n           <welcome-file>index.html</welcome-file>\n        </welcome-file-list>\n        </web-app>\n\n    \n##Calculator.xhtml\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n    <html xmlns=\"http://www.w3.org/1999/xhtml\"\n    xmlns:f=\"http://java.sun.com/jsf/core\"\n    xmlns:h=\"http://java.sun.com/jsf/html\">\n\n\n    <h:body bgcolor=\"white\">\n        <f:view>\n            <h:form>\n                <h:panelGrid columns=\"2\">\n                <h:outputText value='Enter first number'/>\n               <h:inputText value='#{calculatorBean.x}'/>\n                <h:outputText value='Enter second number'/>\n                <h:inputText value='#{calculatorBean.y}'/>\n               <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n                </h:panelGrid>\n            </h:form>\n       </f:view>\n    </h:body>\n    </html>\n\n    \n##Result.xhtml\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n    <html xmlns=\"http://www.w3.org/1999/xhtml\"\n    xmlns:f=\"http://java.sun.com/jsf/core\"\n    xmlns:h=\"http://java.sun.com/jsf/html\">\n\n    <h:body>\n        <f:view>\n            <h:form id=\"mainForm\">\n                <h2><h:outputText value=\"Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }\"/></h2>\n                <h:commandLink action=\"back\">\n                <h:outputText value=\"Home\"/>\n                </h:commandLink>\n            </h:form>\n        </f:view>\n    </h:body>\n    </html>\n    \n#faces-config.xml\n\n    <?xml version=\"1.0\"?>\n    <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n    version=\"2.0\">\n\n    <navigation-rule>\n        <from-view-id>/calculator.xhtml</from-view-id>\n        <navigation-case>\n            <from-outcome>success</from-outcome>\n            <to-view-id>/result.xhtml</to-view-id>\n        </navigation-case>\n    </navigation-rule>\n\n    <navigation-rule>\n        <from-view-id>/result.xhtml</from-view-id>\n        <navigation-case>\n            <from-outcome>back</from-outcome>\n            <to-view-id>/calculator.xhtml</to-view-id>\n        </navigation-case>\n    </navigation-rule>\n    </faces-config>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jsf-managedBean-and-ejb"
+      },
+      {
+        "name":"ejb-examples",
+        "readme":"Title: EJB Examples\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AnnotatedEJB\n\n    package org.superbiz.servlet;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.LocalBean;\n    import javax.ejb.Stateless;\n    import javax.sql.DataSource;\n    \n    @Stateless\n    @LocalBean\n    public class AnnotatedEJB implements AnnotatedEJBLocal, AnnotatedEJBRemote {\n        @Resource\n        private DataSource ds;\n    \n        private String name = \"foo\";\n    \n        public String getName() {\n            return name;\n        }\n    \n        public void setName(String name) {\n            this.name = name;\n        }\n    \n        public DataSource getDs() {\n            return ds;\n        }\n    \n        public void setDs(DataSource ds) {\n            this.ds = ds;\n        }\n    \n        public String toString() {\n            return \"AnnotatedEJB[name=\" + name + \"]\";\n        }\n    }\n\n## AnnotatedEJBLocal\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.Local;\n    import javax.sql.DataSource;\n    \n    @Local\n    public interface AnnotatedEJBLocal {\n        String getName();\n    \n        void setName(String name);\n    \n        DataSource getDs();\n    \n        void setDs(DataSource ds);\n    }\n\n## AnnotatedEJBRemote\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.Remote;\n    \n    @Remote\n    public interface AnnotatedEJBRemote {\n        String getName();\n    \n        void setName(String name);\n    }\n\n## AnnotatedServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.EJB;\n    import javax.naming.InitialContext;\n    import javax.naming.NamingException;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import javax.sql.DataSource;\n    import java.io.IOException;\n    \n    public class AnnotatedServlet extends HttpServlet {\n        @EJB\n        private AnnotatedEJBLocal localEJB;\n    \n        @EJB\n        private AnnotatedEJBRemote remoteEJB;\n    \n        @EJB\n        private AnnotatedEJB localbeanEJB;\n    \n        @Resource\n        private DataSource ds;\n    \n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            out.println(\"LocalBean EJB\");\n            out.println(\"@EJB=\" + localbeanEJB);\n            if (localbeanEJB != null) {\n                out.println(\"@EJB.getName()=\" + localbeanEJB.getName());\n                out.println(\"@EJB.getDs()=\" + localbeanEJB.getDs());\n            }\n            out.println(\"JNDI=\" + lookupField(\"localbeanEJB\"));\n            out.println();\n    \n            out.println(\"Local EJB\");\n            out.println(\"@EJB=\" + localEJB);\n            if (localEJB != null) {\n                out.println(\"@EJB.getName()=\" + localEJB.getName());\n                out.println(\"@EJB.getDs()=\" + localEJB.getDs());\n            }\n            out.println(\"JNDI=\" + lookupField(\"localEJB\"));\n            out.println();\n    \n            out.println(\"Remote EJB\");\n            out.println(\"@EJB=\" + remoteEJB);\n            if (localEJB != null) {\n                out.println(\"@EJB.getName()=\" + remoteEJB.getName());\n            }\n            out.println(\"JNDI=\" + lookupField(\"remoteEJB\"));\n            out.println();\n    \n    \n            out.println(\"DataSource\");\n            out.println(\"@Resource=\" + ds);\n            out.println(\"JNDI=\" + lookupField(\"ds\"));\n        }\n    \n        private Object lookupField(String name) {\n            try {\n                return new InitialContext().lookup(\"java:comp/env/\" + getClass().getName() + \"/\" + name);\n            } catch (NamingException e) {\n                return null;\n            }\n        }\n    }\n\n## ClientHandler\n\n    package org.superbiz.servlet;\n    \n    import javax.xml.ws.handler.Handler;\n    import javax.xml.ws.handler.MessageContext;\n    \n    public class ClientHandler implements Handler {\n        public boolean handleMessage(MessageContext messageContext) {\n            WebserviceServlet.write(\"    ClientHandler handleMessage\");\n            return true;\n        }\n    \n        public void close(MessageContext messageContext) {\n            WebserviceServlet.write(\"    ClientHandler close\");\n        }\n    \n        public boolean handleFault(MessageContext messageContext) {\n            WebserviceServlet.write(\"    ClientHandler handleFault\");\n            return true;\n        }\n    }\n\n## HelloEjb\n\n    package org.superbiz.servlet;\n    \n    import javax.jws.WebService;\n    \n    @WebService(targetNamespace = \"http://examples.org/wsdl\")\n    public interface HelloEjb {\n        String hello(String name);\n    }\n\n## HelloEjbService\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.Stateless;\n    import javax.jws.HandlerChain;\n    import javax.jws.WebService;\n    \n    @WebService(\n            portName = \"HelloEjbPort\",\n            serviceName = \"HelloEjbService\",\n            targetNamespace = \"http://examples.org/wsdl\",\n            endpointInterface = \"org.superbiz.servlet.HelloEjb\"\n    )\n    @HandlerChain(file = \"server-handlers.xml\")\n    @Stateless\n    public class HelloEjbService implements HelloEjb {\n        public String hello(String name) {\n            WebserviceServlet.write(\"                HelloEjbService hello(\" + name + \")\");\n            if (name == null) name = \"World\";\n            return \"Hello \" + name + \" from EJB Webservice!\";\n        }\n    }\n\n## HelloPojo\n\n    package org.superbiz.servlet;\n    \n    import javax.jws.WebService;\n    \n    @WebService(targetNamespace = \"http://examples.org/wsdl\")\n    public interface HelloPojo {\n        String hello(String name);\n    }\n\n## HelloPojoService\n\n    package org.superbiz.servlet;\n    \n    import javax.jws.HandlerChain;\n    import javax.jws.WebService;\n    \n    @WebService(\n            portName = \"HelloPojoPort\",\n            serviceName = \"HelloPojoService\",\n            targetNamespace = \"http://examples.org/wsdl\",\n            endpointInterface = \"org.superbiz.servlet.HelloPojo\"\n    )\n    @HandlerChain(file = \"server-handlers.xml\")\n    public class HelloPojoService implements HelloPojo {\n        public String hello(String name) {\n            WebserviceServlet.write(\"                HelloPojoService hello(\" + name + \")\");\n            if (name == null) name = \"World\";\n            return \"Hello \" + name + \" from Pojo Webservice!\";\n        }\n    }\n\n## JndiServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.naming.NameClassPair;\n    import javax.naming.NamingException;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import java.io.IOException;\n    import java.util.Collections;\n    import java.util.Map;\n    import java.util.TreeMap;\n    \n    public class JndiServlet extends HttpServlet {\n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            Map<String, Object> bindings = new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER);\n            try {\n                Context context = (Context) new InitialContext().lookup(\"java:comp/\");\n                addBindings(\"\", bindings, context);\n            } catch (NamingException e) {\n                throw new ServletException(e);\n            }\n    \n            out.println(\"JNDI Context:\");\n            for (Map.Entry<String, Object> entry : bindings.entrySet()) {\n                if (entry.getValue() != null) {\n                    out.println(\"  \" + entry.getKey() + \"=\" + entry.getValue());\n                } else {\n                    out.println(\"  \" + entry.getKey());\n                }\n            }\n        }\n    \n        private void addBindings(String path, Map<String, Object> bindings, Context context) {\n            try {\n                for (NameClassPair pair : Collections.list(context.list(\"\"))) {\n                    String name = pair.getName();\n                    String className = pair.getClassName();\n                    if (\"org.apache.naming.resources.FileDirContext$FileResource\".equals(className)) {\n                        bindings.put(path + name, \"<file>\");\n                    } else {\n                        try {\n                            Object value = context.lookup(name);\n                            if (value instanceof Context) {\n                                Context nextedContext = (Context) value;\n                                bindings.put(path + name, \"\");\n                                addBindings(path + name + \"/\", bindings, nextedContext);\n                            } else {\n                                bindings.put(path + name, value);\n                            }\n                        } catch (NamingException e) {\n                            // lookup failed\n                            bindings.put(path + name, \"ERROR: \" + e.getMessage());\n                        }\n                    }\n                }\n            } catch (NamingException e) {\n                bindings.put(path, \"ERROR: list bindings threw an exception: \" + e.getMessage());\n            }\n        }\n    }\n\n## JpaBean\n\n    package org.superbiz.servlet;\n    \n    import javax.persistence.Column;\n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    \n    @Entity\n    public class JpaBean {\n        @Id\n        @GeneratedValue(strategy = GenerationType.IDENTITY)\n        @Column(name = \"id\")\n        private int id;\n    \n        @Column(name = \"name\")\n        private String name;\n    \n        public int getId() {\n            return id;\n        }\n    \n        public String getName() {\n            return name;\n        }\n    \n        public void setName(String name) {\n            this.name = name;\n        }\n    \n    \n        public String toString() {\n            return \"[JpaBean id=\" + id + \", name=\" + name + \"]\";\n        }\n    }\n\n## JpaServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.persistence.EntityManager;\n    import javax.persistence.EntityManagerFactory;\n    import javax.persistence.EntityTransaction;\n    import javax.persistence.PersistenceUnit;\n    import javax.persistence.Query;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import java.io.IOException;\n    \n    public class JpaServlet extends HttpServlet {\n        @PersistenceUnit(name = \"jpa-example\")\n        private EntityManagerFactory emf;\n    \n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            out.println(\"@PersistenceUnit=\" + emf);\n    \n            EntityManager em = emf.createEntityManager();\n            EntityTransaction transaction = em.getTransaction();\n            transaction.begin();\n    \n            JpaBean jpaBean = new JpaBean();\n            jpaBean.setName(\"JpaBean\");\n            em.persist(jpaBean);\n    \n            transaction.commit();\n            transaction.begin();\n    \n            Query query = em.createQuery(\"SELECT j FROM JpaBean j WHERE j.name='JpaBean'\");\n            jpaBean = (JpaBean) query.getSingleResult();\n            out.println(\"Loaded \" + jpaBean);\n    \n            em.remove(jpaBean);\n    \n            transaction.commit();\n            transaction.begin();\n    \n            query = em.createQuery(\"SELECT count(j) FROM JpaBean j WHERE j.name='JpaBean'\");\n            int count = ((Number) query.getSingleResult()).intValue();\n            if (count == 0) {\n                out.println(\"Removed \" + jpaBean);\n            } else {\n                out.println(\"ERROR: unable to remove\" + jpaBean);\n            }\n    \n            transaction.commit();\n        }\n    }\n\n## ResourceBean\n\n    package org.superbiz.servlet;\n    \n    public class ResourceBean {\n        private String value;\n    \n        public String getValue() {\n            return value;\n        }\n    \n        public void setValue(String value) {\n            this.value = value;\n        }\n    \n        public String toString() {\n            return \"[ResourceBean \" + value + \"]\";\n        }\n    }\n\n## RunAsServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import java.io.IOException;\n    import java.security.Principal;\n    \n    public class RunAsServlet extends HttpServlet {\n        @EJB\n        private SecureEJBLocal secureEJBLocal;\n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            out.println(\"Servlet\");\n            Principal principal = request.getUserPrincipal();\n            if (principal != null) {\n                out.println(\"Servlet.getUserPrincipal()=\" + principal + \" [\" + principal.getName() + \"]\");\n            } else {\n                out.println(\"Servlet.getUserPrincipal()=<null>\");\n            }\n            out.println(\"Servlet.isCallerInRole(\\\"user\\\")=\" + request.isUserInRole(\"user\"));\n            out.println(\"Servlet.isCallerInRole(\\\"manager\\\")=\" + request.isUserInRole(\"manager\"));\n            out.println(\"Servlet.isCallerInRole(\\\"fake\\\")=\" + request.isUserInRole(\"fake\"));\n            out.println();\n    \n            out.println(\"@EJB=\" + secureEJBLocal);\n            if (secureEJBLocal != null) {\n                principal = secureEJBLocal.getCallerPrincipal();\n                if (principal != null) {\n                    out.println(\"@EJB.getCallerPrincipal()=\" + principal + \" [\" + principal.getName() + \"]\");\n                } else {\n                    out.println(\"@EJB.getCallerPrincipal()=<null>\");\n                }\n                out.println(\"@EJB.isCallerInRole(\\\"user\\\")=\" + secureEJBLocal.isCallerInRole(\"user\"));\n                out.println(\"@EJB.isCallerInRole(\\\"manager\\\")=\" + secureEJBLocal.isCallerInRole(\"manager\"));\n                out.println(\"@EJB.isCallerInRole(\\\"fake\\\")=\" + secureEJBLocal.isCallerInRole(\"fake\"));\n    \n                try {\n                    secureEJBLocal.allowUserMethod();\n                    out.println(\"@EJB.allowUserMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowUserMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.allowManagerMethod();\n                    out.println(\"@EJB.allowManagerMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowManagerMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.allowFakeMethod();\n                    out.println(\"@EJB.allowFakeMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowFakeMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.denyAllMethod();\n                    out.println(\"@EJB.denyAllMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.denyAllMethod() DENIED\");\n                }\n            }\n            out.println();\n        }\n    }\n\n## SecureEJB\n\n    package org.superbiz.servlet;\n    \n    import javax.annotation.Resource;\n    import javax.annotation.security.DeclareRoles;\n    import javax.annotation.security.DenyAll;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.SessionContext;\n    import javax.ejb.Stateless;\n    import java.security.Principal;\n    \n    @Stateless\n    @DeclareRoles({\"user\", \"manager\", \"fake\"})\n    public class SecureEJB implements SecureEJBLocal {\n        @Resource\n        private SessionContext context;\n    \n        public Principal getCallerPrincipal() {\n            return context.getCallerPrincipal();\n        }\n    \n        public boolean isCallerInRole(String role) {\n            return context.isCallerInRole(role);\n        }\n    \n        @RolesAllowed(\"user\")\n        public void allowUserMethod() {\n        }\n    \n        @RolesAllowed(\"manager\")\n        public void allowManagerMethod() {\n        }\n    \n        @RolesAllowed(\"fake\")\n        public void allowFakeMethod() {\n        }\n    \n        @DenyAll\n        public void denyAllMethod() {\n        }\n    \n        public String toString() {\n            return \"SecureEJB[userName=\" + getCallerPrincipal() + \"]\";\n        }\n    }\n\n## SecureEJBLocal\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.Local;\n    import java.security.Principal;\n    \n    @Local\n    public interface SecureEJBLocal {\n        Principal getCallerPrincipal();\n    \n        boolean isCallerInRole(String role);\n    \n        void allowUserMethod();\n    \n        void allowManagerMethod();\n    \n        void allowFakeMethod();\n    \n        void denyAllMethod();\n    }\n\n## SecureServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import java.io.IOException;\n    import java.security.Principal;\n    \n    public class SecureServlet extends HttpServlet {\n        @EJB\n        private SecureEJBLocal secureEJBLocal;\n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            out.println(\"Servlet\");\n            Principal principal = request.getUserPrincipal();\n            if (principal != null) {\n                out.println(\"Servlet.getUserPrincipal()=\" + principal + \" [\" + principal.getName() + \"]\");\n            } else {\n                out.println(\"Servlet.getUserPrincipal()=<null>\");\n            }\n            out.println(\"Servlet.isCallerInRole(\\\"user\\\")=\" + request.isUserInRole(\"user\"));\n            out.println(\"Servlet.isCallerInRole(\\\"manager\\\")=\" + request.isUserInRole(\"manager\"));\n            out.println(\"Servlet.isCallerInRole(\\\"fake\\\")=\" + request.isUserInRole(\"fake\"));\n            out.println();\n    \n            out.println(\"@EJB=\" + secureEJBLocal);\n            if (secureEJBLocal != null) {\n                principal = secureEJBLocal.getCallerPrincipal();\n                if (principal != null) {\n                    out.println(\"@EJB.getCallerPrincipal()=\" + principal + \" [\" + principal.getName() + \"]\");\n                } else {\n                    out.println(\"@EJB.getCallerPrincipal()=<null>\");\n                }\n                out.println(\"@EJB.isCallerInRole(\\\"user\\\")=\" + secureEJBLocal.isCallerInRole(\"user\"));\n                out.println(\"@EJB.isCallerInRole(\\\"manager\\\")=\" + secureEJBLocal.isCallerInRole(\"manager\"));\n                out.println(\"@EJB.isCallerInRole(\\\"fake\\\")=\" + secureEJBLocal.isCallerInRole(\"fake\"));\n    \n                try {\n                    secureEJBLocal.allowUserMethod();\n                    out.println(\"@EJB.allowUserMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowUserMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.allowManagerMethod();\n                    out.println(\"@EJB.allowManagerMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowManagerMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.allowFakeMethod();\n                    out.println(\"@EJB.allowFakeMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowFakeMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.denyAllMethod();\n                    out.println(\"@EJB.denyAllMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.denyAllMethod() DENIED\");\n                }\n            }\n            out.println();\n        }\n    }\n\n## ServerHandler\n\n    package org.superbiz.servlet;\n    \n    import javax.xml.ws.handler.Handler;\n    import javax.xml.ws.handler.MessageContext;\n    \n    public class ServerHandler implements Handler {\n        public boolean handleMessage(MessageContext messageContext) {\n            WebserviceServlet.write(\"        ServerHandler handleMessage\");\n            return true;\n        }\n    \n        public void close(MessageContext messageContext) {\n            WebserviceServlet.write(\"        ServerHandler close\");\n        }\n    \n        public boolean handleFault(MessageContext messageContext) {\n            WebserviceServlet.write(\"        ServerHandler handleFault\");\n            return true;\n        }\n    }\n\n## WebserviceClient\n\n    package org.superbiz.servlet;\n    \n    import javax.xml.ws.Service;\n    import java.io.PrintStream;\n    import java.net.URL;\n    \n    public class WebserviceClient {\n        /**\n         * Unfortunately, to run this example with CXF you need to have a HUGE class path.  This\n         * is just what is required to run CXF:\n         * <p/>\n         * jaxb-api-2.0.jar\n         * jaxb-impl-2.0.3.jar\n         * <p/>\n         * saaj-api-1.3.jar\n         * saaj-impl-1.3.jar\n         * <p/>\n         * <p/>\n         * cxf-api-2.0.2-incubator.jar\n         * cxf-common-utilities-2.0.2-incubator.jar\n         * cxf-rt-bindings-soap-2.0.2-incubator.jar\n         * cxf-rt-core-2.0.2-incubator.jar\n         * cxf-rt-databinding-jaxb-2.0.2-incubator.jar\n         * cxf-rt-frontend-jaxws-2.0.2-incubator.jar\n         * cxf-rt-frontend-simple-2.0.2-incubator.jar\n         * cxf-rt-transports-http-jetty-2.0.2-incubator.jar\n         * cxf-rt-transports-http-2.0.2-incubator.jar\n         * cxf-tools-common-2.0.2-incubator.jar\n         * <p/>\n         * geronimo-activation_1.1_spec-1.0.jar\n         * geronimo-annotation_1.0_spec-1.1.jar\n         * geronimo-ejb_3.0_spec-1.0.jar\n         * geronimo-jpa_3.0_spec-1.1.jar\n         * geronimo-servlet_2.5_spec-1.1.jar\n         * geronimo-stax-api_1.0_spec-1.0.jar\n         * jaxws-api-2.0.jar\n         * axis2-jws-api-1.3.jar\n         * <p/>\n         * wsdl4j-1.6.1.jar\n         * xml-resolver-1.2.jar\n         * XmlSchema-1.3.1.jar\n         */\n        public static void main(String[] args) throws Exception {\n            PrintStream out = System.out;\n    \n            Service helloPojoService = Service.create(new URL(\"http://localhost:8080/ejb-examples/hello?wsdl\"), null);\n            HelloPojo helloPojo = helloPojoService.getPort(HelloPojo.class);\n            out.println();\n            out.println(\"Pojo Webservice\");\n            out.println(\"    helloPojo.hello(\\\"Bob\\\")=\" + helloPojo.hello(\"Bob\"));\n            out.println(\"    helloPojo.hello(null)=\" + helloPojo.hello(null));\n            out.println();\n    \n            Service helloEjbService = Service.create(new URL(\"http://localhost:8080/HelloEjbService?wsdl\"), null);\n            HelloEjb helloEjb = helloEjbService.getPort(HelloEjb.class);\n            out.println();\n            out.println(\"EJB Webservice\");\n            out.println(\"    helloEjb.hello(\\\"Bob\\\")=\" + helloEjb.hello(\"Bob\"));\n            out.println(\"    helloEjb.hello(null)=\" + helloEjb.hello(null));\n            out.println();\n        }\n    }\n\n## WebserviceServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.jws.HandlerChain;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import javax.xml.ws.WebServiceRef;\n    import java.io.IOException;\n    \n    public class WebserviceServlet extends HttpServlet {\n    \n        @WebServiceRef\n        @HandlerChain(file = \"client-handlers.xml\")\n        private HelloPojo helloPojo;\n    \n        @WebServiceRef\n        @HandlerChain(file = \"client-handlers.xml\")\n        private HelloEjb helloEjb;\n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            OUT = out;\n            try {\n                out.println(\"Pojo Webservice\");\n                out.println(\"    helloPojo.hello(\\\"Bob\\\")=\" + helloPojo.hello(\"Bob\"));\n                out.println();\n                out.println(\"    helloPojo.hello(null)=\" + helloPojo.hello(null));\n                out.println();\n                out.println(\"EJB Webservice\");\n                out.println(\"    helloEjb.hello(\\\"Bob\\\")=\" + helloEjb.hello(\"Bob\"));\n                out.println();\n                out.println(\"    helloEjb.hello(null)=\" + helloEjb.hello(null));\n                out.println();\n            } finally {\n                OUT = out;\n            }\n        }\n    \n        private static ServletOutputStream OUT;\n    \n        public static void write(String message) {\n            try {\n                ServletOutputStream out = OUT;\n                out.println(message);\n            } catch (Exception e) {\n                e.printStackTrace();\n            }\n        }\n    }\n\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n      <persistence-unit transaction-type=\"RESOURCE_LOCAL\" name=\"jpa-example\">\n        <jta-data-source>java:openejb/Connector/Default JDBC Database</jta-data-source>\n        <non-jta-data-source>java:openejb/Connector/Default Unmanaged JDBC Database</non-jta-data-source>\n        <class>org.superbiz.servlet.JpaBean</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## client-handlers.xml\n\n    <jws:handler-chains xmlns:jws=\"http://java.sun.com/xml/ns/javaee\">\n      <jws:handler-chain>\n        <jws:handler>\n          <jws:handler-name>ClientHandler</jws:handler-name>\n          <jws:handler-class>org.superbiz.servlet.ClientHandler</jws:handler-class>\n        </jws:handler>\n      </jws:handler-chain>\n    </jws:handler-chains>\n    \n\n## server-handlers.xml\n\n    <jws:handler-chains xmlns:jws=\"http://java.sun.com/xml/ns/javaee\">\n      <jws:handler-chain>\n        <jws:handler>\n          <jws:handler-name>ServerHandler</jws:handler-name>\n          <jws:handler-class>org.superbiz.servlet.ServerHandler</jws:handler-class>\n        </jws:handler>\n      </jws:handler-chain>\n    </jws:handler-chains>\n    \n\n## context.xml\n\n    <Context>\n      <!-- This only works if the context is installed under the correct name -->\n      <Realm className=\"org.apache.catalina.realm.MemoryRealm\"\n             pathname=\"webapps/ejb-examples-1.0-SNAPSHOT/WEB-INF/tomcat-users.xml\"/>\n    \n      <Environment\n          name=\"context.xml/environment\"\n          value=\"ContextString\"\n          type=\"java.lang.String\"/>\n      <Resource\n          name=\"context.xml/resource\"\n          auth=\"Container\"\n          type=\"org.superbiz.servlet.ResourceBean\"\n          factory=\"org.apache.naming.factory.BeanFactory\"\n          value=\"ContextResource\"/>\n      <ResourceLink\n          name=\"context.xml/resource-link\"\n          global=\"server.xml/environment\"\n          type=\"java.lang.String\"/>\n    \n      <!-- web.xml resources -->\n      <Resource\n          name=\"web.xml/resource-env-ref\"\n          auth=\"Container\"\n          type=\"org.superbiz.servlet.ResourceBean\"\n          factory=\"org.apache.naming.factory.BeanFactory\"\n          value=\"ContextResourceEnvRef\"/>\n      <Resource\n          name=\"web.xml/resource-ref\"\n          auth=\"Container\"\n          type=\"org.superbiz.servlet.ResourceBean\"\n          factory=\"org.apache.naming.factory.BeanFactory\"\n          value=\"ContextResourceRef\"/>\n      <ResourceLink\n          name=\"web.xml/resource-link\"\n          global=\"server.xml/environment\"\n          type=\"java.lang.String\"/>\n    </Context>\n    \n\n## jetty-web.xml\n\n    <Configure class=\"org.eclipse.jetty.webapp.WebAppContext\">\n      <Get name=\"securityHandler\">\n        <Set name=\"loginService\">\n          <New class=\"org.eclipse.jetty.security.HashLoginService\">\n            <Set name=\"name\">Test Realm</Set>\n            <Set name=\"config\"><SystemProperty name=\"jetty.home\" default=\".\"/>/etc/realm.properties\n            </Set>\n          </New>\n        </Set>\n      </Get>\n    </Configure>\n\n## tomcat-users.xml\n\n    <tomcat-users>\n      <user name=\"manager\" password=\"manager\" roles=\"manager,user\"/>\n      <user name=\"user\" password=\"user\" roles=\"user\"/>\n    </tomcat-users>\n    \n\n## web.xml\n\n    <web-app xmlns=\"http://java.sun.com/xml/ns/javaee\"\n             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n             metadata-complete=\"false\"\n             version=\"2.5\">\n    \n      <display-name>OpenEJB Servlet Examples</display-name>\n    \n      <servlet>\n        <servlet-name>AnnotatedServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.AnnotatedServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>AnnotatedServlet</servlet-name>\n        <url-pattern>/annotated/*</url-pattern>\n      </servlet-mapping>\n    \n      <servlet>\n        <servlet-name>JpaServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.JpaServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>JpaServlet</servlet-name>\n        <url-pattern>/jpa/*</url-pattern>\n      </servlet-mapping>\n    \n      <servlet>\n        <servlet-name>JndiServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.JndiServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>JndiServlet</servlet-name>\n        <url-pattern>/jndi/*</url-pattern>\n      </servlet-mapping>\n    \n      <servlet>\n        <servlet-name>RunAsServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.RunAsServlet</servlet-class>\n        <run-as>\n          <role-name>fake</role-name>\n        </run-as>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>RunAsServlet</servlet-name>\n        <url-pattern>/runas/*</url-pattern>\n      </servlet-mapping>\n    \n      <servlet>\n        <servlet-name>SecureServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.SecureServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>SecureServlet</servlet-name>\n        <url-pattern>/secure/*</url-pattern>\n      </servlet-mapping>\n    \n      <security-constraint>\n        <web-resource-collection>\n          <web-resource-name>Secure Area</web-resource-name>\n          <url-pattern>/secure/*</url-pattern>\n          <url-pattern>/runas/*</url-pattern>\n        </web-resource-collection>\n        <auth-constraint>\n          <role-name>user</role-name>\n        </auth-constraint>\n      </security-constraint>\n    \n      <servlet>\n        <servlet-name>WebserviceServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.WebserviceServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>WebserviceServlet</servlet-name>\n        <url-pattern>/webservice/*</url-pattern>\n      </servlet-mapping>\n    \n    \n      <servlet>\n        <servlet-name>HelloPojoService</servlet-name>\n        <servlet-class>org.superbiz.servlet.HelloPojoService</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>HelloPojoService</servlet-name>\n        <url-pattern>/hello</url-pattern>\n      </servlet-mapping>\n    \n      <login-config>\n        <auth-method>BASIC</auth-method>\n      </login-config>\n    \n      <security-role>\n        <role-name>manager</role-name>\n      </security-role>\n    \n      <security-role>\n        <role-name>user</role-name>\n      </security-role>\n    \n      <env-entry>\n        <env-entry-name>web.xml/env-entry</env-entry-name>\n        <env-entry-type>java.lang.String</env-entry-type>\n        <env-entry-value>WebValue</env-entry-value>\n      </env-entry>\n    \n      <resource-ref>\n        <res-ref-name>web.xml/Data Source</res-ref-name>\n        <res-type>javax.sql.DataSource</res-type>\n        <res-auth>Container</res-auth>\n      </resource-ref>\n    \n      <resource-env-ref>\n        <resource-env-ref-name>web.xml/Queue</resource-env-ref-name>\n        <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>\n      </resource-env-ref>\n    \n      <ejb-ref>\n        <ejb-ref-name>web.xml/EjbRemote</ejb-ref-name>\n        <ejb-ref-type>Session</ejb-ref-type>\n        <remote>org.superbiz.servlet.AnnotatedEJBRemote</remote>\n      </ejb-ref>\n    \n      <ejb-local-ref>\n        <ejb-ref-name>web.xml/EjLocal</ejb-ref-name>\n        <ejb-ref-type>Session</ejb-ref-type>\n        <local>org.superbiz.servlet.AnnotatedEJBLocal</local>\n      </ejb-local-ref>\n    \n      <persistence-unit-ref>\n        <persistence-unit-ref-name>web.xml/PersistenceUnit</persistence-unit-ref-name>\n        <persistence-unit-name>jpa-example</persistence-unit-name>\n      </persistence-unit-ref>\n    \n      <persistence-context-ref>\n        <persistence-context-ref-name>web.xml/PersistenceContext</persistence-context-ref-name>\n        <persistence-unit-name>jpa-example</persistence-unit-name>\n        <persistence-context-type>Transactional</persistence-context-type>\n      </persistence-context-ref>\n    </web-app>\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/ejb-examples"
+      },
+      {
+        "name":"injection-of-ejbs",
+        "readme":"Title: Injection Of Ejbs\n\nThis example shows how to use the @EJB annotation on a bean class to refer to other beans.\n\nThis functionality is often referred as dependency injection (see\nhttp://www.martinfowler.com/articles/injection.html), and has been recently introduced in\nJava EE 5.\n\nIn this particular example, we will create two session stateless beans\n\n  * a DataStore session bean\n  * a DataReader session bean\n\nThe DataReader bean uses the DataStore to retrieve some informations, and\nwe will see how we can, inside the DataReader bean, get a reference to the\nDataStore bean using the @EJB annotation, thus avoiding the use of the\nJNDI API.\n\n## DataReader\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.Stateless;\n    \n    /**\n     * This is an EJB 3.1 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has 2 business interfaces: DataReaderRemote, a remote business\n     * interface, and DataReaderLocal, a local business interface\n     * <p/>\n     * The instance variables 'dataStoreRemote' is annotated with the @EJB annotation:\n     * this means that the application server, at runtime, will inject in this instance\n     * variable a reference to the EJB DataStoreRemote\n     * <p/>\n     * The instance variables 'dataStoreLocal' is annotated with the @EJB annotation:\n     * this means that the application server, at runtime, will inject in this instance\n     * variable a reference to the EJB DataStoreLocal\n     */\n    //START SNIPPET: code\n    @Stateless\n    public class DataReader {\n    \n        @EJB\n        private DataStoreRemote dataStoreRemote;\n        @EJB\n        private DataStoreLocal dataStoreLocal;\n        @EJB\n        private DataStore dataStore;\n    \n        public String readDataFromLocalStore() {\n            return \"LOCAL:\" + dataStoreLocal.getData();\n        }\n    \n        public String readDataFromLocalBeanStore() {\n            return \"LOCALBEAN:\" + dataStore.getData();\n        }\n    \n        public String readDataFromRemoteStore() {\n            return \"REMOTE:\" + dataStoreRemote.getData();\n        }\n    }\n\n## DataStore\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.LocalBean;\n    import javax.ejb.Stateless;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has 2 business interfaces: DataStoreRemote, a remote business\n     * interface, and DataStoreLocal, a local business interface\n     */\n    //START SNIPPET: code\n    @Stateless\n    @LocalBean\n    public class DataStore implements DataStoreLocal, DataStoreRemote {\n    \n        public String getData() {\n            return \"42\";\n        }\n    }\n\n## DataStoreLocal\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.Local;\n    \n    /**\n     * This is an EJB 3 local business interface\n     * A local business interface may be annotated with the @Local\n     * annotation, but it's optional. A business interface which is\n     * not annotated with @Local or @Remote is assumed to be Local\n     */\n    //START SNIPPET: code\n    @Local\n    public interface DataStoreLocal {\n    \n        public String getData();\n    }\n\n## DataStoreRemote\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.Remote;\n    \n    /**\n     * This is an EJB 3 remote business interface\n     * A remote business interface must be annotated with the @Remote\n     * annotation\n     */\n    //START SNIPPET: code\n    @Remote\n    public interface DataStoreRemote {\n    \n        public String getData();\n    }\n\n## EjbDependencyTest\n\n    package org.superbiz.injection;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    /**\n     * A test case for DataReaderImpl ejb, testing both the remote and local interface\n     */\n    //START SNIPPET: code\n    public class EjbDependencyTest extends TestCase {\n    \n        public void test() throws Exception {\n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            DataReader dataReader = (DataReader) context.lookup(\"java:global/injection-of-ejbs/DataReader\");\n    \n            assertNotNull(dataReader);\n    \n            assertEquals(\"LOCAL:42\", dataReader.readDataFromLocalStore());\n            assertEquals(\"REMOTE:42\", dataReader.readDataFromRemoteStore());\n            assertEquals(\"LOCALBEAN:42\", dataReader.readDataFromLocalBeanStore());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.EjbDependencyTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-ejbs\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-ejbs\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-ejbs/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-ejbs/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-ejbs\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean DataReader: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.EjbDependencyTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-ejbs\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-ejbs\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataReader!org.superbiz.injection.DataReader\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataReader\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStore\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreLocal\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreRemote\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore\")\n    INFO - Jndi(name=\"java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest!org.superbiz.injection.EjbDependencyTest\")\n    INFO - Jndi(name=\"java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest\")\n    INFO - Created Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-ejbs)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.225 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-ejbs"
+      },
+      {
+        "name":"jsf-cdi-and-ejb",
+        "readme":"Title: JSF-CDI-EJB\n\nThe simple application contains a CDI managed bean `CalculatorBean`, which uses the `Calculator` EJB to add two numbers\nand display the results to the user. The EJB is injected in the managed bean using @Inject annotation.\n\nYou could run this in the latest Apache TomEE [snapshot](https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/)\n\nThe complete source code is below but lets break down to look at some smaller snippets and see  how it works.\n\n\nA little note on the setup:\n\nAs for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the\nwar. In maven terms, they would be with scope 'provided'\n\nAlso note that we use servlet 2.5 declaration in web.xml\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xmlns=\"http://java.sun.com/xml/ns/javaee\"\n  xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n  xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n  version=\"2.5\">\n\nAnd we use 2.0 version of faces-config\n\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\nTo make this a cdi-aware-archive (i.e bean archive) an empty beans.xml is added in WEB-INF\n\n       <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n       <beans xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n         http://java.sun.com/xml/ns/javaee/beans_1_0.xsd\">\n       </beans>\n\nWe'll first declare the FacesServlet in the web.xml\n\n      <servlet>\n        <servlet-name>Faces Servlet</servlet-name>\n        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n        <load-on-startup>1</load-on-startup>\n      </servlet>\n\nFacesServlet acts as the master controller.\n\nWe'll then create the calculator.xhtml file.\n\n           <h:outputText value='Enter first number'/>\n           <h:inputText value='#{calculatorBean.x}'/>\n           <h:outputText value='Enter second number'/>\n           <h:inputText value='#{calculatorBean.y}'/>\n           <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n\nNotice how we've used the bean here. By default, the bean name would be the simple name of the bean\nclass with the first letter in lower case.\n\nWe've annotated the `CalculatorBean` with `@RequestScoped`.\nSo when a request comes in, the bean is instantiated and placed in the request scope.\n\n<h:inputText value='#{calculatorBean.x}'/>\n\nHere, getX() method of calculatorBean is invoked and the resulting value is displayed.\nx being a Double, we rightly should see 0.0 displayed.\n\nWhen you change the value and submit the form, these entered values are bound using the setters\nin the bean and then the commandButton-action method is invoked.\n\nIn this case, CalculatorBean#add() is invoked.\n\nCalculator#add() delegates the work to the ejb, gets the result, stores it\nand then returns what view is to be rendered.\n\nThe return value \"success\" is checked up in faces-config navigation-rules\nand the respective page is rendered.\n\nIn our case, 'result.xhtml' page is rendered where\nuse EL and display the result from the request-scoped `calculatorBean`.\n\n#Source Code\n\n## CalculatorBean\n\n    import javax.enterprise.context.RequestScoped;\n    import javax.inject.Named;\n    import javax.inject.Inject;\n\n    @RequestScoped\n    @Named\n    public class CalculatorBean {\n        @Inject\n        Calculator calculator;\n        private double x;\n        private double y;\n        private double result;\n    \n        public double getX() {\n            return x;\n        }\n    \n        public void setX(double x) {\n            this.x = x;\n        }\n    \n        public double getY() {\n            return y;\n        }\n    \n        public void setY(double y) {\n            this.y = y;\n        }\n    \n        public double getResult() {\n            return result;\n        }\n    \n        public void setResult(double result) {\n            this.result = result;\n        }\n    \n        public String add() {\n            result = calculator.add(x, y);\n            return \"success\";\n        }\n    }\n\n## Calculator\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Stateless;\n    \n    @Stateless\n    public class Calculator{\n    \n        public double add(double x, double y) {\n            return x + y;\n        }\n    }\n\n\n#web.xml\n\n<?xml version=\"1.0\"?>\n\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xmlns=\"http://java.sun.com/xml/ns/javaee\"\n         xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n         version=\"2.5\">\n\n  <description>MyProject web.xml</description>\n\n  <!-- Faces Servlet -->\n  <servlet>\n    <servlet-name>Faces Servlet</servlet-name>\n    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n    <load-on-startup>1</load-on-startup>\n  </servlet>\n\n  <!-- Faces Servlet Mapping -->\n  <servlet-mapping>\n    <servlet-name>Faces Servlet</servlet-name>\n    <url-pattern>*.jsf</url-pattern>\n  </servlet-mapping>\n\n  <!-- Welcome files -->\n  <welcome-file-list>\n    <welcome-file>index.jsp</welcome-file>\n    <welcome-file>index.html</welcome-file>\n  </welcome-file-list>\n\n</web-app>\n\n\n#Calculator.xhtml\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:f=\"http://java.sun.com/jsf/core\"\n      xmlns:h=\"http://java.sun.com/jsf/html\">\n\n\n<h:body bgcolor=\"white\">\n    <f:view>\n        <h:form>\n            <h:panelGrid columns=\"2\">\n                <h:outputText value='Enter first number'/>\n                <h:inputText value='#{calculatorBean.x}'/>\n                <h:outputText value='Enter second number'/>\n                <h:inputText value='#{calculatorBean.y}'/>\n                <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n            </h:panelGrid>\n        </h:form>\n    </f:view>\n</h:body>\n</html>\n\n\n #Result.xhtml\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:f=\"http://java.sun.com/jsf/core\"\n      xmlns:h=\"http://java.sun.com/jsf/html\">\n\n<h:body>\n<f:view>\n    <h:form id=\"mainForm\">\n        <h2><h:outputText value=\"Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }\"/></h2>\n        <h:commandLink action=\"back\">\n            <h:outputText value=\"Home\"/>\n        </h:commandLink>\n    </h:form>\n</f:view>\n</h:body>\n</html>\n\n #faces-config.xml\n\n <?xml version=\"1.0\"?>\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\n   <navigation-rule>\n     <from-view-id>/calculator.xhtml</from-view-id>\n     <navigation-case>\n       <from-outcome>success</from-outcome>\n       <to-view-id>/result.xhtml</to-view-id>\n     </navigation-case>\n   </navigation-rule>\n\n   <navigation-rule>\n     <from-view-id>/result.xhtml</from-view-id>\n     <navigation-case>\n       <from-outcome>back</from-outcome>\n       <to-view-id>/calculator.xhtml</to-view-id>\n     </navigation-case>\n   </navigation-rule>\n </faces-config>",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jsf-cdi-and-ejb"
+      },
+      {
+        "name":"ejb-webservice",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/ejb-webservice"
+      },
+      {
+        "name":"lookup-of-ejbs",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs"
+      },
+      {
+        "name":"lookup-of-ejbs-with-descriptor",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs-with-descriptor"
+      }
+    ],
+    "ejbcontext":[
+      {
+        "name":"cdi-ejbcontext-jaas",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-ejbcontext-jaas"
+      }
+    ],
+    "entitymanager":[
+      {
+        "name":"injection-of-entitymanager",
+        "readme":"Title: Injection Of Entitymanager\n\nThis example shows use of `@PersistenceContext` to have an `EntityManager` with an\n`EXTENDED` persistence context injected into a `@Stateful bean`. A JPA\n`@Entity` bean is used with the `EntityManager` to create, persist and merge\ndata to a database.\n\n## Creating the JPA Entity\n\nThe entity itself is simply a pojo annotated with `@Entity`.  We create one called `Movie` which we can use to hold movie records.\n\n    package org.superbiz.injection.jpa;\n\n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n\n        @Id @GeneratedValue\n        private long id;\n\n        private String director;\n        private String title;\n        private int year;\n\n        public Movie() {\n        }\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n\n        public String getDirector() {\n            return director;\n        }\n\n        public void setDirector(String director) {\n            this.director = director;\n        }\n\n        public String getTitle() {\n            return title;\n        }\n\n        public void setTitle(String title) {\n            this.title = title;\n        }\n\n        public int getYear() {\n            return year;\n        }\n\n        public void setYear(int year) {\n            this.year = year;\n        }\n    }\n\n## Configure the EntityManager via a persistence.xml file\n\nThe above `Movie` entity can be created, removed, updated or deleted via an `EntityManager` object.  The `EntityManager` itself is\nconfigured via a `META-INF/persistence.xml` file that is placed in the same jar as the `Movie` entity.\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n\n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.jpa.Movie</class>\n\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\nNotice that the `Movie` entity is listed via a `<class>` element.  This is not required, but can help when testing or when the\n`Movie` class is located in a different jar than the jar containing the `persistence.xml` file.\n\n## Injection via @PersistenceContext\n\nThe `EntityManager` itself is created by the container using the information in the `persistence.xml`, so to use it at\nruntime, we simply need to request it be injected into one of our components.  We do this via `@PersistenceContext`\n\nThe `@PersistenceContext` annotation can be used on any CDI bean, EJB, Servlet, Servlet Listener, Servlet Filter, or JSF ManagedBean.  If you don't use an EJB you will need to use a `UserTransaction` begin and commit transactions manually.  A transaction is required for any of the create, update or delete methods of the EntityManager to work.\n\n    package org.superbiz.injection.jpa;\n\n    import javax.ejb.Stateful;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\nThis particular `EntityManager` is injected as an `EXTENDED` persistence context, which simply means that the `EntityManager`\nis created when the `@Stateful` bean is created and destroyed when the `@Stateful` bean is destroyed.  Simply put, the\ndata in the `EntityManager` is cached for the lifetime of the `@Stateful` bean.\n\nThe use of `EXTENDED` persistence contexts is **only** available to `@Stateful` beans.  See the [JPA Concepts](../../jpa-concepts.html) page for an high level explanation of what a \"persistence context\" really is and how it is significant to JPA.\n\n## MoviesTest\n\nTesting JPA is quite easy, we can simply use the `EJBContainer` API to create a container in our test case.\n\n    package org.superbiz.injection.jpa;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            final Context context = EJBContainer.createEJBContainer(p).getContext();\n    \n            Movies movies = (Movies) context.lookup(\"java:global/injection-of-entitymanager/Movies\");\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n# Running\n\nWhen we run our test case we should see output similar to the following.\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.jpa.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-entitymanager\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-entitymanager\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-entitymanager/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-entitymanager/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-entitymanager\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.jpa.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-entitymanager\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-entitymanager\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 462ms\n    INFO - Jndi(name=\"java:global/injection-of-entitymanager/Movies!org.superbiz.injection.jpa.Movies\")\n    INFO - Jndi(name=\"java:global/injection-of-entitymanager/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest!org.superbiz.injection.jpa.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-entitymanager)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.301 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-entitymanager"
+      }
+    ],
+    "enumerated":[
+      {
+        "name":"jpa-enumerated",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jpa-enumerated"
+      }
+    ],
+    "enventry":[
+      {
+        "name":"injection-of-env-entry",
+        "readme":"Title: Using EnvEntries\n\nThe `@Resource` annotation can be used to inject several things including\nDataSources, Topics, Queues, etc.  Most of these are container supplied objects.\n\nIt is possible, however, to supply your own values to be injected via an `<env-entry>`\nin your `ejb-jar.xml` or `web.xml` deployment descriptor.  Java EE 6 supported `<env-entry>` types\nare limited to the following:\n\n - java.lang.String\n - java.lang.Integer\n - java.lang.Short\n - java.lang.Float\n - java.lang.Double\n - java.lang.Byte\n - java.lang.Character\n - java.lang.Boolean\n - java.lang.Class\n - java.lang.Enum (any enum)\n\nSee also the [Custom Injection](../custom-injection) exmaple for a TomEE and OpenEJB feature that will let you\nuse more than just the above types as well as declare `<env-entry>` items with a plain properties file.\n\n# Using @Resource for basic properties\n\nThe use of the `@Resource` annotation isn't limited to setters.  For\nexample, this annotation could have been used on the corresponding *field*\nlike so:\n\n    @Resource\n    private int maxLineItems;\n\nA fuller example might look like this:\n\n    package org.superbiz.injection.enventry;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.Singleton;\n    import java.util.Date;\n    \n    @Singleton\n    public class Configuration {\n    \n        @Resource\n        private String color;\n    \n        @Resource\n        private Shape shape;\n    \n        @Resource\n        private Class strategy;\n    \n        @Resource(name = \"date\")\n        private long date;\n    \n        public String getColor() {\n            return color;\n        }\n    \n        public Shape getShape() {\n            return shape;\n        }\n    \n        public Class getStrategy() {\n            return strategy;\n        }\n    \n        public Date getDate() {\n            return new Date(date);\n        }\n    }\n\nHere we have an `@Singleton` bean called `Confuration` that has the following properties (`<env-entry>` items)\n\n- String color\n- Shape shape\n- Class strategy\n- long date\n\n## Supplying @Resource values for <env-entry> items in ejb-jar.xml\n\nThe values for our `color`, `shape`, `strategy` and `date` properties are supplied via `<env-entry>` elements in the `ejb-jar.xml` file or the\n`web.xml` file like so:\n\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" version=\"3.0\" metadata-complete=\"false\">\n      <enterprise-beans>\n        <session>\n          <ejb-name>Configuration</ejb-name>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>\n            <env-entry-type>java.lang.String</env-entry-type>\n            <env-entry-value>orange</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>\n            <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>\n            <env-entry-value>TRIANGLE</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/strategy</env-entry-name>\n            <env-entry-type>java.lang.Class</env-entry-type>\n            <env-entry-value>org.superbiz.injection.enventry.Widget</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>\n            <env-entry-name>date</env-entry-name>\n            <env-entry-type>java.lang.Long</env-entry-type>\n            <env-entry-value>123456789</env-entry-value>\n          </env-entry>\n        </session>\n      </enterprise-beans>\n    </ejb-jar>\n\n\n### Using the @Resource 'name' attribute\n\nNote that `date` was referenced by `name` as:\n\n    @Resource(name = \"date\")\n    private long date;\n\nWhen the `@Resource(name)` is used, you do not need to specify the full class name of the bean and can do it briefly like so:\n\n      <env-entry>\n        <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>\n        <env-entry-name>date</env-entry-name>\n        <env-entry-type>java.lang.Long</env-entry-type>\n        <env-entry-value>123456789</env-entry-value>\n      </env-entry>\n\nConversly, `color` was not referenced by `name`\n\n    @Resource\n    private String color;\n\nWhen something is not referenced by `name` in the `@Resource` annotation a default name is created.  The format is essentially this:\n\n    bean.getClass() + \"/\" + field.getName()\n\nSo the default `name` of the above `color` property ends up being `org.superbiz.injection.enventry.Configuration/color`.  This is the name\nwe must use when we attempt to decalre a value for it in xml.\n\n      <env-entry>\n        <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>\n        <env-entry-type>java.lang.String</env-entry-type>\n        <env-entry-value>orange</env-entry-value>\n      </env-entry>\n\n### @Resource and Enum (Enumerations)\n\nThe `shape` field is actually a custom Java Enum type\n\n    package org.superbiz.injection.enventry;\n\n    public enum Shape {\n    \n        CIRCLE,\n        TRIANGLE,\n        SQUARE\n    }\n\nAs of Java EE 6, java.lang.Enum types are allowed as `<env-entry>` items.  Declaring one in xml is done using the actual enum's class name like so:\n\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>\n            <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>\n            <env-entry-value>TRIANGLE</env-entry-value>\n          </env-entry>\n\nDo not use `<env-entry-type>java.lang.Enum</env-entry-type>` or it will not work!\n\n## ConfigurationTest\n\n    package org.superbiz.injection.enventry;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.Date;\n    \n    public class ConfigurationTest extends TestCase {\n    \n    \n        public void test() throws Exception {\n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            final Configuration configuration = (Configuration) context.lookup(\"java:global/injection-of-env-entry/Configuration\");\n    \n            assertEquals(\"orange\", configuration.getColor());\n    \n            assertEquals(Shape.TRIANGLE, configuration.getShape());\n    \n            assertEquals(Widget.class, configuration.getStrategy());\n    \n            assertEquals(new Date(123456789), configuration.getDate());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.enventry.ConfigurationTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-env-entry\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-env-entry\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-env-entry/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-env-entry/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-env-entry\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean Configuration: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.enventry.ConfigurationTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-env-entry\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-env-entry\n    INFO - Jndi(name=\"java:global/injection-of-env-entry/Configuration!org.superbiz.injection.enventry.Configuration\")\n    INFO - Jndi(name=\"java:global/injection-of-env-entry/Configuration\")\n    INFO - Jndi(name=\"java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest!org.superbiz.injection.enventry.ConfigurationTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-env-entry)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.664 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-env-entry"
+      }
+    ],
+    "evaluation":[
+      {
+        "name":"bval-evaluation-redeployment",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/bval-evaluation-redeployment"
+      }
+    ],
+    "event":[
+      {
+        "name":"server-events",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/server-events"
+      },
+      {
+        "name":"cdi-events",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-events"
+      },
+      {
+        "name":"schedule-events",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-events"
+      }
+    ],
+    "examples":[
+      {
+        "name":"ejb-examples",
+        "readme":"Title: EJB Examples\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AnnotatedEJB\n\n    package org.superbiz.servlet;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.LocalBean;\n    import javax.ejb.Stateless;\n    import javax.sql.DataSource;\n    \n    @Stateless\n    @LocalBean\n    public class AnnotatedEJB implements AnnotatedEJBLocal, AnnotatedEJBRemote {\n        @Resource\n        private DataSource ds;\n    \n        private String name = \"foo\";\n    \n        public String getName() {\n            return name;\n        }\n    \n        public void setName(String name) {\n            this.name = name;\n        }\n    \n        public DataSource getDs() {\n            return ds;\n        }\n    \n        public void setDs(DataSource ds) {\n            this.ds = ds;\n        }\n    \n        public String toString() {\n            return \"AnnotatedEJB[name=\" + name + \"]\";\n        }\n    }\n\n## AnnotatedEJBLocal\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.Local;\n    import javax.sql.DataSource;\n    \n    @Local\n    public interface AnnotatedEJBLocal {\n        String getName();\n    \n        void setName(String name);\n    \n        DataSource getDs();\n    \n        void setDs(DataSource ds);\n    }\n\n## AnnotatedEJBRemote\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.Remote;\n    \n    @Remote\n    public interface AnnotatedEJBRemote {\n        String getName();\n    \n        void setName(String name);\n    }\n\n## AnnotatedServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.EJB;\n    import javax.naming.InitialContext;\n    import javax.naming.NamingException;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import javax.sql.DataSource;\n    import java.io.IOException;\n    \n    public class AnnotatedServlet extends HttpServlet {\n        @EJB\n        private AnnotatedEJBLocal localEJB;\n    \n        @EJB\n        private AnnotatedEJBRemote remoteEJB;\n    \n        @EJB\n        private AnnotatedEJB localbeanEJB;\n    \n        @Resource\n        private DataSource ds;\n    \n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            out.println(\"LocalBean EJB\");\n            out.println(\"@EJB=\" + localbeanEJB);\n            if (localbeanEJB != null) {\n                out.println(\"@EJB.getName()=\" + localbeanEJB.getName());\n                out.println(\"@EJB.getDs()=\" + localbeanEJB.getDs());\n            }\n            out.println(\"JNDI=\" + lookupField(\"localbeanEJB\"));\n            out.println();\n    \n            out.println(\"Local EJB\");\n            out.println(\"@EJB=\" + localEJB);\n            if (localEJB != null) {\n                out.println(\"@EJB.getName()=\" + localEJB.getName());\n                out.println(\"@EJB.getDs()=\" + localEJB.getDs());\n            }\n            out.println(\"JNDI=\" + lookupField(\"localEJB\"));\n            out.println();\n    \n            out.println(\"Remote EJB\");\n            out.println(\"@EJB=\" + remoteEJB);\n            if (localEJB != null) {\n                out.println(\"@EJB.getName()=\" + remoteEJB.getName());\n            }\n            out.println(\"JNDI=\" + lookupField(\"remoteEJB\"));\n            out.println();\n    \n    \n            out.println(\"DataSource\");\n            out.println(\"@Resource=\" + ds);\n            out.println(\"JNDI=\" + lookupField(\"ds\"));\n        }\n    \n        private Object lookupField(String name) {\n            try {\n                return new InitialContext().lookup(\"java:comp/env/\" + getClass().getName() + \"/\" + name);\n            } catch (NamingException e) {\n                return null;\n            }\n        }\n    }\n\n## ClientHandler\n\n    package org.superbiz.servlet;\n    \n    import javax.xml.ws.handler.Handler;\n    import javax.xml.ws.handler.MessageContext;\n    \n    public class ClientHandler implements Handler {\n        public boolean handleMessage(MessageContext messageContext) {\n            WebserviceServlet.write(\"    ClientHandler handleMessage\");\n            return true;\n        }\n    \n        public void close(MessageContext messageContext) {\n            WebserviceServlet.write(\"    ClientHandler close\");\n        }\n    \n        public boolean handleFault(MessageContext messageContext) {\n            WebserviceServlet.write(\"    ClientHandler handleFault\");\n            return true;\n        }\n    }\n\n## HelloEjb\n\n    package org.superbiz.servlet;\n    \n    import javax.jws.WebService;\n    \n    @WebService(targetNamespace = \"http://examples.org/wsdl\")\n    public interface HelloEjb {\n        String hello(String name);\n    }\n\n## HelloEjbService\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.Stateless;\n    import javax.jws.HandlerChain;\n    import javax.jws.WebService;\n    \n    @WebService(\n            portName = \"HelloEjbPort\",\n            serviceName = \"HelloEjbService\",\n            targetNamespace = \"http://examples.org/wsdl\",\n            endpointInterface = \"org.superbiz.servlet.HelloEjb\"\n    )\n    @HandlerChain(file = \"server-handlers.xml\")\n    @Stateless\n    public class HelloEjbService implements HelloEjb {\n        public String hello(String name) {\n            WebserviceServlet.write(\"                HelloEjbService hello(\" + name + \")\");\n            if (name == null) name = \"World\";\n            return \"Hello \" + name + \" from EJB Webservice!\";\n        }\n    }\n\n## HelloPojo\n\n    package org.superbiz.servlet;\n    \n    import javax.jws.WebService;\n    \n    @WebService(targetNamespace = \"http://examples.org/wsdl\")\n    public interface HelloPojo {\n        String hello(String name);\n    }\n\n## HelloPojoService\n\n    package org.superbiz.servlet;\n    \n    import javax.jws.HandlerChain;\n    import javax.jws.WebService;\n    \n    @WebService(\n            portName = \"HelloPojoPort\",\n            serviceName = \"HelloPojoService\",\n            targetNamespace = \"http://examples.org/wsdl\",\n            endpointInterface = \"org.superbiz.servlet.HelloPojo\"\n    )\n    @HandlerChain(file = \"server-handlers.xml\")\n    public class HelloPojoService implements HelloPojo {\n        public String hello(String name) {\n            WebserviceServlet.write(\"                HelloPojoService hello(\" + name + \")\");\n            if (name == null) name = \"World\";\n            return \"Hello \" + name + \" from Pojo Webservice!\";\n        }\n    }\n\n## JndiServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.naming.NameClassPair;\n    import javax.naming.NamingException;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import java.io.IOException;\n    import java.util.Collections;\n    import java.util.Map;\n    import java.util.TreeMap;\n    \n    public class JndiServlet extends HttpServlet {\n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            Map<String, Object> bindings = new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER);\n            try {\n                Context context = (Context) new InitialContext().lookup(\"java:comp/\");\n                addBindings(\"\", bindings, context);\n            } catch (NamingException e) {\n                throw new ServletException(e);\n            }\n    \n            out.println(\"JNDI Context:\");\n            for (Map.Entry<String, Object> entry : bindings.entrySet()) {\n                if (entry.getValue() != null) {\n                    out.println(\"  \" + entry.getKey() + \"=\" + entry.getValue());\n                } else {\n                    out.println(\"  \" + entry.getKey());\n                }\n            }\n        }\n    \n        private void addBindings(String path, Map<String, Object> bindings, Context context) {\n            try {\n                for (NameClassPair pair : Collections.list(context.list(\"\"))) {\n                    String name = pair.getName();\n                    String className = pair.getClassName();\n                    if (\"org.apache.naming.resources.FileDirContext$FileResource\".equals(className)) {\n                        bindings.put(path + name, \"<file>\");\n                    } else {\n                        try {\n                            Object value = context.lookup(name);\n                            if (value instanceof Context) {\n                                Context nextedContext = (Context) value;\n                                bindings.put(path + name, \"\");\n                                addBindings(path + name + \"/\", bindings, nextedContext);\n                            } else {\n                                bindings.put(path + name, value);\n                            }\n                        } catch (NamingException e) {\n                            // lookup failed\n                            bindings.put(path + name, \"ERROR: \" + e.getMessage());\n                        }\n                    }\n                }\n            } catch (NamingException e) {\n                bindings.put(path, \"ERROR: list bindings threw an exception: \" + e.getMessage());\n            }\n        }\n    }\n\n## JpaBean\n\n    package org.superbiz.servlet;\n    \n    import javax.persistence.Column;\n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    \n    @Entity\n    public class JpaBean {\n        @Id\n        @GeneratedValue(strategy = GenerationType.IDENTITY)\n        @Column(name = \"id\")\n        private int id;\n    \n        @Column(name = \"name\")\n        private String name;\n    \n        public int getId() {\n            return id;\n        }\n    \n        public String getName() {\n            return name;\n        }\n    \n        public void setName(String name) {\n            this.name = name;\n        }\n    \n    \n        public String toString() {\n            return \"[JpaBean id=\" + id + \", name=\" + name + \"]\";\n        }\n    }\n\n## JpaServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.persistence.EntityManager;\n    import javax.persistence.EntityManagerFactory;\n    import javax.persistence.EntityTransaction;\n    import javax.persistence.PersistenceUnit;\n    import javax.persistence.Query;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import java.io.IOException;\n    \n    public class JpaServlet extends HttpServlet {\n        @PersistenceUnit(name = \"jpa-example\")\n        private EntityManagerFactory emf;\n    \n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            out.println(\"@PersistenceUnit=\" + emf);\n    \n            EntityManager em = emf.createEntityManager();\n            EntityTransaction transaction = em.getTransaction();\n            transaction.begin();\n    \n            JpaBean jpaBean = new JpaBean();\n            jpaBean.setName(\"JpaBean\");\n            em.persist(jpaBean);\n    \n            transaction.commit();\n            transaction.begin();\n    \n            Query query = em.createQuery(\"SELECT j FROM JpaBean j WHERE j.name='JpaBean'\");\n            jpaBean = (JpaBean) query.getSingleResult();\n            out.println(\"Loaded \" + jpaBean);\n    \n            em.remove(jpaBean);\n    \n            transaction.commit();\n            transaction.begin();\n    \n            query = em.createQuery(\"SELECT count(j) FROM JpaBean j WHERE j.name='JpaBean'\");\n            int count = ((Number) query.getSingleResult()).intValue();\n            if (count == 0) {\n                out.println(\"Removed \" + jpaBean);\n            } else {\n                out.println(\"ERROR: unable to remove\" + jpaBean);\n            }\n    \n            transaction.commit();\n        }\n    }\n\n## ResourceBean\n\n    package org.superbiz.servlet;\n    \n    public class ResourceBean {\n        private String value;\n    \n        public String getValue() {\n            return value;\n        }\n    \n        public void setValue(String value) {\n            this.value = value;\n        }\n    \n        public String toString() {\n            return \"[ResourceBean \" + value + \"]\";\n        }\n    }\n\n## RunAsServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import java.io.IOException;\n    import java.security.Principal;\n    \n    public class RunAsServlet extends HttpServlet {\n        @EJB\n        private SecureEJBLocal secureEJBLocal;\n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            out.println(\"Servlet\");\n            Principal principal = request.getUserPrincipal();\n            if (principal != null) {\n                out.println(\"Servlet.getUserPrincipal()=\" + principal + \" [\" + principal.getName() + \"]\");\n            } else {\n                out.println(\"Servlet.getUserPrincipal()=<null>\");\n            }\n            out.println(\"Servlet.isCallerInRole(\\\"user\\\")=\" + request.isUserInRole(\"user\"));\n            out.println(\"Servlet.isCallerInRole(\\\"manager\\\")=\" + request.isUserInRole(\"manager\"));\n            out.println(\"Servlet.isCallerInRole(\\\"fake\\\")=\" + request.isUserInRole(\"fake\"));\n            out.println();\n    \n            out.println(\"@EJB=\" + secureEJBLocal);\n            if (secureEJBLocal != null) {\n                principal = secureEJBLocal.getCallerPrincipal();\n                if (principal != null) {\n                    out.println(\"@EJB.getCallerPrincipal()=\" + principal + \" [\" + principal.getName() + \"]\");\n                } else {\n                    out.println(\"@EJB.getCallerPrincipal()=<null>\");\n                }\n                out.println(\"@EJB.isCallerInRole(\\\"user\\\")=\" + secureEJBLocal.isCallerInRole(\"user\"));\n                out.println(\"@EJB.isCallerInRole(\\\"manager\\\")=\" + secureEJBLocal.isCallerInRole(\"manager\"));\n                out.println(\"@EJB.isCallerInRole(\\\"fake\\\")=\" + secureEJBLocal.isCallerInRole(\"fake\"));\n    \n                try {\n                    secureEJBLocal.allowUserMethod();\n                    out.println(\"@EJB.allowUserMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowUserMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.allowManagerMethod();\n                    out.println(\"@EJB.allowManagerMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowManagerMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.allowFakeMethod();\n                    out.println(\"@EJB.allowFakeMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowFakeMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.denyAllMethod();\n                    out.println(\"@EJB.denyAllMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.denyAllMethod() DENIED\");\n                }\n            }\n            out.println();\n        }\n    }\n\n## SecureEJB\n\n    package org.superbiz.servlet;\n    \n    import javax.annotation.Resource;\n    import javax.annotation.security.DeclareRoles;\n    import javax.annotation.security.DenyAll;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.SessionContext;\n    import javax.ejb.Stateless;\n    import java.security.Principal;\n    \n    @Stateless\n    @DeclareRoles({\"user\", \"manager\", \"fake\"})\n    public class SecureEJB implements SecureEJBLocal {\n        @Resource\n        private SessionContext context;\n    \n        public Principal getCallerPrincipal() {\n            return context.getCallerPrincipal();\n        }\n    \n        public boolean isCallerInRole(String role) {\n            return context.isCallerInRole(role);\n        }\n    \n        @RolesAllowed(\"user\")\n        public void allowUserMethod() {\n        }\n    \n        @RolesAllowed(\"manager\")\n        public void allowManagerMethod() {\n        }\n    \n        @RolesAllowed(\"fake\")\n        public void allowFakeMethod() {\n        }\n    \n        @DenyAll\n        public void denyAllMethod() {\n        }\n    \n        public String toString() {\n            return \"SecureEJB[userName=\" + getCallerPrincipal() + \"]\";\n        }\n    }\n\n## SecureEJBLocal\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.Local;\n    import java.security.Principal;\n    \n    @Local\n    public interface SecureEJBLocal {\n        Principal getCallerPrincipal();\n    \n        boolean isCallerInRole(String role);\n    \n        void allowUserMethod();\n    \n        void allowManagerMethod();\n    \n        void allowFakeMethod();\n    \n        void denyAllMethod();\n    }\n\n## SecureServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import java.io.IOException;\n    import java.security.Principal;\n    \n    public class SecureServlet extends HttpServlet {\n        @EJB\n        private SecureEJBLocal secureEJBLocal;\n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            out.println(\"Servlet\");\n            Principal principal = request.getUserPrincipal();\n            if (principal != null) {\n                out.println(\"Servlet.getUserPrincipal()=\" + principal + \" [\" + principal.getName() + \"]\");\n            } else {\n                out.println(\"Servlet.getUserPrincipal()=<null>\");\n            }\n            out.println(\"Servlet.isCallerInRole(\\\"user\\\")=\" + request.isUserInRole(\"user\"));\n            out.println(\"Servlet.isCallerInRole(\\\"manager\\\")=\" + request.isUserInRole(\"manager\"));\n            out.println(\"Servlet.isCallerInRole(\\\"fake\\\")=\" + request.isUserInRole(\"fake\"));\n            out.println();\n    \n            out.println(\"@EJB=\" + secureEJBLocal);\n            if (secureEJBLocal != null) {\n                principal = secureEJBLocal.getCallerPrincipal();\n                if (principal != null) {\n                    out.println(\"@EJB.getCallerPrincipal()=\" + principal + \" [\" + principal.getName() + \"]\");\n                } else {\n                    out.println(\"@EJB.getCallerPrincipal()=<null>\");\n                }\n                out.println(\"@EJB.isCallerInRole(\\\"user\\\")=\" + secureEJBLocal.isCallerInRole(\"user\"));\n                out.println(\"@EJB.isCallerInRole(\\\"manager\\\")=\" + secureEJBLocal.isCallerInRole(\"manager\"));\n                out.println(\"@EJB.isCallerInRole(\\\"fake\\\")=\" + secureEJBLocal.isCallerInRole(\"fake\"));\n    \n                try {\n                    secureEJBLocal.allowUserMethod();\n                    out.println(\"@EJB.allowUserMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowUserMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.allowManagerMethod();\n                    out.println(\"@EJB.allowManagerMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowManagerMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.allowFakeMethod();\n                    out.println(\"@EJB.allowFakeMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.allowFakeMethod() DENIED\");\n                }\n    \n                try {\n                    secureEJBLocal.denyAllMethod();\n                    out.println(\"@EJB.denyAllMethod() ALLOWED\");\n                } catch (EJBAccessException e) {\n                    out.println(\"@EJB.denyAllMethod() DENIED\");\n                }\n            }\n            out.println();\n        }\n    }\n\n## ServerHandler\n\n    package org.superbiz.servlet;\n    \n    import javax.xml.ws.handler.Handler;\n    import javax.xml.ws.handler.MessageContext;\n    \n    public class ServerHandler implements Handler {\n        public boolean handleMessage(MessageContext messageContext) {\n            WebserviceServlet.write(\"        ServerHandler handleMessage\");\n            return true;\n        }\n    \n        public void close(MessageContext messageContext) {\n            WebserviceServlet.write(\"        ServerHandler close\");\n        }\n    \n        public boolean handleFault(MessageContext messageContext) {\n            WebserviceServlet.write(\"        ServerHandler handleFault\");\n            return true;\n        }\n    }\n\n## WebserviceClient\n\n    package org.superbiz.servlet;\n    \n    import javax.xml.ws.Service;\n    import java.io.PrintStream;\n    import java.net.URL;\n    \n    public class WebserviceClient {\n        /**\n         * Unfortunately, to run this example with CXF you need to have a HUGE class path.  This\n         * is just what is required to run CXF:\n         * <p/>\n         * jaxb-api-2.0.jar\n         * jaxb-impl-2.0.3.jar\n         * <p/>\n         * saaj-api-1.3.jar\n         * saaj-impl-1.3.jar\n         * <p/>\n         * <p/>\n         * cxf-api-2.0.2-incubator.jar\n         * cxf-common-utilities-2.0.2-incubator.jar\n         * cxf-rt-bindings-soap-2.0.2-incubator.jar\n         * cxf-rt-core-2.0.2-incubator.jar\n         * cxf-rt-databinding-jaxb-2.0.2-incubator.jar\n         * cxf-rt-frontend-jaxws-2.0.2-incubator.jar\n         * cxf-rt-frontend-simple-2.0.2-incubator.jar\n         * cxf-rt-transports-http-jetty-2.0.2-incubator.jar\n         * cxf-rt-transports-http-2.0.2-incubator.jar\n         * cxf-tools-common-2.0.2-incubator.jar\n         * <p/>\n         * geronimo-activation_1.1_spec-1.0.jar\n         * geronimo-annotation_1.0_spec-1.1.jar\n         * geronimo-ejb_3.0_spec-1.0.jar\n         * geronimo-jpa_3.0_spec-1.1.jar\n         * geronimo-servlet_2.5_spec-1.1.jar\n         * geronimo-stax-api_1.0_spec-1.0.jar\n         * jaxws-api-2.0.jar\n         * axis2-jws-api-1.3.jar\n         * <p/>\n         * wsdl4j-1.6.1.jar\n         * xml-resolver-1.2.jar\n         * XmlSchema-1.3.1.jar\n         */\n        public static void main(String[] args) throws Exception {\n            PrintStream out = System.out;\n    \n            Service helloPojoService = Service.create(new URL(\"http://localhost:8080/ejb-examples/hello?wsdl\"), null);\n            HelloPojo helloPojo = helloPojoService.getPort(HelloPojo.class);\n            out.println();\n            out.println(\"Pojo Webservice\");\n            out.println(\"    helloPojo.hello(\\\"Bob\\\")=\" + helloPojo.hello(\"Bob\"));\n            out.println(\"    helloPojo.hello(null)=\" + helloPojo.hello(null));\n            out.println();\n    \n            Service helloEjbService = Service.create(new URL(\"http://localhost:8080/HelloEjbService?wsdl\"), null);\n            HelloEjb helloEjb = helloEjbService.getPort(HelloEjb.class);\n            out.println();\n            out.println(\"EJB Webservice\");\n            out.println(\"    helloEjb.hello(\\\"Bob\\\")=\" + helloEjb.hello(\"Bob\"));\n            out.println(\"    helloEjb.hello(null)=\" + helloEjb.hello(null));\n            out.println();\n        }\n    }\n\n## WebserviceServlet\n\n    package org.superbiz.servlet;\n    \n    import javax.jws.HandlerChain;\n    import javax.servlet.ServletException;\n    import javax.servlet.ServletOutputStream;\n    import javax.servlet.http.HttpServlet;\n    import javax.servlet.http.HttpServletRequest;\n    import javax.servlet.http.HttpServletResponse;\n    import javax.xml.ws.WebServiceRef;\n    import java.io.IOException;\n    \n    public class WebserviceServlet extends HttpServlet {\n    \n        @WebServiceRef\n        @HandlerChain(file = \"client-handlers.xml\")\n        private HelloPojo helloPojo;\n    \n        @WebServiceRef\n        @HandlerChain(file = \"client-handlers.xml\")\n        private HelloEjb helloEjb;\n    \n        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n            response.setContentType(\"text/plain\");\n            ServletOutputStream out = response.getOutputStream();\n    \n            OUT = out;\n            try {\n                out.println(\"Pojo Webservice\");\n                out.println(\"    helloPojo.hello(\\\"Bob\\\")=\" + helloPojo.hello(\"Bob\"));\n                out.println();\n                out.println(\"    helloPojo.hello(null)=\" + helloPojo.hello(null));\n                out.println();\n                out.println(\"EJB Webservice\");\n                out.println(\"    helloEjb.hello(\\\"Bob\\\")=\" + helloEjb.hello(\"Bob\"));\n                out.println();\n                out.println(\"    helloEjb.hello(null)=\" + helloEjb.hello(null));\n                out.println();\n            } finally {\n                OUT = out;\n            }\n        }\n    \n        private static ServletOutputStream OUT;\n    \n        public static void write(String message) {\n            try {\n                ServletOutputStream out = OUT;\n                out.println(message);\n            } catch (Exception e) {\n                e.printStackTrace();\n            }\n        }\n    }\n\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n      <persistence-unit transaction-type=\"RESOURCE_LOCAL\" name=\"jpa-example\">\n        <jta-data-source>java:openejb/Connector/Default JDBC Database</jta-data-source>\n        <non-jta-data-source>java:openejb/Connector/Default Unmanaged JDBC Database</non-jta-data-source>\n        <class>org.superbiz.servlet.JpaBean</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## client-handlers.xml\n\n    <jws:handler-chains xmlns:jws=\"http://java.sun.com/xml/ns/javaee\">\n      <jws:handler-chain>\n        <jws:handler>\n          <jws:handler-name>ClientHandler</jws:handler-name>\n          <jws:handler-class>org.superbiz.servlet.ClientHandler</jws:handler-class>\n        </jws:handler>\n      </jws:handler-chain>\n    </jws:handler-chains>\n    \n\n## server-handlers.xml\n\n    <jws:handler-chains xmlns:jws=\"http://java.sun.com/xml/ns/javaee\">\n      <jws:handler-chain>\n        <jws:handler>\n          <jws:handler-name>ServerHandler</jws:handler-name>\n          <jws:handler-class>org.superbiz.servlet.ServerHandler</jws:handler-class>\n        </jws:handler>\n      </jws:handler-chain>\n    </jws:handler-chains>\n    \n\n## context.xml\n\n    <Context>\n      <!-- This only works if the context is installed under the correct name -->\n      <Realm className=\"org.apache.catalina.realm.MemoryRealm\"\n             pathname=\"webapps/ejb-examples-1.0-SNAPSHOT/WEB-INF/tomcat-users.xml\"/>\n    \n      <Environment\n          name=\"context.xml/environment\"\n          value=\"ContextString\"\n          type=\"java.lang.String\"/>\n      <Resource\n          name=\"context.xml/resource\"\n          auth=\"Container\"\n          type=\"org.superbiz.servlet.ResourceBean\"\n          factory=\"org.apache.naming.factory.BeanFactory\"\n          value=\"ContextResource\"/>\n      <ResourceLink\n          name=\"context.xml/resource-link\"\n          global=\"server.xml/environment\"\n          type=\"java.lang.String\"/>\n    \n      <!-- web.xml resources -->\n      <Resource\n          name=\"web.xml/resource-env-ref\"\n          auth=\"Container\"\n          type=\"org.superbiz.servlet.ResourceBean\"\n          factory=\"org.apache.naming.factory.BeanFactory\"\n          value=\"ContextResourceEnvRef\"/>\n      <Resource\n          name=\"web.xml/resource-ref\"\n          auth=\"Container\"\n          type=\"org.superbiz.servlet.ResourceBean\"\n          factory=\"org.apache.naming.factory.BeanFactory\"\n          value=\"ContextResourceRef\"/>\n      <ResourceLink\n          name=\"web.xml/resource-link\"\n          global=\"server.xml/environment\"\n          type=\"java.lang.String\"/>\n    </Context>\n    \n\n## jetty-web.xml\n\n    <Configure class=\"org.eclipse.jetty.webapp.WebAppContext\">\n      <Get name=\"securityHandler\">\n        <Set name=\"loginService\">\n          <New class=\"org.eclipse.jetty.security.HashLoginService\">\n            <Set name=\"name\">Test Realm</Set>\n            <Set name=\"config\"><SystemProperty name=\"jetty.home\" default=\".\"/>/etc/realm.properties\n            </Set>\n          </New>\n        </Set>\n      </Get>\n    </Configure>\n\n## tomcat-users.xml\n\n    <tomcat-users>\n      <user name=\"manager\" password=\"manager\" roles=\"manager,user\"/>\n      <user name=\"user\" password=\"user\" roles=\"user\"/>\n    </tomcat-users>\n    \n\n## web.xml\n\n    <web-app xmlns=\"http://java.sun.com/xml/ns/javaee\"\n             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n             metadata-complete=\"false\"\n             version=\"2.5\">\n    \n      <display-name>OpenEJB Servlet Examples</display-name>\n    \n      <servlet>\n        <servlet-name>AnnotatedServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.AnnotatedServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>AnnotatedServlet</servlet-name>\n        <url-pattern>/annotated/*</url-pattern>\n      </servlet-mapping>\n    \n      <servlet>\n        <servlet-name>JpaServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.JpaServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>JpaServlet</servlet-name>\n        <url-pattern>/jpa/*</url-pattern>\n      </servlet-mapping>\n    \n      <servlet>\n        <servlet-name>JndiServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.JndiServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>JndiServlet</servlet-name>\n        <url-pattern>/jndi/*</url-pattern>\n      </servlet-mapping>\n    \n      <servlet>\n        <servlet-name>RunAsServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.RunAsServlet</servlet-class>\n        <run-as>\n          <role-name>fake</role-name>\n        </run-as>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>RunAsServlet</servlet-name>\n        <url-pattern>/runas/*</url-pattern>\n      </servlet-mapping>\n    \n      <servlet>\n        <servlet-name>SecureServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.SecureServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>SecureServlet</servlet-name>\n        <url-pattern>/secure/*</url-pattern>\n      </servlet-mapping>\n    \n      <security-constraint>\n        <web-resource-collection>\n          <web-resource-name>Secure Area</web-resource-name>\n          <url-pattern>/secure/*</url-pattern>\n          <url-pattern>/runas/*</url-pattern>\n        </web-resource-collection>\n        <auth-constraint>\n          <role-name>user</role-name>\n        </auth-constraint>\n      </security-constraint>\n    \n      <servlet>\n        <servlet-name>WebserviceServlet</servlet-name>\n        <servlet-class>org.superbiz.servlet.WebserviceServlet</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>WebserviceServlet</servlet-name>\n        <url-pattern>/webservice/*</url-pattern>\n      </servlet-mapping>\n    \n    \n      <servlet>\n        <servlet-name>HelloPojoService</servlet-name>\n        <servlet-class>org.superbiz.servlet.HelloPojoService</servlet-class>\n      </servlet>\n    \n      <servlet-mapping>\n        <servlet-name>HelloPojoService</servlet-name>\n        <url-pattern>/hello</url-pattern>\n      </servlet-mapping>\n    \n      <login-config>\n        <auth-method>BASIC</auth-method>\n      </login-config>\n    \n      <security-role>\n        <role-name>manager</role-name>\n      </security-role>\n    \n      <security-role>\n        <role-name>user</role-name>\n      </security-role>\n    \n      <env-entry>\n        <env-entry-name>web.xml/env-entry</env-entry-name>\n        <env-entry-type>java.lang.String</env-entry-type>\n        <env-entry-value>WebValue</env-entry-value>\n      </env-entry>\n    \n      <resource-ref>\n        <res-ref-name>web.xml/Data Source</res-ref-name>\n        <res-type>javax.sql.DataSource</res-type>\n        <res-auth>Container</res-auth>\n      </resource-ref>\n    \n      <resource-env-ref>\n        <resource-env-ref-name>web.xml/Queue</resource-env-ref-name>\n        <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>\n      </resource-env-ref>\n    \n      <ejb-ref>\n        <ejb-ref-name>web.xml/EjbRemote</ejb-ref-name>\n        <ejb-ref-type>Session</ejb-ref-type>\n        <remote>org.superbiz.servlet.AnnotatedEJBRemote</remote>\n      </ejb-ref>\n    \n      <ejb-local-ref>\n        <ejb-ref-name>web.xml/EjLocal</ejb-ref-name>\n        <ejb-ref-type>Session</ejb-ref-type>\n        <local>org.superbiz.servlet.AnnotatedEJBLocal</local>\n      </ejb-local-ref>\n    \n      <persistence-unit-ref>\n        <persistence-unit-ref-name>web.xml/PersistenceUnit</persistence-unit-ref-name>\n        <persistence-unit-name>jpa-example</persistence-unit-name>\n      </persistence-unit-ref>\n    \n      <persistence-context-ref>\n        <persistence-context-ref-name>web.xml/PersistenceContext</persistence-context-ref-name>\n        <persistence-unit-name>jpa-example</persistence-unit-name>\n        <persistence-context-type>Transactional</persistence-context-type>\n      </persistence-context-ref>\n    </web-app>\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/ejb-examples"
+      }
+    ],
+    "exception":[
+      {
+        "name":"deltaspike-exception-handling",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-exception-handling"
+      }
+    ],
+    "expression":[
+      {
+        "name":"schedule-expression",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-expression"
+      }
+    ],
+    "field":[
+      {
+        "name":"cdi-produces-field",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-produces-field"
+      }
+    ],
+    "fragment":[
+      {
+        "name":"persistence-fragment",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/persistence-fragment"
+      }
+    ],
+    "fullstack":[
+      {
+        "name":"deltaspike-fullstack",
+        "readme":"Title: Apache DeltaSpike Demo\nNotice:    Licensed to the Apache Software Foundation (ASF) under one\n           or more contributor license agreements.  See the NOTICE file\n           distributed with this work for additional information\n           regarding copyright ownership.  The ASF licenses this file\n           to you under the Apache License, Version 2.0 (the\n           \"License\"); you may not use this file except in compliance\n           with the License.  You may obtain a copy of the License at\n           .\n             http://www.apache.org/licenses/LICENSE-2.0\n           .\n           Unless required by applicable law or agreed to in writing,\n           software distributed under the License is distributed on an\n           \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n           KIND, either express or implied.  See the License for the\n           specific language governing permissions and limitations\n           under the License.\n\n<h2>Steps to run the example</h2>\n\nBuild and start the demo:\n\n    mvn clean package tomee:run\n\nOpen:\n\n    http://localhost:8080/\n\nThis example shows how to improve JSF2/CDI/BV/JPA applications with features provided by Apache DeltaSpike and MyFaces ExtVal.\n\n<h2>Intro of Apache DeltaSpike and MyFaces ExtVal</h2>\n\nThe Apache DeltaSpike project hosts portable extensions for Contexts and Dependency Injection (CDI - JSR 299). DeltaSpike is a toolbox for your CDI application. Like CDI itself DeltaSpike is focused on type-safety. It is a modularized and extensible framework. So it's easy to choose the needed parts to facilitate the daily work in your project.\n\nMyFaces Extensions Validator (aka ExtVal) is a JSF centric validation framework which is compatible with JSF 1.x and JSF 2.x.\nThis example shows how it improves the default integration of Bean-Validation (JSR-303) with JSF2 as well as meta-data based cross-field validation.\n\n\n<h2>Illustrated Features</h2>\n\n<h3>Apache DeltaSpike</h3>\n\n<ul>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/config/Pages.java\" target=\"_blank\">Type-safe view-config</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/InfoPage.java\" target=\"_blank\">Type-safe (custom) view-meta-data</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/MenuBean.java\" target=\"_blank\">Type-safe navigation</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/CustomProjectStage.java\" target=\"_blank\">Type-safe custom project-stage</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/UserHolder.java\" target=\"_blank\">@WindowScoped</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/MenuBean.java\" target=\"_blank\">Controlling DeltaSpike grouped-conversations with GroupedConversationManager</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/FeedbackPage.java\" target=\"_blank\">@GroupedConversationScoped</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/FeedbackPage.java\" target=\"_blank\">Manual conversation handling</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/security/LoginAccessDecisionVoter.java\" target=\"_blank\">Secured pages (AccessDecisionVoter)</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/repository/Repository.java\" target=\"_blank\">@Transactional</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/view/RegistrationPage.java\" target=\"_blank\">I18n (type-safe messages)</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/domain/validation/UniqueUserNameValidator.java\" target=\"_blank\">Dependency-Injection for JSR303 (BV) constraint-validators</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/deltaspike/DebugPhaseListener.java\" target=\"_blank\">Dependency-Injection for JSF phase-listeners</a></li>\n</ul>\n\n<h3>Apache MyFaces ExtVal</h3>\n\n<ul>\n    <li><a href=\"./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java\" target=\"_blank\">Cross-Field validation (@Equals)</a></li>\n    <li><a href=\"./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java\" target=\"_blank\">Type-safe group-validation (@BeanValidation) for JSF action-methods</a></li>\n</ul>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-fullstack"
+      }
+    ],
+    "groovy":[
+      {
+        "name":"groovy-jpa",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/groovy-jpa"
+      },
+      {
+        "name":"groovy-spock",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/groovy-spock"
+      },
+      {
+        "name":"groovy-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/groovy-cdi"
+      }
+    ],
+    "handlerchain":[
+      {
+        "name":"webservice-handlerchain",
+        "readme":"Title: @WebService handlers with @HandlerChain\n\nIn this example we see a basic JAX-WS `@WebService` component use a handler chain to alter incoming and outgoing SOAP messages.  SOAP Handlers are similar to Servlet Filters or EJB/CDI Interceptors.\n\nAt high level, the steps involved are:\n\n 1. Create handler(s) implementing `javax.xml.ws.handler.soap.SOAPHandler`\n 1. Declare and order them in an xml file via `<handler-chain>`\n 1. Associate the xml file with an `@WebService` component via `@HandlerChain`\n\n## The @HandlerChain\n\nFirst we'll start with our plain `@WebService` bean, called `Calculator`, which is annotated with `@HandlerChain`\n\n    @Singleton\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.calculator.wsh.CalculatorWs\")\n    @HandlerChain(file = \"handlers.xml\")\n    public class Calculator implements CalculatorWs {\n\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n\n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\nHere we see `@HandlerChain` pointing to a file called `handlers.xml`.  This file could be called anything, but it must be in the same jar and java package as our `Calculator` component.\n\n## The &lt;handler-chains> file\n\nOur `Calculator` service is in the package `org.superbiz.calculator.wsh`, which means our handler chain xml file must be at `org/superbiz/calculator/wsh/handlers.xml` in our application's classpath or the file will not be found and no handlers will be used.\n\nIn maven we achieve this by putting our handlers.xml in `src/main/resources` like so:\n\n - `src/main/resources/org/superbiz/calculator/wsh/handlers.xml`\n\nWith this file we declare and **order** our handler chain.\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <handler-chains xmlns=\"http://java.sun.com/xml/ns/javaee\">\n      <handler-chain>\n        <handler>\n          <handler-name>org.superbiz.calculator.wsh.Inflate</handler-name>\n          <handler-class>org.superbiz.calculator.wsh.Inflate</handler-class>\n        </handler>\n        <handler>\n          <handler-name>org.superbiz.calculator.wsh.Increment</handler-name>\n          <handler-class>org.superbiz.calculator.wsh.Increment</handler-class>\n        </handler>\n      </handler-chain>\n    </handler-chains>\n\nThe order as you might suspect is:\n\n - `Inflate`\n - `Increment`\n\n## The SOAPHandler implementation\n\nOur `Inflate` handler has the job of monitoring *responses* to the `sum` and `multiply` operations and making them 1000 times better.  Manipulation of the message is done by walking the `SOAPBody` and editing the nodes.  The `handleMessage` method is invoked for both requests and responses, so it is important to check the `SOAPBody` before attempting to naviage the nodes.\n\n    import org.w3c.dom.Node;\n    import javax.xml.namespace.QName;\n    import javax.xml.soap.SOAPBody;\n    import javax.xml.soap.SOAPException;\n    import javax.xml.soap.SOAPMessage;\n    import javax.xml.ws.handler.MessageContext;\n    import javax.xml.ws.handler.soap.SOAPHandler;\n    import javax.xml.ws.handler.soap.SOAPMessageContext;\n    import java.util.Collections;\n    import java.util.Set;\n\n    public class Inflate implements SOAPHandler<SOAPMessageContext> {\n\n        public boolean handleMessage(SOAPMessageContext mc) {\n            try {\n                final SOAPMessage message = mc.getMessage();\n                final SOAPBody body = message.getSOAPBody();\n                final String localName = body.getFirstChild().getLocalName();\n\n                if (\"sumResponse\".equals(localName) || \"multiplyResponse\".equals(localName)) {\n                    final Node responseNode = body.getFirstChild();\n                    final Node returnNode = responseNode.getFirstChild();\n                    final Node intNode = returnNode.getFirstChild();\n\n                    final int value = new Integer(intNode.getNodeValue());\n                    intNode.setNodeValue(Integer.toString(value * 1000));\n                }\n\n                return true;\n            } catch (SOAPException e) {\n                return false;\n            }\n        }\n\n        public Set<QName> getHeaders() {\n            return Collections.emptySet();\n        }\n\n        public void close(MessageContext mc) {\n        }\n\n        public boolean handleFault(SOAPMessageContext mc) {\n            return true;\n        }\n    }\n\nThe `Increment` handler is identical in code and therefore not shown.  Instead of multiplying by 1000, it simply adds 1.\n\n## The TestCase\n\nWe use the JAX-WS API to create a Java client for our `Calculator` web service and use it to invoke both the `sum` and `multiply` operations.  Note the clever use of math to assert both the existence and order of our handlers.  If `Inflate` and `Increment` were reversed, the responses would be 11000 and 13000 respectively.\n\n    public class CalculatorTest {\n\n        @BeforeClass\n        public static void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n            EJBContainer.createEJBContainer(properties);\n        }\n\n        @Test\n        public void testCalculatorViaWsInterface() throws Exception {\n            final Service calculatorService = Service.create(\n                    new URL(\"http://127.0.0.1:4204/Calculator?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorService\"));\n\n            assertNotNull(calculatorService);\n\n            final CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);\n\n            // we expect our answers to come back 1000 times better, plus one!\n            assertEquals(10001, calculator.sum(4, 6));\n            assertEquals(12001, calculator.multiply(3, 4));\n        }\n    }\n\n## Running the example\n\nSimply run `mvn clean install` and you should see output similar to the following:\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.wsh.CalculatorTest\n    INFO - openejb.home = /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\n    INFO - openejb.base = /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Beginning load: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers/target/test-classes\n    INFO - Beginning load: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\n    INFO - Auto-deploying ejb Calculator: EjbDeployment(deployment-id=Calculator)\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean Calculator: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Creating Container(id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.calculator.wsh.CalculatorTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\" loaded.\n    INFO - Assembling app: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\n    INFO - Created Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n    INFO -   ** Starting Services **\n    INFO -   NAME                 IP              PORT\n    INFO -   httpejbd             127.0.0.1       4204\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from class org.superbiz.calculator.wsh.CalculatorWs\n    INFO - Setting the server's publish address to be http://nopath:80\n    INFO - Webservice(wsdl=http://127.0.0.1:4204/Calculator, qname={http://superbiz.org/wsdl}CalculatorService) --> Ejb(id=Calculator)\n    INFO -   admin thread         127.0.0.1       4200\n    INFO -   ejbd                 127.0.0.1       4201\n    INFO -   ejbd                 127.0.0.1       4203\n    INFO - -------\n    INFO - Ready!\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl\n    INFO - Default SAAJ universe not set\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.783 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n## Inspecting the messages\n\nThe above would generate the following messages.\n\n### Calculator wsdl\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                      name=\"CalculatorService\" targetNamespace=\"http://superbiz.org/wsdl\"\n                      xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                      xmlns:tns=\"http://superbiz.org/wsdl\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n      <wsdl:types>\n        <xsd:schema attributeFormDefault=\"unqualified\" elementFormDefault=\"unqualified\"\n                    targetNamespace=\"http://superbiz.org/wsdl\" xmlns:tns=\"http://superbiz.org/wsdl\"\n                    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n          <xsd:element name=\"multiply\" type=\"tns:multiply\"/>\n          <xsd:complexType name=\"multiply\">\n            <xsd:sequence>\n              <xsd:element name=\"arg0\" type=\"xsd:int\"/>\n              <xsd:element name=\"arg1\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"multiplyResponse\" type=\"tns:multiplyResponse\"/>\n          <xsd:complexType name=\"multiplyResponse\">\n            <xsd:sequence>\n              <xsd:element name=\"return\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"sum\" type=\"tns:sum\"/>\n          <xsd:complexType name=\"sum\">\n            <xsd:sequence>\n              <xsd:element name=\"arg0\" type=\"xsd:int\"/>\n              <xsd:element name=\"arg1\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"sumResponse\" type=\"tns:sumResponse\"/>\n          <xsd:complexType name=\"sumResponse\">\n            <xsd:sequence>\n              <xsd:element name=\"return\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n        </xsd:schema>\n      </wsdl:types>\n      <wsdl:message name=\"multiplyResponse\">\n        <wsdl:part element=\"tns:multiplyResponse\" name=\"parameters\">\n        </wsdl:part>\n      </wsdl:message>\n      <wsdl:message name=\"sumResponse\">\n        <wsdl:part element=\"tns:sumResponse\" name=\"parameters\">\n        </wsdl:part>\n      </wsdl:message>\n      <wsdl:message name=\"sum\">\n        <wsdl:part element=\"tns:sum\" name=\"parameters\">\n        </wsdl:part>\n      </wsdl:message>\n      <wsdl:message name=\"multiply\">\n        <wsdl:part element=\"tns:multiply\" name=\"parameters\">\n        </wsdl:part>\n      </wsdl:message>\n      <wsdl:portType name=\"CalculatorWs\">\n        <wsdl:operation name=\"multiply\">\n          <wsdl:input message=\"tns:multiply\" name=\"multiply\">\n          </wsdl:input>\n          <wsdl:output message=\"tns:multiplyResponse\" name=\"multiplyResponse\">\n          </wsdl:output>\n        </wsdl:operation>\n        <wsdl:operation name=\"sum\">\n          <wsdl:input message=\"tns:sum\" name=\"sum\">\n          </wsdl:input>\n          <wsdl:output message=\"tns:sumResponse\" name=\"sumResponse\">\n          </wsdl:output>\n        </wsdl:operation>\n      </wsdl:portType>\n      <wsdl:binding name=\"CalculatorServiceSoapBinding\" type=\"tns:CalculatorWs\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"multiply\">\n          <soap:operation soapAction=\"\" style=\"document\"/>\n          <wsdl:input name=\"multiply\">\n            <soap:body use=\"literal\"/>\n          </wsdl:input>\n          <wsdl:output name=\"multiplyResponse\">\n            <soap:body use=\"literal\"/>\n          </wsdl:output>\n        </wsdl:operation>\n        <wsdl:operation name=\"sum\">\n          <soap:operation soapAction=\"\" style=\"document\"/>\n          <wsdl:input name=\"sum\">\n            <soap:body use=\"literal\"/>\n          </wsdl:input>\n          <wsdl:output name=\"sumResponse\">\n            <soap:body use=\"literal\"/>\n          </wsdl:output>\n        </wsdl:operation>\n      </wsdl:binding>\n      <wsdl:service name=\"CalculatorService\">\n        <wsdl:port binding=\"tns:CalculatorServiceSoapBinding\" name=\"CalculatorPort\">\n          <soap:address location=\"http://127.0.0.1:4204/Calculator?wsdl\"/>\n        </wsdl:port>\n      </wsdl:service>\n    </wsdl:definitions>\n\n### SOAP sum and sumResponse\n\nRequest:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sum xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <arg0>4</arg0>\n          <arg1>6</arg1>\n        </ns1:sum>\n      </soap:Body>\n    </soap:Envelope>\n\nResponse:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sumResponse xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <return>10001</return>\n        </ns1:sumResponse>\n      </soap:Body>\n    </soap:Envelope>\n\n### SOAP multiply and multiplyResponse\n\nRequest:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:multiply xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <arg0>3</arg0>\n          <arg1>4</arg1>\n        </ns1:multiply>\n      </soap:Body>\n    </soap:Envelope>\n\nResponse:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:multiplyResponse xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <return>12001</return>\n        </ns1:multiplyResponse>\n      </soap:Body>\n    </soap:Envelope>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-handlerchain"
+      }
+    ],
+    "helloworld":[
+      {
+        "name":"helloworld-weblogic",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/helloworld-weblogic"
+      }
+    ],
+    "hibernate":[
+      {
+        "name":"jpa-hibernate",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jpa-hibernate"
+      }
+    ],
+    "holder":[
+      {
+        "name":"webservice-holder",
+        "readme":"Title: @WebService OUT params via javax.xml.ws.Holder\n\nWith SOAP it is possible to return multiple values in a single request.  This is impossible in Java as a method can only return one object.\n\nJAX-WS solves this problem with the concept of Holders.  A `javax.xml.ws.Holder` is a simple wrapper object that can be passed into the `@WebService` method as a parameter.  The application sets the value of the holder during the request and the server will send the value back as an OUT parameter.\n\n## Using @WebParam and javax.xml.ws.Holder\n\nThe `@WebParam` annotation allows us to declare the `sum` and `multiply` Holders as `WebParam.Mode.OUT` parameters.  As mentioned, these holders are simply empty buckets the application can fill in with data to have sent to the client.  The server will pass them in uninitialized.\n\n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.ws.out.CalculatorWs\")\n    public class Calculator implements CalculatorWs {\n\n        public void sumAndMultiply(int a, int b,\n                                   @WebParam(name = \"sum\", mode = WebParam.Mode.OUT) Holder<Integer> sum,\n                                   @WebParam(name = \"multiply\", mode = WebParam.Mode.OUT) Holder<Integer> multiply) {\n            sum.value = a + b;\n            multiply.value = a * b;\n        }\n    }\n\nIf the Holders were specified as `WebParam.Mode.INOUT` params, then the client could use them to send data and the application as well.  The `Holder` instances would then be initialized with the data from the client request.  The application could check the data before eventually overriting it with the response values.\n\n## The WSDL\n\nThe above JAX-WS `@WebService` component results in the folliwing WSDL that will be created automatically.  Note the `sumAndMultiplyResponse` complext type returns two elements.  These match the `@WebParam` declarations and our two `Holder<Integer>` params.\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                      name=\"CalculatorService\"\n                      targetNamespace=\"http://superbiz.org/wsdl\"\n                      xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                      xmlns:tns=\"http://superbiz.org/wsdl\"\n                      xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n      <wsdl:types>\n        <xsd:schema attributeFormDefault=\"unqualified\" elementFormDefault=\"unqualified\"\n                    targetNamespace=\"http://superbiz.org/wsdl\"\n                    xmlns:tns=\"http://superbiz.org/wsdl\"\n                    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n          <xsd:element name=\"sumAndMultiply\" type=\"tns:sumAndMultiply\"/>\n          <xsd:complexType name=\"sumAndMultiply\">\n            <xsd:sequence>\n              <xsd:element name=\"arg0\" type=\"xsd:int\"/>\n              <xsd:element name=\"arg1\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"sumAndMultiplyResponse\" type=\"tns:sumAndMultiplyResponse\"/>\n          <xsd:complexType name=\"sumAndMultiplyResponse\">\n            <xsd:sequence>\n              <xsd:element minOccurs=\"0\" name=\"sum\" type=\"xsd:int\"/>\n              <xsd:element minOccurs=\"0\" name=\"multiply\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n        </xsd:schema>\n      </wsdl:types>\n      <wsdl:message name=\"sumAndMultiplyResponse\">\n        <wsdl:part element=\"tns:sumAndMultiplyResponse\" name=\"parameters\"/>\n      </wsdl:message>\n      <wsdl:message name=\"sumAndMultiply\">\n        <wsdl:part element=\"tns:sumAndMultiply\" name=\"parameters\"/>\n      </wsdl:message>\n      <wsdl:portType name=\"CalculatorWs\">\n        <wsdl:operation name=\"sumAndMultiply\">\n          <wsdl:input message=\"tns:sumAndMultiply\" name=\"sumAndMultiply\"/>\n          <wsdl:output message=\"tns:sumAndMultiplyResponse\" name=\"sumAndMultiplyResponse\"/>\n        </wsdl:operation>\n      </wsdl:portType>\n      <wsdl:binding name=\"CalculatorServiceSoapBinding\" type=\"tns:CalculatorWs\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"sumAndMultiply\">\n          <soap:operation soapAction=\"\" style=\"document\"/>\n          <wsdl:input name=\"sumAndMultiply\">\n            <soap:body use=\"literal\"/>\n          </wsdl:input>\n          <wsdl:output name=\"sumAndMultiplyResponse\">\n            <soap:body use=\"literal\"/>\n          </wsdl:output>\n        </wsdl:operation>\n      </wsdl:binding>\n      <wsdl:service name=\"CalculatorService\">\n        <wsdl:port binding=\"tns:CalculatorServiceSoapBinding\" name=\"CalculatorPort\">\n          <soap:address location=\"http://127.0.0.1:4204/Calculator?wsdl\"/>\n        </wsdl:port>\n      </wsdl:service>\n    </wsdl:definitions>\n\n## Testing the OUT params\n\nHere we see a JAX-WS client executing the `sumAndMultiply` operation.  Two empty `Holder` instances are created and passed in as parameters.  The data from the `sumAndMultiplyResponse` is placed in the `Holder` instances and is then available to the client after the operation completes.\n\nThe holders themselves are not actually sent in the request unless they are configured as INOUT params via WebParam.Mode.INOUT on `@WebParam`\n\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.Holder;\n    import javax.xml.ws.Service;\n    import java.net.URL;\n    import java.util.Properties;\n\n    import static org.junit.Assert.assertEquals;\n    import static org.junit.Assert.assertNotNull;\n\n    public class CalculatorTest {\n\n        @BeforeClass\n        public static void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n            //properties.setProperty(\"httpejbd.print\", \"true\");\n            //properties.setProperty(\"httpejbd.indent.xml\", \"true\");\n            EJBContainer.createEJBContainer(properties);\n        }\n\n        @Test\n        public void outParams() throws Exception {\n            final Service calculatorService = Service.create(\n                    new URL(\"http://127.0.0.1:4204/Calculator?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorService\"));\n\n            assertNotNull(calculatorService);\n\n            final CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);\n\n            final Holder<Integer> sum = new Holder<Integer>();\n            final Holder<Integer> multiply = new Holder<Integer>();\n\n            calculator.sumAndMultiply(4, 6, sum, multiply);\n\n            assertEquals(10, (int) sum.value);\n            assertEquals(24, (int) multiply.value);\n        }\n    }\n\n\n## Inspecting the messages\n\nThe above execution results in the following SOAP message.\n\n### SOAP sumAndMultiply <small>client request</small>\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sumAndMultiply xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <arg0>4</arg0>\n          <arg1>6</arg1>\n        </ns1:sumAndMultiply>\n      </soap:Body>\n    </soap:Envelope>\n\n### SOAP sumAndMultiplyResponse <small>server response</small>\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sumAndMultiplyResponse xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <sum>10</sum>\n          <multiply>24</multiply>\n        </ns1:sumAndMultiplyResponse>\n      </soap:Body>\n    </soap:Envelope>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-holder"
+      }
+    ],
+    "i18n":[
+      {
+        "name":"deltaspike-i18n",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-i18n"
+      }
+    ],
+    "implementation":[
+      {
+        "name":"dynamic-implementation",
+        "readme":"Title: Dynamic Implementation\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## SocialBean\n\n    package org.superbiz.dynamic;\n    \n    import org.apache.openejb.api.Proxy;\n    \n    import javax.ejb.Singleton;\n    import javax.interceptor.Interceptors;\n    \n    @Singleton\n    @Proxy(SocialHandler.class)\n    @Interceptors(SocialInterceptor.class)\n    public interface SocialBean {\n        public String facebookStatus();\n    \n        public String twitterStatus();\n    \n        public String status();\n    }\n\n## SocialHandler\n\n    package org.superbiz.dynamic;\n    \n    import java.lang.reflect.InvocationHandler;\n    import java.lang.reflect.Method;\n    \n    public class SocialHandler implements InvocationHandler {\n        @Override\n        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\n            String mtd = method.getName();\n            if (mtd.toLowerCase().contains(\"facebook\")) {\n                return \"You think you have a life!\";\n            } else if (mtd.toLowerCase().contains(\"twitter\")) {\n                return \"Wow, you eat pop corn!\";\n            }\n            return \"Hey, you have no virtual friend!\";\n        }\n    }\n\n## SocialInterceptor\n\n    packagenull\n    }\n\n## SocialTest\n\n    package org.superbiz.dynamic;\n    \n    import org.junit.AfterClass;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    \n    import static junit.framework.Assert.assertTrue;\n    \n    public class SocialTest {\n        private static SocialBean social;\n        private static EJBContainer container;\n    \n        @BeforeClass\n        public static void init() throws Exception {\n            container = EJBContainer.createEJBContainer();\n            social = (SocialBean) container.getContext().lookup(\"java:global/dynamic-implementation/SocialBean\");\n        }\n    \n        @AfterClass\n        public static void close() {\n            container.close();\n        }\n    \n        @Test\n        public void simple() {\n            assertTrue(social.facebookStatus().contains(\"think\"));\n            assertTrue(social.twitterStatus().contains(\"eat\"));\n            assertTrue(social.status().contains(\"virtual\"));\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.dynamic.SocialTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/dynamic-implementation\n    INFO - openejb.base = /Users/dblevins/examples/dynamic-implementation\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-implementation/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-implementation/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-implementation\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean SocialBean: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.dynamic.SocialTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/dynamic-implementation\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/dynamic-implementation\n    INFO - Jndi(name=\"java:global/dynamic-implementation/SocialBean!org.superbiz.dynamic.SocialBean\")\n    INFO - Jndi(name=\"java:global/dynamic-implementation/SocialBean\")\n    INFO - Jndi(name=\"java:global/EjbModule236706648/org.superbiz.dynamic.SocialTest!org.superbiz.dynamic.SocialTest\")\n    INFO - Jndi(name=\"java:global/EjbModule236706648/org.superbiz.dynamic.SocialTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.dynamic.SocialTest, ejb-name=org.superbiz.dynamic.SocialTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=SocialBean, ejb-name=SocialBean, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.dynamic.SocialTest, ejb-name=org.superbiz.dynamic.SocialTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=SocialBean, ejb-name=SocialBean, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-implementation)\n    INFO - Undeploying app: /Users/dblevins/examples/dynamic-implementation\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.107 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-implementation"
+      },
+      {
+        "name":"dynamic-dao-implementation",
+        "readme":"Title: Dynamic DAO Implementation\n\nMany aspects of Data Access Objects (DAOs) are very repetitive and boiler plate.  As a fun and experimental feature, TomEE supports dynamically implementing an interface\nthat is seen to have standard DAO-style methods.\n\nThe interface has to be annotated with @PersistenceContext to define which EntityManager to use.\n\nMethods should respect these conventions:\n\n  * void save(Foo foo): persist foo\n  * Foo update(Foo foo): merge foo\n  * void delete(Foo foo): remove foo, if foo is detached it tries to attach it\n  * Collection<Foo>|Foo namedQuery(String name[, Map<String, ?> params, int first, int max]): run the named query called name, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo>|Foo nativeQuery(String name[, Map<String, ?> params, int first, int max]): run the native query called name, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo>|Foo query(String value [, Map<String, ?> params, int first, int max]): run the query put as first parameter, params contains bindings, first and max are used for magination. Last three parameters are optionnals\n  * Collection<Foo> findAll([int first, int max]): find all Foo, parameters are used for pagination\n  * Collection<Foo> findByBar1AndBar2AndBar3(<bar 1 type> bar1, <bar 2 type> bar2, <bar3 type> bar3 [, int first, int max]): find all Foo with specified field values for bar1, bar2, bar3.\n\nDynamic finder can have as much as you want field constraints. For String like is used and for other type equals is used.\n\n# Example\n\n## User\n\n    package org.superbiz.dynamic;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n    import javax.persistence.NamedQueries;\n    import javax.persistence.NamedQuery;\n    \n    @Entity\n    @NamedQueries({\n            @NamedQuery(name = \"dynamic-ejb-impl-test.query\", query = \"SELECT u FROM User AS u WHERE u.name LIKE :name\"),\n            @NamedQuery(name = \"dynamic-ejb-impl-test.all\", query = \"SELECT u FROM User AS u\")\n    })\n    public class User {\n        @Id\n        @GeneratedValue\n        private long id;\n        private String name;\n        private int age;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public void setAge(int age) {\n            this.age = age;\n        }\n    }\n\n## UserDao\n\n    package org.superbiz.dynamic;\n    \n    \n    import javax.ejb.Stateless;\n    import javax.persistence.PersistenceContext;\n    import java.util.Collection;\n    import java.util.Map;\n    \n    @Stateless\n    @PersistenceContext(name = \"dynamic\")\n    public interface UserDao {\n        User findById(long id);\n    \n        Collection<User> findByName(String name);\n    \n        Collection<User> findByNameAndAge(String name, int age);\n    \n        Collection<User> findAll();\n    \n        Collection<User> findAll(int first, int max);\n    \n        Collection<User> namedQuery(String name, Map<String, ?> params, int first, int max);\n    \n        Collection<User> namedQuery(String name, int first, int max, Map<String, ?> params);\n    \n        Collection<User> namedQuery(String name, Map<String, ?> params);\n    \n        Collection<User> namedQuery(String name);\n    \n        Collection<User> query(String value, Map<String, ?> params);\n    \n        void save(User u);\n    \n        void delete(User u);\n    \n        User update(User u);\n    }\n\n## persistence.xml\n\n    <persistence version=\"2.0\"\n                 xmlns=\"http://java.sun.com/xml/ns/persistence\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"\n          http://java.sun.com/xml/ns/persistence\n          http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">\n      <persistence-unit name=\"dynamic\" transaction-type=\"JTA\">\n        <jta-data-source>jdbc/dynamicDB</jta-data-source>\n        <class>org.superbiz.dynamic.User</class>\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n    \n\n## DynamicUserDaoTest\n\n    package org.superbiz.dynamic;\n    \n    import junit.framework.Assert;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.EJBException;\n    import javax.ejb.Stateless;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.persistence.EntityManager;\n    import javax.persistence.NoResultException;\n    import javax.persistence.PersistenceContext;\n    import java.util.Collection;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.Properties;\n    \n    import static junit.framework.Assert.assertEquals;\n    import static junit.framework.Assert.assertNotNull;\n    import static junit.framework.Assert.assertTrue;\n    \n    public class DynamicUserDaoTest {\n        private static UserDao dao;\n        private static Util util;\n    \n        @BeforeClass\n        public static void init() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"jdbc/dynamicDB\", \"new://Resource?type=DataSource\");\n            p.put(\"jdbc/dynamicDB.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"jdbc/dynamicDB.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n            p.put(\"jdbc/dynamicDB.UserName\", \"sa\");\n            p.put(\"jdbc/dynamicDB.Password\", \"\");\n    \n            final Context context = EJBContainer.createEJBContainer(p).getContext();\n            dao = (UserDao) context.lookup(\"java:global/dynamic-dao-implementation/UserDao\");\n            util = (Util) context.lookup(\"java:global/dynamic-dao-implementation/Util\");\n    \n            util.init(); // init database\n        }\n    \n        @Test\n        public void simple() {\n            User user = dao.findById(1);\n            assertNotNull(user);\n            assertEquals(1, user.getId());\n        }\n    \n        @Test\n        public void findAll() {\n            Collection<User> users = dao.findAll();\n            assertEquals(10, users.size());\n        }\n    \n        @Test\n        public void pagination() {\n            Collection<User> users = dao.findAll(0, 5);\n            assertEquals(5, users.size());\n    \n            users = dao.findAll(6, 1);\n            assertEquals(1, users.size());\n            assertEquals(7, users.iterator().next().getId());\n        }\n    \n        @Test\n        public void persist() {\n            User u = new User();\n            dao.save(u);\n            assertNotNull(u.getId());\n            util.remove(u);\n        }\n    \n        @Test\n        public void remove() {\n            User u = new User();\n            dao.save(u);\n            assertNotNull(u.getId());\n            dao.delete(u);\n            try {\n                dao.findById(u.getId());\n                Assert.fail();\n            } catch (EJBException ee) {\n                assertTrue(ee.getCause() instanceof NoResultException);\n            }\n        }\n    \n        @Test\n        public void merge() {\n            User u = new User();\n            u.setAge(1);\n            dao.save(u);\n            assertEquals(1, u.getAge());\n            assertNotNull(u.getId());\n    \n            u.setAge(2);\n            dao.update(u);\n            assertEquals(2, u.getAge());\n    \n            dao.delete(u);\n        }\n    \n        @Test\n        public void oneCriteria() {\n            Collection<User> users = dao.findByName(\"foo\");\n            assertEquals(4, users.size());\n            for (User user : users) {\n                assertEquals(\"foo\", user.getName());\n            }\n        }\n    \n        @Test\n        public void twoCriteria() {\n            Collection<User> users = dao.findByNameAndAge(\"bar-1\", 1);\n            assertEquals(1, users.size());\n    \n            User user = users.iterator().next();\n            assertEquals(\"bar-1\", user.getName());\n            assertEquals(1, user.getAge());\n        }\n    \n        @Test\n        public void query() {\n            Map<String, Object> params = new HashMap<String, Object>();\n            params.put(\"name\", \"foo\");\n    \n            Collection<User> users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params, 0, 100);\n            assertEquals(4, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params);\n            assertEquals(4, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", params, 0, 2);\n            assertEquals(2, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.query\", 0, 2, params);\n            assertEquals(2, users.size());\n    \n            users = dao.namedQuery(\"dynamic-ejb-impl-test.all\");\n            assertEquals(10, users.size());\n    \n            params.remove(\"name\");\n            params.put(\"age\", 1);\n            users = dao.query(\"SELECT u FROM User AS u WHERE u.age = :age\", params);\n            assertEquals(3, users.size());\n        }\n    \n        @Stateless\n        public static class Util {\n            @PersistenceContext\n            private EntityManager em;\n    \n            public void remove(User o) {\n                em.remove(em.find(User.class, o.getId()));\n            }\n    \n            public void init() {\n                for (int i = 0; i < 10; i++) {\n                    User u = new User();\n                    u.setAge(i % 4);\n                    if (i % 3 == 0) {\n                        u.setName(\"foo\");\n                    } else {\n                        u.setName(\"bar-\" + i);\n                    }\n                    em.persist(u);\n                }\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.dynamic.DynamicUserDaoTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - openejb.base = /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=jdbc/dynamicDB, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-dao-implementation/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-dao-implementation/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-dao-implementation/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-dao-implementation/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean UserDao: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.dynamic.DynamicUserDaoTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=dynamic)\n    INFO - Auto-creating a Resource with id 'jdbc/dynamicDBNonJta' of type 'DataSource for 'dynamic'.\n    INFO - Configuring Service(id=jdbc/dynamicDBNonJta, type=Resource, provider-id=jdbc/dynamicDB)\n    INFO - Adjusting PersistenceUnit dynamic <non-jta-data-source> to Resource ID 'jdbc/dynamicDBNonJta' from 'null'\n    INFO - Enterprise application \"/Users/dblevins/examples/dynamic-dao-implementation\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/dynamic-dao-implementation\n    INFO - PersistenceUnit(name=dynamic, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 417ms\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/UserDao!org.superbiz.dynamic.UserDao\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/UserDao\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/Util!org.superbiz.dynamic.DynamicUserDaoTest$Util\")\n    INFO - Jndi(name=\"java:global/dynamic-dao-implementation/Util\")\n    INFO - Jndi(name=\"java:global/EjbModule346613126/org.superbiz.dynamic.DynamicUserDaoTest!org.superbiz.dynamic.DynamicUserDaoTest\")\n    INFO - Jndi(name=\"java:global/EjbModule346613126/org.superbiz.dynamic.DynamicUserDaoTest\")\n    INFO - Created Ejb(deployment-id=UserDao, ejb-name=UserDao, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=Util, ejb-name=Util, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.dynamic.DynamicUserDaoTest, ejb-name=org.superbiz.dynamic.DynamicUserDaoTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=UserDao, ejb-name=UserDao, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=Util, ejb-name=Util, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.dynamic.DynamicUserDaoTest, ejb-name=org.superbiz.dynamic.DynamicUserDaoTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-dao-implementation)\n    WARN - Meta class \"org.superbiz.dynamic.User_\" for entity class org.superbiz.dynamic.User can not be registered with following exception \"java.security.PrivilegedActionException: java.lang.ClassNotFoundException: org.superbiz.dynamic.User_\"\n    WARN - Query \"SELECT u FROM User AS u WHERE u.name LIKE :name\" is removed from cache  excluded permanently. Query \"SELECT u FROM User AS u WHERE u.name LIKE :name\" is not cached because it uses pagination..\n    Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.471 sec\n    \n    Results :\n    \n    Tests run: 9, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-dao-implementation"
+      }
+    ],
+    "inheritance":[
+      {
+        "name":"webservice-inheritance",
+        "readme":"Title: Webservice Inheritance\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Item\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    import javax.persistence.Inheritance;\n    import javax.persistence.InheritanceType;\n    import java.io.Serializable;\n    \n    @Entity\n    @Inheritance(strategy = InheritanceType.JOINED)\n    public class Item implements Serializable {\n        @Id\n        @GeneratedValue(strategy = GenerationType.AUTO)\n        private Long id;\n        private String brand;\n        private String itemName;\n        private double price;\n    \n        public Long getId() {\n            return id;\n        }\n    \n        public void setId(Long id) {\n            this.id = id;\n        }\n    \n        public String getBrand() {\n            return brand;\n        }\n    \n        public void setBrand(String brand) {\n            this.brand = brand;\n        }\n    \n        public String getItemName() {\n            return itemName;\n        }\n    \n        public void setItemName(String itemName) {\n            this.itemName = itemName;\n        }\n    \n        public double getPrice() {\n            return price;\n        }\n    \n        public void setPrice(double price) {\n            this.price = price;\n        }\n    }\n\n## Tower\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Tower extends Item {\n        private Fit fit;\n        private String tubing;\n    \n        public static enum Fit {\n            Custom, Exact, Universal\n        }\n    \n        public Fit getFit() {\n            return fit;\n        }\n    \n        public void setFit(Fit fit) {\n            this.fit = fit;\n        }\n    \n        public String getTubing() {\n            return tubing;\n        }\n    \n        public void setTubing(String tubing) {\n            this.tubing = tubing;\n        }\n    \n        ;\n    }\n\n## Wakeboard\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Wakeboard extends Wearable {\n    }\n\n## WakeboardBinding\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class WakeboardBinding extends Wearable {\n    }\n\n## WakeRiderImpl\n\n    package org.superbiz.inheritance;\n    \n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean Every stateless session\n     * bean implementation must be annotated using the annotation @Stateless This\n     * EJB has a single interface: {@link WakeRiderWs} a webservice interface.\n     */\n    @Stateless\n    @WebService(\n            portName = \"InheritancePort\",\n            serviceName = \"InheritanceWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.inheritance.WakeRiderWs\")\n    public class WakeRiderImpl implements WakeRiderWs {\n    \n        @PersistenceContext(unitName = \"wakeboard-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        public void addItem(Item item) throws Exception {\n            entityManager.persist(item);\n        }\n    \n        public void deleteMovie(Item item) throws Exception {\n            entityManager.remove(item);\n        }\n    \n        public List<Item> getItems() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT i FROM Item i\");\n            List<Item> items = query.getResultList();\n            return items;\n        }\n    }\n\n## WakeRiderWs\n\n    package org.superbiz.inheritance;\n    \n    import javax.jws.WebService;\n    import javax.xml.bind.annotation.XmlSeeAlso;\n    import java.util.List;\n    \n    /**\n     * This is an EJB 3 webservice interface that uses inheritance.\n     */\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    @XmlSeeAlso({Wakeboard.class, WakeboardBinding.class, Tower.class})\n    public interface WakeRiderWs {\n        public void addItem(Item item) throws Exception;\n    \n        public void deleteMovie(Item item) throws Exception;\n    \n        public List<Item> getItems() throws Exception;\n    }\n\n## Wearable\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.MappedSuperclass;\n    \n    @MappedSuperclass\n    public abstract class Wearable extends Item {\n        protected String size;\n    \n        public String getSize() {\n            return size;\n        }\n    \n        public void setSize(String size) {\n            this.size = size;\n        }\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n    \n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"wakeboard-unit\">\n    \n        <jta-data-source>wakeBoardDatabase</jta-data-source>\n        <non-jta-data-source>wakeBoardDatabaseUnmanaged</non-jta-data-source>\n    \n        <class>org.superbiz.inheritance.Item</class>\n        <class>org.superbiz.inheritance.Tower</class>\n        <class>org.superbiz.inheritance.Wakeboard</class>\n        <class>org.superbiz.inheritance.WakeboardBinding</class>\n        <class>org.superbiz.inheritance.Wearable</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n    \n      </persistence-unit>\n    </persistence>\n\n## InheritanceTest\n\n    package org.superbiz.inheritance;\n    \n    import junit.framework.TestCase;\n    import org.superbiz.inheritance.Tower.Fit;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.Service;\n    import java.net.URL;\n    import java.util.List;\n    import java.util.Properties;\n    \n    public class InheritanceTest extends TestCase {\n    \n        //START SNIPPET: setup\t\n        private InitialContext initialContext;\n    \n        protected void setUp() throws Exception {\n    \n            Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            p.put(\"wakeBoardDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"wakeBoardDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"wakeBoardDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:wakeBoarddb\");\n    \n            p.put(\"wakeBoardDatabaseUnmanaged\", \"new://Resource?type=DataSource\");\n            p.put(\"wakeBoardDatabaseUnmanaged.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"wakeBoardDatabaseUnmanaged.JdbcUrl\", \"jdbc:hsqldb:mem:wakeBoarddb\");\n            p.put(\"wakeBoardDatabaseUnmanaged.JtaManaged\", \"false\");\n    \n            p.put(\"openejb.embedded.remotable\", \"true\");\n    \n            initialContext = new InitialContext(p);\n        }\n        //END SNIPPET: setup    \n    \n        /**\n         * Create a webservice client using wsdl url\n         *\n         * @throws Exception\n         */\n        //START SNIPPET: webservice\n        public void testInheritanceViaWsInterface() throws Exception {\n            Service service = Service.create(\n                    new URL(\"http://127.0.0.1:4204/WakeRiderImpl?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"InheritanceWsService\"));\n            assertNotNull(service);\n    \n            WakeRiderWs ws = service.getPort(WakeRiderWs.class);\n    \n            Tower tower = createTower();\n            Item item = createItem();\n            Wakeboard wakeBoard = createWakeBoard();\n            WakeboardBinding wakeBoardbinding = createWakeboardBinding();\n    \n            ws.addItem(tower);\n            ws.addItem(item);\n            ws.addItem(wakeBoard);\n            ws.addItem(wakeBoardbinding);\n    \n    \n            List<Item> returnedItems = ws.getItems();\n    \n            assertEquals(\"testInheritanceViaWsInterface, nb Items\", 4, returnedItems.size());\n    \n            //check tower\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", returnedItems.get(0).getClass(), Tower.class);\n            tower = (Tower) returnedItems.get(0);\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getBrand(), \"Tower brand\");\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getFit().ordinal(), Fit.Custom.ordinal());\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getItemName(), \"Tower item name\");\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getPrice(), 1.0d);\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getTubing(), \"Tower tubing\");\n    \n            //check item\n            assertEquals(\"testInheritanceViaWsInterface, second Item\", returnedItems.get(1).getClass(), Item.class);\n            item = (Item) returnedItems.get(1);\n            assertEquals(\"testInheritanceViaWsInterface, second Item\", item.getBrand(), \"Item brand\");\n            assertEquals(\"testInheritanceViaWsInterface, second Item\", item.getItemName(), \"Item name\");\n            assertEquals(\"testInheritanceViaWsInterface, second Item\", item.getPrice(), 2.0d);\n    \n            //check wakeboard\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", returnedItems.get(2).getClass(), Wakeboard.class);\n            wakeBoard = (Wakeboard) returnedItems.get(2);\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", wakeBoard.getBrand(), \"Wakeboard brand\");\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", wakeBoard.getItemName(), \"Wakeboard item name\");\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", wakeBoard.getPrice(), 3.0d);\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", wakeBoard.getSize(), \"WakeBoard size\");\n    \n            //check wakeboardbinding\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", returnedItems.get(3).getClass(), WakeboardBinding.class);\n            wakeBoardbinding = (WakeboardBinding) returnedItems.get(3);\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", wakeBoardbinding.getBrand(), \"Wakeboardbinding brand\");\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", wakeBoardbinding.getItemName(), \"Wakeboardbinding item name\");\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", wakeBoardbinding.getPrice(), 4.0d);\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", wakeBoardbinding.getSize(), \"WakeBoardbinding size\");\n        }\n        //END SNIPPET: webservice\n    \n        private Tower createTower() {\n            Tower tower = new Tower();\n            tower.setBrand(\"Tower brand\");\n            tower.setFit(Fit.Custom);\n            tower.setItemName(\"Tower item name\");\n            tower.setPrice(1.0f);\n            tower.setTubing(\"Tower tubing\");\n            return tower;\n        }\n    \n        private Item createItem() {\n            Item item = new Item();\n            item.setBrand(\"Item brand\");\n            item.setItemName(\"Item name\");\n            item.setPrice(2.0f);\n            return item;\n        }\n    \n        private Wakeboard createWakeBoard() {\n            Wakeboard wakeBoard = new Wakeboard();\n            wakeBoard.setBrand(\"Wakeboard brand\");\n            wakeBoard.setItemName(\"Wakeboard item name\");\n            wakeBoard.setPrice(3.0f);\n            wakeBoard.setSize(\"WakeBoard size\");\n            return wakeBoard;\n        }\n    \n        private WakeboardBinding createWakeboardBinding() {\n            WakeboardBinding wakeBoardBinding = new WakeboardBinding();\n            wakeBoardBinding.setBrand(\"Wakeboardbinding brand\");\n            wakeBoardBinding.setItemName(\"Wakeboardbinding item name\");\n            wakeBoardBinding.setPrice(4.0f);\n            wakeBoardBinding.setSize(\"WakeBoardbinding size\");\n            return wakeBoardBinding;\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.inheritance.InheritanceTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-inheritance\n    INFO - openejb.base = /Users/dblevins/examples/webservice-inheritance\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=wakeBoardDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=wakeBoardDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-inheritance/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-inheritance/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-inheritance/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean WakeRiderImpl: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring PersistenceUnit(name=wakeboard-unit)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-inheritance/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-inheritance/classpath.ear\n    INFO - PersistenceUnit(name=wakeboard-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 396ms\n    INFO - Created Ejb(deployment-id=WakeRiderImpl, ejb-name=WakeRiderImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=WakeRiderImpl, ejb-name=WakeRiderImpl, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-inheritance/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    WARN - Found no persistent property in \"org.superbiz.inheritance.WakeboardBinding\"\n    WARN - Found no persistent property in \"org.superbiz.inheritance.Wakeboard\"\n    WARN - Found no persistent property in \"org.superbiz.inheritance.WakeboardBinding\"\n    WARN - Found no persistent property in \"org.superbiz.inheritance.Wakeboard\"\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.442 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-inheritance"
+      }
+    ],
+    "injection":[
+      {
+        "name":"injection-of-connectionfactory",
+        "readme":"Title: Injection Of Connectionfactory\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Messages\n\n    package org.superbiz.injection.jms;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.Stateless;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    @Stateless\n    public class Messages {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource\n        private Queue chatQueue;\n    \n    \n        public void sendMessage(String text) throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n    \n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageProducer from the Session to the Topic or Queue\n                MessageProducer producer = session.createProducer(chatQueue);\n                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                // Create a message\n                TextMessage message = session.createTextMessage(text);\n    \n                // Tell the producer to send the message\n                producer.send(message);\n            } finally {\n                // Clean up\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    \n        public String receiveMessage() throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n            MessageConsumer consumer = null;\n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageConsumer from the Session to the Topic or Queue\n                consumer = session.createConsumer(chatQueue);\n    \n                // Wait for a message\n                TextMessage message = (TextMessage) consumer.receive(1000);\n    \n                return message.getText();\n            } finally {\n                if (consumer != null) consumer.close();\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    }\n\n## MessagingBeanTest\n\n    package org.superbiz.injection.jms;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    public class MessagingBeanTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            Messages messages = (Messages) context.lookup(\"java:global/injection-of-connectionfactory/Messages\");\n    \n            messages.sendMessage(\"Hello World!\");\n            messages.sendMessage(\"How are you?\");\n            messages.sendMessage(\"Still spinning?\");\n    \n            assertEquals(messages.receiveMessage(), \"Hello World!\");\n            assertEquals(messages.receiveMessage(), \"How are you?\");\n            assertEquals(messages.receiveMessage(), \"Still spinning?\");\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.jms.MessagingBeanTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-connectionfactory/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-connectionfactory/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-connectionfactory\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Messages: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)\n    INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'Messages'.\n    INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.injection.jms.Messages/connectionFactory' in bean Messages to Resource(id=Default JMS Connection Factory)\n    INFO - Configuring Service(id=org.superbiz.injection.jms.Messages/chatQueue, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'org.superbiz.injection.jms.Messages/chatQueue' of type 'javax.jms.Queue for 'Messages'.\n    INFO - Auto-linking resource-env-ref 'java:comp/env/org.superbiz.injection.jms.Messages/chatQueue' in bean Messages to Resource(id=org.superbiz.injection.jms.Messages/chatQueue)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.jms.MessagingBeanTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-connectionfactory\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - Jndi(name=\"java:global/injection-of-connectionfactory/Messages!org.superbiz.injection.jms.Messages\")\n    INFO - Jndi(name=\"java:global/injection-of-connectionfactory/Messages\")\n    INFO - Jndi(name=\"java:global/EjbModule1634151355/org.superbiz.injection.jms.MessagingBeanTest!org.superbiz.injection.jms.MessagingBeanTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1634151355/org.superbiz.injection.jms.MessagingBeanTest\")\n    INFO - Created Ejb(deployment-id=Messages, ejb-name=Messages, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.jms.MessagingBeanTest, ejb-name=org.superbiz.injection.jms.MessagingBeanTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Messages, ejb-name=Messages, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.jms.MessagingBeanTest, ejb-name=org.superbiz.injection.jms.MessagingBeanTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-connectionfactory)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.562 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-connectionfactory"
+      },
+      {
+        "name":"testcase-injection",
+        "readme":"Title: Testcase Injection\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.testinjection;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.testinjection;\n    \n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    import static javax.ejb.TransactionAttributeType.MANDATORY;\n    \n    //START SNIPPET: code\n    @Stateful\n    @TransactionAttribute(MANDATORY)\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.testinjection.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.testinjection;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.transaction.UserTransaction;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @Resource\n        private UserTransaction userTransaction;\n    \n        @PersistenceContext\n        private EntityManager entityManager;\n    \n        public void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        public void test() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n    \n                for (Movie movie : list) {\n                    movies.deleteMovie(movie);\n                }\n    \n                assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n            } finally {\n                userTransaction.commit();\n            }\n    \n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.testinjection.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testcase-injection\n    INFO - openejb.base = /Users/dblevins/examples/testcase-injection\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testcase-injection/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testcase-injection/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testcase-injection\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.testinjection.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testcase-injection\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testcase-injection\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 408ms\n    INFO - Jndi(name=\"java:global/testcase-injection/Movies!org.superbiz.testinjection.Movies\")\n    INFO - Jndi(name=\"java:global/testcase-injection/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1583515396/org.superbiz.testinjection.MoviesTest!org.superbiz.testinjection.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1583515396/org.superbiz.testinjection.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.testinjection.MoviesTest, ejb-name=org.superbiz.testinjection.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.testinjection.MoviesTest, ejb-name=org.superbiz.testinjection.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testcase-injection)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.24 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testcase-injection"
+      },
+      {
+        "name":"injection-of-env-entry",
+        "readme":"Title: Using EnvEntries\n\nThe `@Resource` annotation can be used to inject several things including\nDataSources, Topics, Queues, etc.  Most of these are container supplied objects.\n\nIt is possible, however, to supply your own values to be injected via an `<env-entry>`\nin your `ejb-jar.xml` or `web.xml` deployment descriptor.  Java EE 6 supported `<env-entry>` types\nare limited to the following:\n\n - java.lang.String\n - java.lang.Integer\n - java.lang.Short\n - java.lang.Float\n - java.lang.Double\n - java.lang.Byte\n - java.lang.Character\n - java.lang.Boolean\n - java.lang.Class\n - java.lang.Enum (any enum)\n\nSee also the [Custom Injection](../custom-injection) exmaple for a TomEE and OpenEJB feature that will let you\nuse more than just the above types as well as declare `<env-entry>` items with a plain properties file.\n\n# Using @Resource for basic properties\n\nThe use of the `@Resource` annotation isn't limited to setters.  For\nexample, this annotation could have been used on the corresponding *field*\nlike so:\n\n    @Resource\n    private int maxLineItems;\n\nA fuller example might look like this:\n\n    package org.superbiz.injection.enventry;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.Singleton;\n    import java.util.Date;\n    \n    @Singleton\n    public class Configuration {\n    \n        @Resource\n        private String color;\n    \n        @Resource\n        private Shape shape;\n    \n        @Resource\n        private Class strategy;\n    \n        @Resource(name = \"date\")\n        private long date;\n    \n        public String getColor() {\n            return color;\n        }\n    \n        public Shape getShape() {\n            return shape;\n        }\n    \n        public Class getStrategy() {\n            return strategy;\n        }\n    \n        public Date getDate() {\n            return new Date(date);\n        }\n    }\n\nHere we have an `@Singleton` bean called `Confuration` that has the following properties (`<env-entry>` items)\n\n- String color\n- Shape shape\n- Class strategy\n- long date\n\n## Supplying @Resource values for <env-entry> items in ejb-jar.xml\n\nThe values for our `color`, `shape`, `strategy` and `date` properties are supplied via `<env-entry>` elements in the `ejb-jar.xml` file or the\n`web.xml` file like so:\n\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" version=\"3.0\" metadata-complete=\"false\">\n      <enterprise-beans>\n        <session>\n          <ejb-name>Configuration</ejb-name>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>\n            <env-entry-type>java.lang.String</env-entry-type>\n            <env-entry-value>orange</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>\n            <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>\n            <env-entry-value>TRIANGLE</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/strategy</env-entry-name>\n            <env-entry-type>java.lang.Class</env-entry-type>\n            <env-entry-value>org.superbiz.injection.enventry.Widget</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>\n            <env-entry-name>date</env-entry-name>\n            <env-entry-type>java.lang.Long</env-entry-type>\n            <env-entry-value>123456789</env-entry-value>\n          </env-entry>\n        </session>\n      </enterprise-beans>\n    </ejb-jar>\n\n\n### Using the @Resource 'name' attribute\n\nNote that `date` was referenced by `name` as:\n\n    @Resource(name = \"date\")\n    private long date;\n\nWhen the `@Resource(name)` is used, you do not need to specify the full class name of the bean and can do it briefly like so:\n\n      <env-entry>\n        <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>\n        <env-entry-name>date</env-entry-name>\n        <env-entry-type>java.lang.Long</env-entry-type>\n        <env-entry-value>123456789</env-entry-value>\n      </env-entry>\n\nConversly, `color` was not referenced by `name`\n\n    @Resource\n    private String color;\n\nWhen something is not referenced by `name` in the `@Resource` annotation a default name is created.  The format is essentially this:\n\n    bean.getClass() + \"/\" + field.getName()\n\nSo the default `name` of the above `color` property ends up being `org.superbiz.injection.enventry.Configuration/color`.  This is the name\nwe must use when we attempt to decalre a value for it in xml.\n\n      <env-entry>\n        <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>\n        <env-entry-type>java.lang.String</env-entry-type>\n        <env-entry-value>orange</env-entry-value>\n      </env-entry>\n\n### @Resource and Enum (Enumerations)\n\nThe `shape` field is actually a custom Java Enum type\n\n    package org.superbiz.injection.enventry;\n\n    public enum Shape {\n    \n        CIRCLE,\n        TRIANGLE,\n        SQUARE\n    }\n\nAs of Java EE 6, java.lang.Enum types are allowed as `<env-entry>` items.  Declaring one in xml is done using the actual enum's class name like so:\n\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>\n            <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>\n            <env-entry-value>TRIANGLE</env-entry-value>\n          </env-entry>\n\nDo not use `<env-entry-type>java.lang.Enum</env-entry-type>` or it will not work!\n\n## ConfigurationTest\n\n    package org.superbiz.injection.enventry;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.Date;\n    \n    public class ConfigurationTest extends TestCase {\n    \n    \n        public void test() throws Exception {\n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            final Configuration configuration = (Configuration) context.lookup(\"java:global/injection-of-env-entry/Configuration\");\n    \n            assertEquals(\"orange\", configuration.getColor());\n    \n            assertEquals(Shape.TRIANGLE, configuration.getShape());\n    \n            assertEquals(Widget.class, configuration.getStrategy());\n    \n            assertEquals(new Date(123456789), configuration.getDate());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.enventry.ConfigurationTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-env-entry\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-env-entry\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-env-entry/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-env-entry/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-env-entry\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean Configuration: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.enventry.ConfigurationTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-env-entry\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-env-entry\n    INFO - Jndi(name=\"java:global/injection-of-env-entry/Configuration!org.superbiz.injection.enventry.Configuration\")\n    INFO - Jndi(name=\"java:global/injection-of-env-entry/Configuration\")\n    INFO - Jndi(name=\"java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest!org.superbiz.injection.enventry.ConfigurationTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-env-entry)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.664 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-env-entry"
+      },
+      {
+        "name":"injection-of-entitymanager",
+        "readme":"Title: Injection Of Entitymanager\n\nThis example shows use of `@PersistenceContext` to have an `EntityManager` with an\n`EXTENDED` persistence context injected into a `@Stateful bean`. A JPA\n`@Entity` bean is used with the `EntityManager` to create, persist and merge\ndata to a database.\n\n## Creating the JPA Entity\n\nThe entity itself is simply a pojo annotated with `@Entity`.  We create one called `Movie` which we can use to hold movie records.\n\n    package org.superbiz.injection.jpa;\n\n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n\n        @Id @GeneratedValue\n        private long id;\n\n        private String director;\n        private String title;\n        private int year;\n\n        public Movie() {\n        }\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n\n        public String getDirector() {\n            return director;\n        }\n\n        public void setDirector(String director) {\n            this.director = director;\n        }\n\n        public String getTitle() {\n            return title;\n        }\n\n        public void setTitle(String title) {\n            this.title = title;\n        }\n\n        public int getYear() {\n            return year;\n        }\n\n        public void setYear(int year) {\n            this.year = year;\n        }\n    }\n\n## Configure the EntityManager via a persistence.xml file\n\nThe above `Movie` entity can be created, removed, updated or deleted via an `EntityManager` object.  The `EntityManager` itself is\nconfigured via a `META-INF/persistence.xml` file that is placed in the same jar as the `Movie` entity.\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n\n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.jpa.Movie</class>\n\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\nNotice that the `Movie` entity is listed via a `<class>` element.  This is not required, but can help when testing or when the\n`Movie` class is located in a different jar than the jar containing the `persistence.xml` file.\n\n## Injection via @PersistenceContext\n\nThe `EntityManager` itself is created by the container using the information in the `persistence.xml`, so to use it at\nruntime, we simply need to request it be injected into one of our components.  We do this via `@PersistenceContext`\n\nThe `@PersistenceContext` annotation can be used on any CDI bean, EJB, Servlet, Servlet Listener, Servlet Filter, or JSF ManagedBean.  If you don't use an EJB you will need to use a `UserTransaction` begin and commit transactions manually.  A transaction is required for any of the create, update or delete methods of the EntityManager to work.\n\n    package org.superbiz.injection.jpa;\n\n    import javax.ejb.Stateful;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\nThis particular `EntityManager` is injected as an `EXTENDED` persistence context, which simply means that the `EntityManager`\nis created when the `@Stateful` bean is created and destroyed when the `@Stateful` bean is destroyed.  Simply put, the\ndata in the `EntityManager` is cached for the lifetime of the `@Stateful` bean.\n\nThe use of `EXTENDED` persistence contexts is **only** available to `@Stateful` beans.  See the [JPA Concepts](../../jpa-concepts.html) page for an high level explanation of what a \"persistence context\" really is and how it is significant to JPA.\n\n## MoviesTest\n\nTesting JPA is quite easy, we can simply use the `EJBContainer` API to create a container in our test case.\n\n    package org.superbiz.injection.jpa;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            final Context context = EJBContainer.createEJBContainer(p).getContext();\n    \n            Movies movies = (Movies) context.lookup(\"java:global/injection-of-entitymanager/Movies\");\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n# Running\n\nWhen we run our test case we should see output similar to the following.\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.jpa.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-entitymanager\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-entitymanager\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-entitymanager/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-entitymanager/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-entitymanager\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.jpa.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-entitymanager\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-entitymanager\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 462ms\n    INFO - Jndi(name=\"java:global/injection-of-entitymanager/Movies!org.superbiz.injection.jpa.Movies\")\n    INFO - Jndi(name=\"java:global/injection-of-entitymanager/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest!org.superbiz.injection.jpa.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-entitymanager)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.301 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-entitymanager"
+      },
+      {
+        "name":"injection-of-datasource",
+        "readme":"Title: Injection Of Datasource\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection;\n    \n    /**\n     * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $\n     */\n    public class Movie {\n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection;\n    \n    import javax.annotation.PostConstruct;\n    import javax.annotation.Resource;\n    import javax.ejb.Stateful;\n    import javax.sql.DataSource;\n    import java.sql.Connection;\n    import java.sql.PreparedStatement;\n    import java.sql.ResultSet;\n    import java.util.ArrayList;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        /**\n         * The field name \"movieDatabase\" matches the DataSource we\n         * configure in the TestCase via :\n         * p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n         * <p/>\n         * This would also match an equivalent delcaration in an openejb.xml:\n         * <Resource id=\"movieDatabase\" type=\"DataSource\"/>\n         * <p/>\n         * If you'd like the freedom to change the field name without\n         * impact on your configuration you can set the \"name\" attribute\n         * of the @Resource annotation to \"movieDatabase\" instead.\n         */\n        @Resource\n        private DataSource movieDatabase;\n    \n        @PostConstruct\n        private void construct() throws Exception {\n            Connection connection = movieDatabase.getConnection();\n            try {\n                PreparedStatement stmt = connection.prepareStatement(\"CREATE TABLE movie ( director VARCHAR(255), title VARCHAR(255), year integer)\");\n                stmt.execute();\n            } finally {\n                connection.close();\n            }\n        }\n    \n        public void addMovie(Movie movie) throws Exception {\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"INSERT into movie (director, title, year) values (?, ?, ?)\");\n                sql.setString(1, movie.getDirector());\n                sql.setString(2, movie.getTitle());\n                sql.setInt(3, movie.getYear());\n                sql.execute();\n            } finally {\n                conn.close();\n            }\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"DELETE from movie where director = ? AND title = ? AND year = ?\");\n                sql.setString(1, movie.getDirector());\n                sql.setString(2, movie.getTitle());\n                sql.setInt(3, movie.getYear());\n                sql.execute();\n            } finally {\n                conn.close();\n            }\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            ArrayList<Movie> movies = new ArrayList<Movie>();\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"SELECT director, title, year from movie\");\n                ResultSet set = sql.executeQuery();\n                while (set.next()) {\n                    Movie movie = new Movie();\n                    movie.setDirector(set.getString(\"director\"));\n                    movie.setTitle(set.getString(\"title\"));\n                    movie.setYear(set.getInt(\"year\"));\n                    movies.add(movie);\n                }\n            } finally {\n                conn.close();\n            }\n            return movies;\n        }\n    }\n\n## MoviesTest\n\n    package org.superbiz.injection;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            Context context = EJBContainer.createEJBContainer(p).getContext();\n    \n            Movies movies = (Movies) context.lookup(\"java:global/injection-of-datasource/Movies\");\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-datasource\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-datasource\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-datasource/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-datasource/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-datasource\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.injection.Movies/movieDatabase' in bean Movies to Resource(id=movieDatabase)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-datasource\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-datasource\n    INFO - Jndi(name=\"java:global/injection-of-datasource/Movies!org.superbiz.injection.Movies\")\n    INFO - Jndi(name=\"java:global/injection-of-datasource/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1508028338/org.superbiz.injection.MoviesTest!org.superbiz.injection.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1508028338/org.superbiz.injection.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.MoviesTest, ejb-name=org.superbiz.injection.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.MoviesTest, ejb-name=org.superbiz.injection.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-datasource)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.276 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-datasource"
+      },
+      {
+        "name":"injection-of-ejbs",
+        "readme":"Title: Injection Of Ejbs\n\nThis example shows how to use the @EJB annotation on a bean class to refer to other beans.\n\nThis functionality is often referred as dependency injection (see\nhttp://www.martinfowler.com/articles/injection.html), and has been recently introduced in\nJava EE 5.\n\nIn this particular example, we will create two session stateless beans\n\n  * a DataStore session bean\n  * a DataReader session bean\n\nThe DataReader bean uses the DataStore to retrieve some informations, and\nwe will see how we can, inside the DataReader bean, get a reference to the\nDataStore bean using the @EJB annotation, thus avoiding the use of the\nJNDI API.\n\n## DataReader\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.Stateless;\n    \n    /**\n     * This is an EJB 3.1 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has 2 business interfaces: DataReaderRemote, a remote business\n     * interface, and DataReaderLocal, a local business interface\n     * <p/>\n     * The instance variables 'dataStoreRemote' is annotated with the @EJB annotation:\n     * this means that the application server, at runtime, will inject in this instance\n     * variable a reference to the EJB DataStoreRemote\n     * <p/>\n     * The instance variables 'dataStoreLocal' is annotated with the @EJB annotation:\n     * this means that the application server, at runtime, will inject in this instance\n     * variable a reference to the EJB DataStoreLocal\n     */\n    //START SNIPPET: code\n    @Stateless\n    public class DataReader {\n    \n        @EJB\n        private DataStoreRemote dataStoreRemote;\n        @EJB\n        private DataStoreLocal dataStoreLocal;\n        @EJB\n        private DataStore dataStore;\n    \n        public String readDataFromLocalStore() {\n            return \"LOCAL:\" + dataStoreLocal.getData();\n        }\n    \n        public String readDataFromLocalBeanStore() {\n            return \"LOCALBEAN:\" + dataStore.getData();\n        }\n    \n        public String readDataFromRemoteStore() {\n            return \"REMOTE:\" + dataStoreRemote.getData();\n        }\n    }\n\n## DataStore\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.LocalBean;\n    import javax.ejb.Stateless;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has 2 business interfaces: DataStoreRemote, a remote business\n     * interface, and DataStoreLocal, a local business interface\n     */\n    //START SNIPPET: code\n    @Stateless\n    @LocalBean\n    public class DataStore implements DataStoreLocal, DataStoreRemote {\n    \n        public String getData() {\n            return \"42\";\n        }\n    }\n\n## DataStoreLocal\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.Local;\n    \n    /**\n     * This is an EJB 3 local business interface\n     * A local business interface may be annotated with the @Local\n     * annotation, but it's optional. A business interface which is\n     * not annotated with @Local or @Remote is assumed to be Local\n     */\n    //START SNIPPET: code\n    @Local\n    public interface DataStoreLocal {\n    \n        public String getData();\n    }\n\n## DataStoreRemote\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.Remote;\n    \n    /**\n     * This is an EJB 3 remote business interface\n     * A remote business interface must be annotated with the @Remote\n     * annotation\n     */\n    //START SNIPPET: code\n    @Remote\n    public interface DataStoreRemote {\n    \n        public String getData();\n    }\n\n## EjbDependencyTest\n\n    package org.superbiz.injection;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    /**\n     * A test case for DataReaderImpl ejb, testing both the remote and local interface\n     */\n    //START SNIPPET: code\n    public class EjbDependencyTest extends TestCase {\n    \n        public void test() throws Exception {\n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            DataReader dataReader = (DataReader) context.lookup(\"java:global/injection-of-ejbs/DataReader\");\n    \n            assertNotNull(dataReader);\n    \n            assertEquals(\"LOCAL:42\", dataReader.readDataFromLocalStore());\n            assertEquals(\"REMOTE:42\", dataReader.readDataFromRemoteStore());\n            assertEquals(\"LOCALBEAN:42\", dataReader.readDataFromLocalBeanStore());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.EjbDependencyTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-ejbs\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-ejbs\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-ejbs/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-ejbs/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-ejbs\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean DataReader: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.EjbDependencyTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-ejbs\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-ejbs\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataReader!org.superbiz.injection.DataReader\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataReader\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStore\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreLocal\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreRemote\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore\")\n    INFO - Jndi(name=\"java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest!org.superbiz.injection.EjbDependencyTest\")\n    INFO - Jndi(name=\"java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest\")\n    INFO - Created Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-ejbs)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.225 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-ejbs"
+      },
+      {
+        "name":"custom-injection",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/custom-injection"
+      }
+    ],
+    "interceptor":[
+      {
+        "name":"interceptors",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/interceptors"
+      },
+      {
+        "name":"cdi-interceptors",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-interceptors"
+      },
+      {
+        "name":"simple-cdi-interceptor",
+        "readme":"#Simple CDI Interceptor\n\nLet's write a simple application that would allow us to book tickets for a movie show. As with all applications, logging is one cross-cutting concern that we have. \n\n(Relevant snippets are inlined but you can check out the complete code, from the links provided)\n\nHow do we mark which methods are to be intercepted ? Wouldn't it be handy to annotate a method like \n\n    @Log\n    public void aMethod(){...} \n\nLet's create an  annotation that would \"mark\" a method for interception. \n\n    @InterceptorBinding\n    @Target({ TYPE, METHOD })\n    @Retention(RUNTIME)\n    public @interface Log {\n    }\n\nSure, you haven't missed the @InterceptorBinding annotation above ! Now that our custom annotation is created, lets attach it (or to use a better term for it, \"bind it\" )\nto an interceptor. \n\nSo here's our logging interceptor. An @AroundInvoke method and we are almost done.\n\n    @Interceptor\n    @Log  //binding the interceptor here. now any method annotated with @Log would be intercepted by logMethodEntry\n    public class LoggingInterceptor {\n        @AroundInvoke\n        public Object logMethodEntry(InvocationContext ctx) throws Exception {\n            System.out.println(\"Entering method: \" + ctx.getMethod().getName());\n            //or logger.info statement \n            return ctx.proceed();\n        }\n    }\n\nNow the @Log annotation we created is bound to this interceptor.\n\nThat done, let's annotate at class-level or method-level and have fun intercepting ! \n\n    @Log\n    @Stateful\n    public class BookShow implements Serializable {\n        private static final long serialVersionUID = 6350400892234496909L;\n        public List<String> getMoviesList() {\n            List<String> moviesAvailable = new ArrayList<String>();\n            moviesAvailable.add(\"12 Angry Men\");\n            moviesAvailable.add(\"Kings speech\");\n            return moviesAvailable;\n        }\n        public Integer getDiscountedPrice(int ticketPrice) {\n            return ticketPrice - 50;\n        }\n        // assume more methods are present\n    }\n\nThe `@Log` annotation applied at class level denotes that all the methods should be intercepted with `LoggingInterceptor`.\n\nBefore we say \"all done\" there's one last thing we are left with ! To enable the interceptors ! \n\nLets quickly put up a [beans.xml file]\n\n    <beans>\n      <interceptors>\n        <class>org.superbiz.cdi.bookshow.interceptors.LoggingInterceptor\n        </class>\n      </interceptors>\n    </beans>\n\n in META-INF\n\n\nThose lines in beans.xml not only \"enable\" the interceptors, but also define the \"order of execution\" of the interceptors.\nBut we'll see that in another example on multiple-cdi-interceptors.\n\nFire up the test, and we should see a 'Entering method: getMoviesList' printed in the console.\n\n#Tests\n    Apache OpenEJB 4.0.0-beta-2    build: 20111103-01:00\n    http://tomee.apache.org/\n    INFO - openejb.home = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    INFO - openejb.base = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true' \n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes\n    INFO - Beginning load: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes\n    INFO - Configuring enterprise application: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean cdi-simple-interceptors.Comp: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean BookShow: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Enterprise application \"/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\" loaded.\n    INFO - Assembling app: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    INFO - Jndi(name=\"java:global/cdi-simple-interceptors/BookShow!org.superbiz.cdi.bookshow.beans.BookShow\")\n    INFO - Jndi(name=\"java:global/cdi-simple-interceptors/BookShow\")\n    INFO - Created Ejb(deployment-id=BookShow, ejb-name=BookShow, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=BookShow, ejb-name=BookShow, container=Default Stateful Container)\n    INFO - Deployed Application(path=/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors)\n    Entering method: getMoviesList\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-cdi-interceptor"
+      }
+    ],
+    "interfaces":[
+      {
+        "name":"component-interfaces",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/component-interfaces"
+      }
+    ],
+    "jaas":[
+      {
+        "name":"cdi-ejbcontext-jaas",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-ejbcontext-jaas"
+      },
+      {
+        "name":"rest-jaas",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-jaas"
+      }
+    ],
+    "javamail":[
+      {
+        "name":"javamail",
+        "readme":"Title: Javamail API\n\nThis is just a simple example to demonstrate a very basic usage of the API. It should be enough to get you started using the java mail packages.\n\n#The Code\n\n## A simple REST service using the Javamail API\n\nHere we see a very simple RESTful endpoint that can be called with a message to send by Email. It would not be hard to modify the application to provide\nmore useful configuration options. As is, this will not send anything, but if you change the parameters to match your mail server then you'll see the message being sent.\nYou can find much more detailed information on the [Javamail API here](https://java.net/projects/javamail/pages/Home#Samples)\n\n    package org.superbiz.rest;\n\n    import javax.mail.Authenticator;\n    import javax.mail.Message;\n    import javax.mail.MessagingException;\n    import javax.mail.PasswordAuthentication;\n    import javax.mail.Session;\n    import javax.mail.Transport;\n    import javax.mail.internet.InternetAddress;\n    import javax.mail.internet.MimeMessage;\n    import javax.ws.rs.POST;\n    import javax.ws.rs.Path;\n    import java.util.Date;\n    import java.util.Properties;\n\n    @Path(\"/email\")\n    public class EmailService {\n\n        @POST\n        public String lowerCase(final String message) {\n\n            try {\n\n                //Create some properties and get the default Session\n                final Properties props = new Properties();\n                props.put(\"mail.smtp.host\", \"your.mailserver.host\");\n                props.put(\"mail.debug\", \"true\");\n\n                final Session session = Session.getInstance(props, new Authenticator() {\n                    @Override\n                    protected PasswordAuthentication getPasswordAuthentication() {\n                        return new PasswordAuthentication(\"MyUsername\", \"MyPassword\");\n                    }\n                });\n\n                //Set this just to see some internal logging\n                session.setDebug(true);\n\n                //Create a message\n                final MimeMessage msg = new MimeMessage(session);\n                msg.setFrom(new InternetAddress(\"your@email.address\"));\n                final InternetAddress[] address = {new InternetAddress(\"general@tomitribe.com\")};\n                msg.setRecipients(Message.RecipientType.TO, address);\n                msg.setSubject(\"JavaMail API test\");\n                msg.setSentDate(new Date());\n                msg.setText(message, \"UTF-8\");\n\n\n                Transport.send(msg);\n            } catch (MessagingException e) {\n                return \"Failed to send message: \" + e.getMessage();\n            }\n\n            return \"Sent\";\n        }\n    }\n\n# Testing\n\n## Test for the JAXRS service\n\nThe test uses the OpenEJB ApplicationComposer to make it trivial.\n\nThe idea is first to activate the jaxrs services. This is done using @EnableServices annotation.\n\nThen we create on the fly the application simply returning an object representing the web.xml. Here we simply\nuse it to define the context root but you can use it to define your REST Application too. And to complete the\napplication definition we add @Classes annotation to define the set of classes to use in this app.\n\nFinally to test it we use cxf client API to call the REST service post() method.\n\n    package org.superbiz.rest;\n\n    import org.apache.cxf.jaxrs.client.WebClient;\n    import org.apache.openejb.jee.WebApp;\n    import org.apache.openejb.junit.ApplicationComposer;\n    import org.apache.openejb.testing.Classes;\n    import org.apache.openejb.testing.EnableServices;\n    import org.apache.openejb.testing.Module;\n    import org.junit.Test;\n    import org.junit.runner.RunWith;\n\n    import java.io.IOException;\n\n    import static org.junit.Assert.assertEquals;\n\n    @EnableServices(value = \"jaxrs\")\n    @RunWith(ApplicationComposer.class)\n    public class EmailServiceTest {\n\n        @Module\n        @Classes(EmailService.class)\n        public WebApp app() {\n            return new WebApp().contextRoot(\"test\");\n        }\n\n        @Test\n        public void post() throws IOException {\n            final String message = WebClient.create(\"http://localhost:4204\").path(\"/test/email/\").post(\"Hello Tomitribe\", String.class);\n            assertEquals(\"Failed to send message: Unknown SMTP host: your.mailserver.host\", message);\n        }\n    }\n\n#Running\n\nRunning the example is fairly simple. In the \"javamail-api\" directory run:\n\n    $ mvn clean install\n\nWhich should create output like the following.\n\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=cxf-rs)\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)\n    INFO - Initializing network services\n    INFO -   ** Bound Services **\n    INFO -   NAME                 IP              PORT\n    INFO -   httpejbd             127.0.0.1       4204\n    INFO - -------\n    INFO - Ready!\n    INFO - Configuring enterprise application: D:\\github\\tomee\\examples\\javamail\\EmailServiceTest\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.rest.EmailServiceTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory D:\\windows\\tmp for stateful session passivation\n    INFO - Configuring Service(id=comp/DefaultManagedExecutorService, type=Resource, provider-id=Default Executor Service)\n    INFO - Auto-creating a Resource with id 'comp/DefaultManagedExecutorService' of type 'javax.enterprise.concurrent.ManagedExecutorService for 'test'.\n    INFO - Configuring Service(id=comp/DefaultManagedScheduledExecutorService, type=Resource, provider-id=Default Scheduled Executor Service)\n    INFO - Auto-creating a Resource with id 'comp/DefaultManagedScheduledExecutorService' of type 'javax.enterprise.concurrent.ManagedScheduledExecutorService for 'test'.\n    INFO - Configuring Service(id=comp/DefaultManagedThreadFactory, type=Resource, provider-id=Default Managed Thread Factory)\n    INFO - Auto-creating a Resource with id 'comp/DefaultManagedThreadFactory' of type 'javax.enterprise.concurrent.ManagedThreadFactory for 'test'.\n    INFO - Enterprise application \"D:\\github\\tomee\\examples\\javamail\\EmailServiceTest\" loaded.\n    INFO - Creating dedicated application classloader for EmailServiceTest\n    INFO - Assembling app: D:\\github\\tomee\\examples\\javamail\\EmailServiceTest\n    INFO - Using providers:\n    INFO -      org.apache.johnzon.jaxrs.JohnzonProvider@2687f956\n    INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@1ded7b14\n    INFO -      org.apache.johnzon.jaxrs.JsrProvider@29be7749\n    INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@5f84abe8\n    INFO -      org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper@4650a407\n    INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@30135202\n    INFO - REST Application: http://127.0.0.1:4204/test/       -> org.apache.openejb.server.rest.InternalApplication\n    INFO -      Service URI: http://127.0.0.1:4204/test/email  -> Pojo org.superbiz.rest.EmailService\n    INFO -              POST http://127.0.0.1:4204/test/email/ ->      String lowerCase(String)\n    INFO - Deployed Application(path=D:\\github\\tomee\\examples\\javamail\\EmailServiceTest)\n    DEBUG: JavaMail version 1.4ea\n    DEBUG: java.io.FileNotFoundException: D:\\java\\jdk8\\jre\\lib\\javamail.providers (The system cannot find the file specified)\n    DEBUG: !anyLoaded\n    DEBUG: not loading resource: /META-INF/javamail.providers\n    DEBUG: successfully loaded resource: /META-INF/javamail.default.providers\n    DEBUG: Tables of loaded providers\n    DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}\n    DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}\n    DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map\n    DEBUG: !anyLoaded\n    DEBUG: not loading resource: /META-INF/javamail.address.map\n    DEBUG: java.io.FileNotFoundException: D:\\java\\jdk8\\jre\\lib\\javamail.address.map (The system cannot find the file specified)\n    DEBUG: setDebug: JavaMail version 1.4ea\n    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]\n    DEBUG SMTP: useEhlo true, useAuth false\n    DEBUG SMTP: trying to connect to host \"your.mailserver.host\", port 25, isSSL false\n    INFO - Undeploying app: D:\\github\\tomee\\examples\\javamail\\EmailServiceTest\n    INFO - Stopping network services\n    INFO - Stopping server services\n\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/javamail"
+      }
+    ],
+    "jaxws":[
+      {
+        "name":"applicationcomposer-jaxws-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/applicationcomposer-jaxws-cdi"
+      },
+      {
+        "name":"change-jaxws-url",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/change-jaxws-url"
+      }
+    ],
+    "jersey":[
+      {
+        "name":"tomee-jersey-eclipselink",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/tomee-jersey-eclipselink"
+      }
+    ],
+    "jmx":[
+      {
+        "name":"resources-jmx-example",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/resources-jmx-example"
+      }
+    ],
+    "jpa":[
+      {
+        "name":"jpa-eclipselink",
+        "readme":"Title: JPA Eclipselink\n\nThis example shows how to configure `persistence.xml` to work with Eclipselink. It uses an `@Entity` class and a `@Stateful` bean to add and delete entities from a database.\n\n## Creating the JPA Entity\n\nThe entity itself is simply a pojo annotated with `@Entity`.  We create one pojo called `Movie` which we can use to hold movie records.\n\n    package org.superbiz.eclipselink;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    \n    @Entity\n    public class Movie {\n    \n        @Id\n        @GeneratedValue(strategy = GenerationType.AUTO)\n        private long id;\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Database Operations\n\nThis is the bean responsible for database operations; it allows us to persist or delete entities.\nFor more information we recommend you to see [injection-of-entitymanager](http://tomee.apache.org/examples-trunk/injection-of-entitymanager/README.html)\n\n\n    package org.superbiz.eclipselink;\n    \n    import javax.ejb.Stateful;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## Persistence.xml with EclipseLink configuration\n\nThis operation is too easy, just set the `provider` to `org.eclipse.persistence.jpa.PersistenceProvider` and add additional properties to the persistence unit. \nThe example has followed a strategy that allows the creation of tables in a HSQL database.\nFor a complete list of persistence unit properties see [here](http://www.eclipse.org/eclipselink/api/2.4/org/eclipse/persistence/config/PersistenceUnitProperties.html)\n\n    <persistence version=\"1.0\"\n                 xmlns=\"http://java.sun.com/xml/ns/persistence\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\">\n      <persistence-unit name=\"movie-unit\">\n        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <properties>\n          <property name=\"eclipselink.target-database\" value=\"org.eclipse.persistence.platform.database.HSQLPlatform\"/>\n          <property name=\"eclipselink.ddl-generation\" value=\"create-tables\"/>\n          <property name=\"eclipselink.ddl-generation.output-mode\" value=\"database\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n    \n\n## MoviesTest\n\nTesting JPA is quite easy, we can simply use the `EJBContainer` API to create a container in our test case.\n\n    package org.superbiz.eclipselink;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.List;\n    import java.util.Properties;\n    \n    /**\n     * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $\n     */\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            final Context context = EJBContainer.createEJBContainer(p).getContext();\n    \n            Movies movies = (Movies) context.lookup(\"java:global/jpa-eclipselink/Movies\");\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n# Running\n\nWhen we run our test case we should see output similar to the following.    \n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.eclipselink.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/jpa-eclipselink\n    INFO - openejb.base = /Users/dblevins/examples/jpa-eclipselink\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/jpa-eclipselink/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/jpa-eclipselink/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/jpa-eclipselink\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.eclipselink.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit, provider=org.eclipse.persistence.jpa.PersistenceProvider)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/jpa-eclipselink\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/jpa-eclipselink\n    INFO - PersistenceUnit(name=movie-unit, provider=org.eclipse.persistence.jpa.PersistenceProvider) - provider time 511ms\n    INFO - Jndi(name=\"java:global/jpa-eclipselink/Movies!org.superbiz.eclipselink.Movies\")\n    INFO - Jndi(name=\"java:global/jpa-eclipselink/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule225280863/org.superbiz.eclipselink.MoviesTest!org.superbiz.eclipselink.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule225280863/org.superbiz.eclipselink.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.eclipselink.MoviesTest, ejb-name=org.superbiz.eclipselink.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.eclipselink.MoviesTest, ejb-name=org.superbiz.eclipselink.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/jpa-eclipselink)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.188 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    ",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jpa-eclipselink"
+      },
+      {
+        "name":"groovy-jpa",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/groovy-jpa"
+      },
+      {
+        "name":"jpa-enumerated",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jpa-enumerated"
+      },
+      {
+        "name":"jpa-hibernate",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jpa-hibernate"
+      },
+      {
+        "name":"arquillian-jpa",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/arquillian-jpa"
+      },
+      {
+        "name":"multi-jpa-provider-testing",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multi-jpa-provider-testing"
+      }
+    ],
+    "jsf":[
+      {
+        "name":"jsf-managedBean-and-ejb",
+        "readme":"Title: JSF Application that uses managed-bean and ejb\n\nThis is a simple web-app showing how to use dependency injection in JSF managed beans using TomEE.\n\nIt contains a Local Stateless session bean `CalculatorImpl` which adds two numbers and returns the result.\nThe application also contains a JSF managed bean `CalculatorBean`, which uses the EJB to add two numbers\nand display the results to the user. The EJB is injected in the managed bean using `@EJB` annotation.\n\n\n## A little note on the setup:\n\nYou could run this in the latest Apache TomEE [snapshot](https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/)\n\nAs for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the\nwar. In maven terms, they would be with scope 'provided'\n\nAlso note that we use servlet 2.5 declaration in web.xml\n    \n    <web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n    xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n    version=\"2.5\">\n\nAnd we use 2.0 version of faces-config\n\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\n\nThe complete source code is provided below but let's break down to look at some smaller snippets and see  how it works.\n\nWe'll first declare the `FacesServlet` in the `web.xml`\n\n      <servlet>\n        <servlet-name>Faces Servlet</servlet-name>\n        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n        <load-on-startup>1</load-on-startup>\n      </servlet>\n\n`FacesServlet` acts as the master controller.\n\nWe'll then create the `calculator.xhtml` file.\n\n           <h:outputText value='Enter first number'/>\n           <h:inputText value='#{calculatorBean.x}'/>\n           <h:outputText value='Enter second number'/>\n           <h:inputText value='#{calculatorBean.y}'/>\n           <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n\n\nNotice how we've use the bean here.\nBy default it is the simple class name of the managed bean.\n\nWhen a request comes in, the bean is instantiated and placed in the appropriate scope.\nBy default, the bean is placed in the request scope.\n\n            <h:inputText value='#{calculatorBean.x}'/>\n\nHere, getX() method of calculatorBean is invoked and the resulting value is displayed.\nx being a Double, we rightly should see 0.0 displayed.\n\nWhen you change the value and submit the form, these entered values are bound using the setters\nin the bean and then the commandButton-action method is invoked.\n\nIn this case, `CalculatorBean#add()` is invoked.\n\n`Calculator#add()` delegates the work to the ejb, gets the result, stores it\nand then instructs what view is to be rendered.\n\nYou're right. The return value \"success\" is checked up in faces-config navigation-rules\nand the respective page is rendered.\n\nIn our case, `result.xhtml` page is rendered.\n\nThe request scoped `calculatorBean` is available here, and we use EL to display the values.\n\n## Source\n\n## Calculator\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Local;\n    \n    @Local\n    public interface Calculator {\n        public double add(double x, double y);\n    }\n\n\n## CalculatorBean\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.EJB;\n    import javax.faces.bean.ManagedBean;\n\n    @ManagedBean\n    public class CalculatorBean {\n        @EJB\n        Calculator calculator;\n        private double x;\n        private double y;\n        private double result;\n    \n        public double getX() {\n            return x;\n        }\n    \n        public void setX(double x) {\n            this.x = x;\n        }\n    \n        public double getY() {\n            return y;\n        }\n    \n        public void setY(double y) {\n            this.y = y;\n        }\n    \n        public double getResult() {\n            return result;\n        }\n    \n        public void setResult(double result) {\n            this.result = result;\n        }\n    \n        public String add() {\n            result = calculator.add(x, y);\n            return \"success\";\n        }\n    }\n\n## CalculatorImpl\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Stateless;\n    \n    @Stateless\n    public class CalculatorImpl implements Calculator {\n    \n        public double add(double x, double y) {\n            return x + y;\n        }\n    }\n\n\n# web.xml\n\n    <?xml version=\"1.0\"?>\n\n        <web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n        xmlns=\"http://java.sun.com/xml/ns/javaee\"\n        xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n        xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n        version=\"2.5\">\n\n        <description>MyProject web.xml</description>\n\n        <!-- Faces Servlet -->\n        <servlet>\n            <servlet-name>Faces Servlet</servlet-name>\n            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n            <load-on-startup>1</load-on-startup>\n        </servlet>\n\n        <!-- Faces Servlet Mapping -->\n        <servlet-mapping>\n           <servlet-name>Faces Servlet</servlet-name>\n            <url-pattern>*.jsf</url-pattern>\n        </servlet-mapping>\n\n        <!-- Welcome files -->\n        <welcome-file-list>\n           <welcome-file>index.jsp</welcome-file>\n           <welcome-file>index.html</welcome-file>\n        </welcome-file-list>\n        </web-app>\n\n    \n##Calculator.xhtml\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n    <html xmlns=\"http://www.w3.org/1999/xhtml\"\n    xmlns:f=\"http://java.sun.com/jsf/core\"\n    xmlns:h=\"http://java.sun.com/jsf/html\">\n\n\n    <h:body bgcolor=\"white\">\n        <f:view>\n            <h:form>\n                <h:panelGrid columns=\"2\">\n                <h:outputText value='Enter first number'/>\n               <h:inputText value='#{calculatorBean.x}'/>\n                <h:outputText value='Enter second number'/>\n                <h:inputText value='#{calculatorBean.y}'/>\n               <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n                </h:panelGrid>\n            </h:form>\n       </f:view>\n    </h:body>\n    </html>\n\n    \n##Result.xhtml\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n    <html xmlns=\"http://www.w3.org/1999/xhtml\"\n    xmlns:f=\"http://java.sun.com/jsf/core\"\n    xmlns:h=\"http://java.sun.com/jsf/html\">\n\n    <h:body>\n        <f:view>\n            <h:form id=\"mainForm\">\n                <h2><h:outputText value=\"Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }\"/></h2>\n                <h:commandLink action=\"back\">\n                <h:outputText value=\"Home\"/>\n                </h:commandLink>\n            </h:form>\n        </f:view>\n    </h:body>\n    </html>\n    \n#faces-config.xml\n\n    <?xml version=\"1.0\"?>\n    <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n    version=\"2.0\">\n\n    <navigation-rule>\n        <from-view-id>/calculator.xhtml</from-view-id>\n        <navigation-case>\n            <from-outcome>success</from-outcome>\n            <to-view-id>/result.xhtml</to-view-id>\n        </navigation-case>\n    </navigation-rule>\n\n    <navigation-rule>\n        <from-view-id>/result.xhtml</from-view-id>\n        <navigation-case>\n            <from-outcome>back</from-outcome>\n            <to-view-id>/calculator.xhtml</to-view-id>\n        </navigation-case>\n    </navigation-rule>\n    </faces-config>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jsf-managedBean-and-ejb"
+      },
+      {
+        "name":"jsf-cdi-and-ejb",
+        "readme":"Title: JSF-CDI-EJB\n\nThe simple application contains a CDI managed bean `CalculatorBean`, which uses the `Calculator` EJB to add two numbers\nand display the results to the user. The EJB is injected in the managed bean using @Inject annotation.\n\nYou could run this in the latest Apache TomEE [snapshot](https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/)\n\nThe complete source code is below but lets break down to look at some smaller snippets and see  how it works.\n\n\nA little note on the setup:\n\nAs for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the\nwar. In maven terms, they would be with scope 'provided'\n\nAlso note that we use servlet 2.5 declaration in web.xml\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xmlns=\"http://java.sun.com/xml/ns/javaee\"\n  xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n  xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n  version=\"2.5\">\n\nAnd we use 2.0 version of faces-config\n\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\nTo make this a cdi-aware-archive (i.e bean archive) an empty beans.xml is added in WEB-INF\n\n       <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n       <beans xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n         http://java.sun.com/xml/ns/javaee/beans_1_0.xsd\">\n       </beans>\n\nWe'll first declare the FacesServlet in the web.xml\n\n      <servlet>\n        <servlet-name>Faces Servlet</servlet-name>\n        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n        <load-on-startup>1</load-on-startup>\n      </servlet>\n\nFacesServlet acts as the master controller.\n\nWe'll then create the calculator.xhtml file.\n\n           <h:outputText value='Enter first number'/>\n           <h:inputText value='#{calculatorBean.x}'/>\n           <h:outputText value='Enter second number'/>\n           <h:inputText value='#{calculatorBean.y}'/>\n           <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n\nNotice how we've used the bean here. By default, the bean name would be the simple name of the bean\nclass with the first letter in lower case.\n\nWe've annotated the `CalculatorBean` with `@RequestScoped`.\nSo when a request comes in, the bean is instantiated and placed in the request scope.\n\n<h:inputText value='#{calculatorBean.x}'/>\n\nHere, getX() method of calculatorBean is invoked and the resulting value is displayed.\nx being a Double, we rightly should see 0.0 displayed.\n\nWhen you change the value and submit the form, these entered values are bound using the setters\nin the bean and then the commandButton-action method is invoked.\n\nIn this case, CalculatorBean#add() is invoked.\n\nCalculator#add() delegates the work to the ejb, gets the result, stores it\nand then returns what view is to be rendered.\n\nThe return value \"success\" is checked up in faces-config navigation-rules\nand the respective page is rendered.\n\nIn our case, 'result.xhtml' page is rendered where\nuse EL and display the result from the request-scoped `calculatorBean`.\n\n#Source Code\n\n## CalculatorBean\n\n    import javax.enterprise.context.RequestScoped;\n    import javax.inject.Named;\n    import javax.inject.Inject;\n\n    @RequestScoped\n    @Named\n    public class CalculatorBean {\n        @Inject\n        Calculator calculator;\n        private double x;\n        private double y;\n        private double result;\n    \n        public double getX() {\n            return x;\n        }\n    \n        public void setX(double x) {\n            this.x = x;\n        }\n    \n        public double getY() {\n            return y;\n        }\n    \n        public void setY(double y) {\n            this.y = y;\n        }\n    \n        public double getResult() {\n            return result;\n        }\n    \n        public void setResult(double result) {\n            this.result = result;\n        }\n    \n        public String add() {\n            result = calculator.add(x, y);\n            return \"success\";\n        }\n    }\n\n## Calculator\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Stateless;\n    \n    @Stateless\n    public class Calculator{\n    \n        public double add(double x, double y) {\n            return x + y;\n        }\n    }\n\n\n#web.xml\n\n<?xml version=\"1.0\"?>\n\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xmlns=\"http://java.sun.com/xml/ns/javaee\"\n         xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n         version=\"2.5\">\n\n  <description>MyProject web.xml</description>\n\n  <!-- Faces Servlet -->\n  <servlet>\n    <servlet-name>Faces Servlet</servlet-name>\n    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n    <load-on-startup>1</load-on-startup>\n  </servlet>\n\n  <!-- Faces Servlet Mapping -->\n  <servlet-mapping>\n    <servlet-name>Faces Servlet</servlet-name>\n    <url-pattern>*.jsf</url-pattern>\n  </servlet-mapping>\n\n  <!-- Welcome files -->\n  <welcome-file-list>\n    <welcome-file>index.jsp</welcome-file>\n    <welcome-file>index.html</welcome-file>\n  </welcome-file-list>\n\n</web-app>\n\n\n#Calculator.xhtml\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:f=\"http://java.sun.com/jsf/core\"\n      xmlns:h=\"http://java.sun.com/jsf/html\">\n\n\n<h:body bgcolor=\"white\">\n    <f:view>\n        <h:form>\n            <h:panelGrid columns=\"2\">\n                <h:outputText value='Enter first number'/>\n                <h:inputText value='#{calculatorBean.x}'/>\n                <h:outputText value='Enter second number'/>\n                <h:inputText value='#{calculatorBean.y}'/>\n                <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n            </h:panelGrid>\n        </h:form>\n    </f:view>\n</h:body>\n</html>\n\n\n #Result.xhtml\n\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n      xmlns:f=\"http://java.sun.com/jsf/core\"\n      xmlns:h=\"http://java.sun.com/jsf/html\">\n\n<h:body>\n<f:view>\n    <h:form id=\"mainForm\">\n        <h2><h:outputText value=\"Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }\"/></h2>\n        <h:commandLink action=\"back\">\n            <h:outputText value=\"Home\"/>\n        </h:commandLink>\n    </h:form>\n</f:view>\n</h:body>\n</html>\n\n #faces-config.xml\n\n <?xml version=\"1.0\"?>\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\n   <navigation-rule>\n     <from-view-id>/calculator.xhtml</from-view-id>\n     <navigation-case>\n       <from-outcome>success</from-outcome>\n       <to-view-id>/result.xhtml</to-view-id>\n     </navigation-case>\n   </navigation-rule>\n\n   <navigation-rule>\n     <from-view-id>/result.xhtml</from-view-id>\n     <navigation-case>\n       <from-outcome>back</from-outcome>\n       <to-view-id>/calculator.xhtml</to-view-id>\n     </navigation-case>\n   </navigation-rule>\n </faces-config>",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jsf-cdi-and-ejb"
+      }
+    ],
+    "json":[
+      {
+        "name":"rest-xml-json",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-xml-json"
+      }
+    ],
+    "lookup":[
+      {
+        "name":"lookup-of-ejbs",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs"
+      },
+      {
+        "name":"client-resource-lookup-preview",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/client-resource-lookup-preview"
+      },
+      {
+        "name":"lookup-of-ejbs-with-descriptor",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs-with-descriptor"
+      }
+    ],
+    "managedBean":[
+      {
+        "name":"jsf-managedBean-and-ejb",
+        "readme":"Title: JSF Application that uses managed-bean and ejb\n\nThis is a simple web-app showing how to use dependency injection in JSF managed beans using TomEE.\n\nIt contains a Local Stateless session bean `CalculatorImpl` which adds two numbers and returns the result.\nThe application also contains a JSF managed bean `CalculatorBean`, which uses the EJB to add two numbers\nand display the results to the user. The EJB is injected in the managed bean using `@EJB` annotation.\n\n\n## A little note on the setup:\n\nYou could run this in the latest Apache TomEE [snapshot](https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/)\n\nAs for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the\nwar. In maven terms, they would be with scope 'provided'\n\nAlso note that we use servlet 2.5 declaration in web.xml\n    \n    <web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n    xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n    version=\"2.5\">\n\nAnd we use 2.0 version of faces-config\n\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               version=\"2.0\">\n\n\nThe complete source code is provided below but let's break down to look at some smaller snippets and see  how it works.\n\nWe'll first declare the `FacesServlet` in the `web.xml`\n\n      <servlet>\n        <servlet-name>Faces Servlet</servlet-name>\n        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n        <load-on-startup>1</load-on-startup>\n      </servlet>\n\n`FacesServlet` acts as the master controller.\n\nWe'll then create the `calculator.xhtml` file.\n\n           <h:outputText value='Enter first number'/>\n           <h:inputText value='#{calculatorBean.x}'/>\n           <h:outputText value='Enter second number'/>\n           <h:inputText value='#{calculatorBean.y}'/>\n           <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n\n\nNotice how we've use the bean here.\nBy default it is the simple class name of the managed bean.\n\nWhen a request comes in, the bean is instantiated and placed in the appropriate scope.\nBy default, the bean is placed in the request scope.\n\n            <h:inputText value='#{calculatorBean.x}'/>\n\nHere, getX() method of calculatorBean is invoked and the resulting value is displayed.\nx being a Double, we rightly should see 0.0 displayed.\n\nWhen you change the value and submit the form, these entered values are bound using the setters\nin the bean and then the commandButton-action method is invoked.\n\nIn this case, `CalculatorBean#add()` is invoked.\n\n`Calculator#add()` delegates the work to the ejb, gets the result, stores it\nand then instructs what view is to be rendered.\n\nYou're right. The return value \"success\" is checked up in faces-config navigation-rules\nand the respective page is rendered.\n\nIn our case, `result.xhtml` page is rendered.\n\nThe request scoped `calculatorBean` is available here, and we use EL to display the values.\n\n## Source\n\n## Calculator\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Local;\n    \n    @Local\n    public interface Calculator {\n        public double add(double x, double y);\n    }\n\n\n## CalculatorBean\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.EJB;\n    import javax.faces.bean.ManagedBean;\n\n    @ManagedBean\n    public class CalculatorBean {\n        @EJB\n        Calculator calculator;\n        private double x;\n        private double y;\n        private double result;\n    \n        public double getX() {\n            return x;\n        }\n    \n        public void setX(double x) {\n            this.x = x;\n        }\n    \n        public double getY() {\n            return y;\n        }\n    \n        public void setY(double y) {\n            this.y = y;\n        }\n    \n        public double getResult() {\n            return result;\n        }\n    \n        public void setResult(double result) {\n            this.result = result;\n        }\n    \n        public String add() {\n            result = calculator.add(x, y);\n            return \"success\";\n        }\n    }\n\n## CalculatorImpl\n\n    package org.superbiz.jsf;\n    \n    import javax.ejb.Stateless;\n    \n    @Stateless\n    public class CalculatorImpl implements Calculator {\n    \n        public double add(double x, double y) {\n            return x + y;\n        }\n    }\n\n\n# web.xml\n\n    <?xml version=\"1.0\"?>\n\n        <web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n        xmlns=\"http://java.sun.com/xml/ns/javaee\"\n        xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n        xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n        version=\"2.5\">\n\n        <description>MyProject web.xml</description>\n\n        <!-- Faces Servlet -->\n        <servlet>\n            <servlet-name>Faces Servlet</servlet-name>\n            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n            <load-on-startup>1</load-on-startup>\n        </servlet>\n\n        <!-- Faces Servlet Mapping -->\n        <servlet-mapping>\n           <servlet-name>Faces Servlet</servlet-name>\n            <url-pattern>*.jsf</url-pattern>\n        </servlet-mapping>\n\n        <!-- Welcome files -->\n        <welcome-file-list>\n           <welcome-file>index.jsp</welcome-file>\n           <welcome-file>index.html</welcome-file>\n        </welcome-file-list>\n        </web-app>\n\n    \n##Calculator.xhtml\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n    <html xmlns=\"http://www.w3.org/1999/xhtml\"\n    xmlns:f=\"http://java.sun.com/jsf/core\"\n    xmlns:h=\"http://java.sun.com/jsf/html\">\n\n\n    <h:body bgcolor=\"white\">\n        <f:view>\n            <h:form>\n                <h:panelGrid columns=\"2\">\n                <h:outputText value='Enter first number'/>\n               <h:inputText value='#{calculatorBean.x}'/>\n                <h:outputText value='Enter second number'/>\n                <h:inputText value='#{calculatorBean.y}'/>\n               <h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n                </h:panelGrid>\n            </h:form>\n       </f:view>\n    </h:body>\n    </html>\n\n    \n##Result.xhtml\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n    <html xmlns=\"http://www.w3.org/1999/xhtml\"\n    xmlns:f=\"http://java.sun.com/jsf/core\"\n    xmlns:h=\"http://java.sun.com/jsf/html\">\n\n    <h:body>\n        <f:view>\n            <h:form id=\"mainForm\">\n                <h2><h:outputText value=\"Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }\"/></h2>\n                <h:commandLink action=\"back\">\n                <h:outputText value=\"Home\"/>\n                </h:commandLink>\n            </h:form>\n        </f:view>\n    </h:body>\n    </html>\n    \n#faces-config.xml\n\n    <?xml version=\"1.0\"?>\n    <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n    version=\"2.0\">\n\n    <navigation-rule>\n        <from-view-id>/calculator.xhtml</from-view-id>\n        <navigation-case>\n            <from-outcome>success</from-outcome>\n            <to-view-id>/result.xhtml</to-view-id>\n        </navigation-case>\n    </navigation-rule>\n\n    <navigation-rule>\n        <from-view-id>/result.xhtml</from-view-id>\n        <navigation-case>\n            <from-outcome>back</from-outcome>\n            <to-view-id>/calculator.xhtml</to-view-id>\n        </navigation-case>\n    </navigation-rule>\n    </faces-config>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/jsf-managedBean-and-ejb"
+      }
+    ],
+    "mbean":[
+      {
+        "name":"dynamic-proxy-to-access-mbean",
+        "readme":"Title: dynamic-proxy-to-access-mbean\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Example\n\nAcessing MBean is something simple through the JMX API but it is often technical and not very interesting.\n\nThis example simplify this work simply doing it generically in a proxy.\n\nSo from an user side you simple declare an interface to access your MBeans.\n\nNote: the example implementation uses a local MBeanServer but enhancing the example API\nit is easy to imagine a remote connection with user/password if needed.\n\n## ObjectName API (annotation)\n\nSimply an annotation to get the object\n\n    package org.superbiz.dynamic.mbean;\n\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.Target;\n\n    import static java.lang.annotation.ElementType.TYPE;\n    import static java.lang.annotation.ElementType.METHOD;\n    import static java.lang.annotation.RetentionPolicy.RUNTIME;\n\n    @Target({TYPE, METHOD})\n    @Retention(RUNTIME)\n    public @interface ObjectName {\n        String value();\n\n        // for remote usage only\n        String url() default \"\";\n        String user() default \"\";\n        String password() default \"\";\n    }\n\n## DynamicMBeanHandler (thr proxy implementation)\n\n    package org.superbiz.dynamic.mbean;\n\n    import javax.annotation.PreDestroy;\n    import javax.management.Attribute;\n    import javax.management.MBeanAttributeInfo;\n    import javax.management.MBeanInfo;\n    import javax.management.MBeanServer;\n    import javax.management.MBeanServerConnection;\n    import javax.management.ObjectName;\n    import javax.management.remote.JMXConnector;\n    import javax.management.remote.JMXConnectorFactory;\n    import javax.management.remote.JMXServiceURL;\n    import java.io.IOException;\n    import java.lang.management.ManagementFactory;\n    import java.lang.reflect.InvocationHandler;\n    import java.lang.reflect.Method;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.concurrent.ConcurrentHashMap;\n\n    /**\n     * Need a @PreDestroy method to disconnect the remote host when used in remote mode.\n     */\n    public class DynamicMBeanHandler implements InvocationHandler {\n        private final Map<Method, ConnectionInfo> infos = new ConcurrentHashMap<Method, ConnectionInfo>();\n\n        @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\n            final String methodName = method.getName();\n            if (method.getDeclaringClass().equals(Object.class) && \"toString\".equals(methodName)) {\n                return getClass().getSimpleName() + \" Proxy\";\n            }\n            if (method.getAnnotation(PreDestroy.class) != null) {\n                return destroy();\n            }\n\n            final ConnectionInfo info = getConnectionInfo(method);\n            final MBeanInfo infos = info.getMBeanInfo();\n            if (methodName.startsWith(\"set\") && methodName.length() > 3 && args != null && args.length == 1\n                && (Void.TYPE.equals(method.getReturnType()) || Void.class.equals(method.getReturnType()))) {\n                final String attributeName = attributeName(infos, methodName, method.getParameterTypes()[0]);\n                info.setAttribute(new Attribute(attributeName, args[0]));\n                return null;\n            } else if (methodName.startsWith(\"get\") && (args == null || args.length == 0) && methodName.length() > 3) {\n                final String attributeName = attributeName(infos, methodName, method.getReturnType());\n                return info.getAttribute(attributeName);\n            }\n            // operation\n            return info.invoke(methodName, args, getSignature(method));\n        }\n\n        public Object destroy() {\n            for (ConnectionInfo info : infos.values()) {\n                info.clean();\n            }\n            infos.clear();\n            return null;\n        }\n\n        private String[] getSignature(Method method) {\n            String[] args = new String[method.getParameterTypes().length];\n            for (int i = 0; i < method.getParameterTypes().length; i++) {\n                args[i] = method.getParameterTypes()[i].getName();\n            }\n            return args; // note: null should often work...\n        }\n\n        private String attributeName(MBeanInfo infos, String methodName, Class<?> type) {\n            String found = null;\n            String foundBackUp = null; // without checking the type\n            final String attributeName = methodName.substring(3, methodName.length());\n            final String lowerName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4, methodName.length());\n\n            for (MBeanAttributeInfo attribute : infos.getAttributes()) {\n                final String name = attribute.getName();\n                if (attributeName.equals(name)) {\n                    foundBackUp = attributeName;\n                    if (attribute.getType().equals(type.getName())) {\n                        found = name;\n                    }\n                } else if (found == null && ((lowerName.equals(name) && !attributeName.equals(name))\n                    || lowerName.equalsIgnoreCase(name))) {\n                    foundBackUp = name;\n                    if (attribute.getType().equals(type.getName())) {\n                        found = name;\n                    }\n                }\n            }\n\n            if (found == null && foundBackUp == null) {\n                throw new UnsupportedOperationException(\"cannot find attribute \" + attributeName);\n            }\n\n            if (found != null) {\n                return found;\n            }\n            return foundBackUp;\n        }\n\n        private synchronized ConnectionInfo getConnectionInfo(Method method) throws Exception {\n            if (!infos.containsKey(method)) {\n                synchronized (infos) {\n                    if (!infos.containsKey(method)) { // double check for synchro\n                        org.superbiz.dynamic.mbean.ObjectName on = method.getAnnotation(org.superbiz.dynamic.mbean.ObjectName.class);\n                        if (on == null) {\n                            Class<?> current = method.getDeclaringClass();\n                            do {\n                                on = method.getDeclaringClass().getAnnotation(org.superbiz.dynamic.mbean.ObjectName.class);\n                                current = current.getSuperclass();\n                            } while (on == null && current != null);\n                            if (on == null) {\n                                throw new UnsupportedOperationException(\"class or method should define the objectName to use for invocation: \" + method.toGenericString());\n                            }\n                        }\n                        final ConnectionInfo info;\n                        if (on.url().isEmpty()) {\n                            info = new LocalConnectionInfo();\n                            ((LocalConnectionInfo) info).server = ManagementFactory.getPlatformMBeanServer(); // could use an id...\n                        } else {\n                            info = new RemoteConnectionInfo();\n                            final Map<String, String[]> environment = new HashMap<String, String[]>();\n                            if (!on.user().isEmpty()) {\n                                environment.put(JMXConnector.CREDENTIALS, new String[]{ on.user(), on.password() });\n                            }\n                            // ((RemoteConnectionInfo) info).connector = JMXConnectorFactory.newJMXConnector(new JMXServiceURL(on.url()), environment);\n                            ((RemoteConnectionInfo) info).connector = JMXConnectorFactory.connect(new JMXServiceURL(on.url()), environment);\n\n                        }\n                        info.objectName = new ObjectName(on.value());\n\n                        infos.put(method, info);\n                    }\n                }\n            }\n            return infos.get(method);\n        }\n\n        private abstract static class ConnectionInfo {\n            protected ObjectName objectName;\n\n            public abstract void setAttribute(Attribute attribute) throws Exception;\n            public abstract Object getAttribute(String attribute) throws Exception;\n            public abstract Object invoke(String operationName, Object params[], String signature[]) throws Exception;\n            public abstract MBeanInfo getMBeanInfo() throws Exception;\n            public abstract void clean();\n        }\n\n        private static class LocalConnectionInfo extends ConnectionInfo {\n            private MBeanServer server;\n\n            @Override public void setAttribute(Attribute attribute) throws Exception {\n                server.setAttribute(objectName, attribute);\n            }\n\n            @Override public Object getAttribute(String attribute) throws Exception {\n                return server.getAttribute(objectName, attribute);\n            }\n\n            @Override\n            public Object invoke(String operationName, Object[] params, String[] signature) throws Exception {\n                return server.invoke(objectName, operationName, params, signature);\n            }\n\n            @Override public MBeanInfo getMBeanInfo() throws Exception {\n                return server.getMBeanInfo(objectName);\n            }\n\n            @Override public void clean() {\n                // no-op\n            }\n        }\n\n        private static class RemoteConnectionInfo extends ConnectionInfo {\n            private JMXConnector connector;\n            private MBeanServerConnection connection;\n\n            private void before() throws IOException {\n                connection = connector.getMBeanServerConnection();\n            }\n\n            private void after() throws IOException {\n                // no-op\n            }\n\n            @Override public void setAttribute(Attribute attribute) throws Exception {\n                before();\n                connection.setAttribute(objectName, attribute);\n                after();\n            }\n\n            @Override public Object getAttribute(String attribute) throws Exception {\n                before();\n                try {\n                    return connection.getAttribute(objectName, attribute);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override\n            public Object invoke(String operationName, Object[] params, String[] signature) throws Exception {\n                before();\n                try {\n                    return connection.invoke(objectName, operationName, params, signature);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override public MBeanInfo getMBeanInfo() throws Exception {\n                before();\n                try {\n                    return connection.getMBeanInfo(objectName);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override public void clean() {\n                try {\n                    connector.close();\n                } catch (IOException e) {\n                    // no-op\n                }\n            }\n        }\n    }\n\n## Dynamic Proxies    \n\n### DynamicMBeanClient (the dynamic JMX client)\n\n\tpackage org.superbiz.dynamic.mbean;\n\n\timport org.apache.openejb.api.Proxy;\n\timport org.superbiz.dynamic.mbean.DynamicMBeanHandler;\n\timport org.superbiz.dynamic.mbean.ObjectName;\n\n\timport javax.ejb.Singleton;\n\n\t/**\n\t * @author rmannibucau\n\t */\n\t@Singleton\n\t@Proxy(DynamicMBeanHandler.class)\n\t@ObjectName(DynamicMBeanClient.OBJECT_NAME)\n\tpublic interface DynamicMBeanClient {\n\t\tstatic final String OBJECT_NAME = \"test:group=DynamicMBeanClientTest\";\n\n\t\tint getCounter();\n\t\tvoid setCounter(int i);\n\t\tint length(String aString);\n\t}\n\n### DynamicMBeanClient (the dynamic JMX client)\n    package org.superbiz.dynamic.mbean;\n\n    import org.apache.openejb.api.Proxy;\n\n    import javax.annotation.PreDestroy;\n    import javax.ejb.Singleton;\n\n\n    @Singleton\n    @Proxy(DynamicMBeanHandler.class)\n    @ObjectName(value = DynamicRemoteMBeanClient.OBJECT_NAME, url = \"service:jmx:rmi:///jndi/rmi://localhost:8243/jmxrmi\")\n    public interface DynamicRemoteMBeanClient {\n        static final String OBJECT_NAME = \"test:group=DynamicMBeanClientTest\";\n\n        int getCounter();\n        void setCounter(int i);\n        int length(String aString);\n\n        @PreDestroy void clean();\n    }\n\n## The MBean used for the test\n\n### SimpleMBean\n\n\tpackage org.superbiz.dynamic.mbean.simple;\n\n\tpublic interface SimpleMBean {\n\t\tint length(String s);\n\n\t\tint getCounter();\n\t\tvoid setCounter(int c);\n\t}\n\n## Simple\n\n\tpackage org.superbiz.dynamic.mbean.simple;\n\n\tpublic class Simple implements SimpleMBean {\n\t\tprivate int counter = 0;\n\n\t\t@Override public int length(String s) {\n\t\t    if (s == null) {\n\t\t        return 0;\n\t\t    }\n\t\t    return s.length();\n\t\t}\n\n\t\t@Override public int getCounter() {\n\t\t    return counter;\n\t\t}\n\n\t\t@Override public void setCounter(int c) {\n\t\t    counter = c;\n\t\t}\n\t}\n\n## DynamicMBeanClientTest (The test)\n\n    package org.superbiz.dynamic.mbean;\n\n    import org.junit.After;\n    import org.junit.AfterClass;\n    import org.junit.Before;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    import org.superbiz.dynamic.mbean.simple.Simple;\n\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.management.Attribute;\n    import javax.management.ObjectName;\n    import java.lang.management.ManagementFactory;\n\n    import static junit.framework.Assert.assertEquals;\n\n    public class DynamicMBeanClientTest {\n        private static ObjectName objectName;\n        private static EJBContainer container;\n\n        @EJB private DynamicMBeanClient localClient;\n        @EJB private DynamicRemoteMBeanClient remoteClient;\n\n        @BeforeClass public static void start() {\n            container = EJBContainer.createEJBContainer();\n        }\n\n        @Before public void injectAndRegisterMBean() throws Exception {\n            container.getContext().bind(\"inject\", this);\n            objectName = new ObjectName(DynamicMBeanClient.OBJECT_NAME);\n            ManagementFactory.getPlatformMBeanServer().registerMBean(new Simple(), objectName);\n        }\n\n        @After public void unregisterMBean() throws Exception {\n            if (objectName != null) {\n                ManagementFactory.getPlatformMBeanServer().unregisterMBean(objectName);\n            }\n        }\n\n        @Test public void localGet() throws Exception {\n            assertEquals(0, localClient.getCounter());\n            ManagementFactory.getPlatformMBeanServer().setAttribute(objectName, new Attribute(\"Counter\", 5));\n            assertEquals(5, localClient.getCounter());\n        }\n\n        @Test public void localSet() throws Exception {\n            assertEquals(0, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n            localClient.setCounter(8);\n            assertEquals(8, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n        }\n\n        @Test public void localOperation() {\n            assertEquals(7, localClient.length(\"openejb\"));\n        }\n\n        @Test public void remoteGet() throws Exception {\n            assertEquals(0, remoteClient.getCounter());\n            ManagementFactory.getPlatformMBeanServer().setAttribute(objectName, new Attribute(\"Counter\", 5));\n            assertEquals(5, remoteClient.getCounter());\n        }\n\n        @Test public void remoteSet() throws Exception {\n            assertEquals(0, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n            remoteClient.setCounter(8);\n            assertEquals(8, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n        }\n\n        @Test public void remoteOperation() {\n            assertEquals(7, remoteClient.length(\"openejb\"));\n        }\n\n        @AfterClass public static void close() {\n            if (container != null) {\n                container.close();\n            }\n        }\n    }\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-proxy-to-access-mbean"
+      },
+      {
+        "name":"mbean-auto-registration",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/mbean-auto-registration"
+      }
+    ],
+    "mdb":[
+      {
+        "name":"simple-mdb-and-cdi",
+        "readme":"Title: Simple MDB and CDI\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## ChatBean\n\n    package org.superbiz.mdb;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.MessageDriven;\n    import javax.inject.Inject;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import javax.jms.Message;\n    import javax.jms.MessageListener;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    @MessageDriven\n    public class ChatBean implements MessageListener {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource(name = \"AnswerQueue\")\n        private Queue answerQueue;\n    \n        @Inject\n        private ChatRespondCreator responder;\n    \n        public void onMessage(Message message) {\n            try {\n    \n                final TextMessage textMessage = (TextMessage) message;\n                final String question = textMessage.getText();\n                final String response = responder.respond(question);\n    \n                if (response != null) {\n                    respond(response);\n                }\n            } catch (JMSException e) {\n                throw new IllegalStateException(e);\n            }\n        }\n    \n        private void respond(String text) throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n    \n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageProducer from the Session to the Topic or Queue\n                MessageProducer producer = session.createProducer(answerQueue);\n                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                // Create a message\n                TextMessage message = session.createTextMessage(text);\n    \n                // Tell the producer to send the message\n                producer.send(message);\n            } finally {\n                // Clean up\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    }\n\n## ChatRespondCreator\n\n    package org.superbiz.mdb;\n    \n    public class ChatRespondCreator {\n        public String respond(String question) {\n            if (\"Hello World!\".equals(question)) {\n                return \"Hello, Test Case!\";\n            } else if (\"How are you?\".equals(question)) {\n                return \"I'm doing well.\";\n            } else if (\"Still spinning?\".equals(question)) {\n                return \"Once every day, as usual.\";\n            }\n            return null;\n        }\n    }\n\n## beans.xml\n\n    <!--\n    \n        Licensed to the Apache Software Foundation (ASF) under one or more\n        contributor license agreements.  See the NOTICE file distributed with\n        this work for additional information regarding copyright ownership.\n        The ASF licenses this file to You under the Apache License, Version 2.0\n        (the \"License\"); you may not use this file except in compliance with\n        the License.  You may obtain a copy of the License at\n    \n           http://www.apache.org/licenses/LICENSE-2.0\n        Unless required by applicable law or agreed to in writing, software\n        distributed under the License is distributed on an \"AS IS\" BASIS,\n        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n        See the License for the specific language governing permissions and\n        limitations under the License.\n    -->\n    \n    <beans/>\n    \n\n## ChatBeanTest\n\n    package org.superbiz.mdb;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.JMSException;\n    import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    public class ChatBeanTest extends TestCase {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource(name = \"ChatBean\")\n        private Queue questionQueue;\n    \n        @Resource(name = \"AnswerQueue\")\n        private Queue answerQueue;\n    \n        public void test() throws Exception {\n            EJBContainer.createEJBContainer().getContext().bind(\"inject\", this);\n    \n    \n            final Connection connection = connectionFactory.createConnection();\n    \n            connection.start();\n    \n            final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n            final MessageProducer questions = session.createProducer(questionQueue);\n    \n            final MessageConsumer answers = session.createConsumer(answerQueue);\n    \n    \n            sendText(\"Hello World!\", questions, session);\n    \n            assertEquals(\"Hello, Test Case!\", receiveText(answers));\n    \n    \n            sendText(\"How are you?\", questions, session);\n    \n            assertEquals(\"I'm doing well.\", receiveText(answers));\n    \n    \n            sendText(\"Still spinning?\", questions, session);\n    \n            assertEquals(\"Once every day, as usual.\", receiveText(answers));\n        }\n    \n        private void sendText(String text, MessageProducer questions, Session session) throws JMSException {\n    \n            questions.send(session.createTextMessage(text));\n        }\n    \n        private String receiveText(MessageConsumer answers) throws JMSException {\n    \n            return ((TextMessage) answers.receive(1000)).getText();\n        }\n    }\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-mdb-and-cdi"
+      },
+      {
+        "name":"simple-mdb",
+        "readme":"Title: Simple MDB\n\nBelow is a fun app, a chat application that uses JMS. We create a message driven bean, by marking our class with `@MessageDriven`. A message driven bean has some similarities with a stateless session bean, in the part that it is pooled too.\n\nWell, lets tell our chat-app to listen for incoming messages. That we do by implementing `MessageListener` and overriding the `onMessage(Message message)`.\n\nThen this app \"listens\" for incoming messages, and the messages picked up are processed by `onMessage(Message message)` method.\n\nThat finishes our message driven bean implementation. The \"processing\" part could be anything that fits your business-requirement.\n\nIn this case, it is to respond to the user. The `respond` method shows how a Message can be sent.\n\nThis sequence diagram shows how a message is sent.\n\n<img src=\"../../resources/mdb-flow.png\" alt=\"\"/>\n\n## ChatBean\n\n    package org.superbiz.mdb;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.MessageDriven;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import javax.jms.Message;\n    import javax.jms.MessageListener;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    @MessageDriven\n    public class ChatBean implements MessageListener {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource(name = \"AnswerQueue\")\n        private Queue answerQueue;\n    \n        public void onMessage(Message message) {\n            try {\n    \n                final TextMessage textMessage = (TextMessage) message;\n                final String question = textMessage.getText();\n    \n                if (\"Hello World!\".equals(question)) {\n    \n                    respond(\"Hello, Test Case!\");\n                } else if (\"How are you?\".equals(question)) {\n    \n                    respond(\"I'm doing well.\");\n                } else if (\"Still spinning?\".equals(question)) {\n    \n                    respond(\"Once every day, as usual.\");\n                }\n            } catch (JMSException e) {\n                throw new IllegalStateException(e);\n            }\n        }\n    \n        private void respond(String text) throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n    \n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageProducer from the Session to the Topic or Queue\n                MessageProducer producer = session.createProducer(answerQueue);\n                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                // Create a message\n                TextMessage message = session.createTextMessage(text);\n    \n                // Tell the producer to send the message\n                producer.send(message);\n            } finally {\n                // Clean up\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    }\n\n## ChatBeanTest\n\n    package org.superbiz.mdb;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.JMSException;\n    import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    public class ChatBeanTest extends TestCase {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource(name = \"ChatBean\")\n        private Queue questionQueue;\n    \n        @Resource(name = \"AnswerQueue\")\n        private Queue answerQueue;\n    \n        public void test() throws Exception {\n            EJBContainer.createEJBContainer().getContext().bind(\"inject\", this);\n    \n    \n            final Connection connection = connectionFactory.createConnection();\n    \n            connection.start();\n    \n            final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n            final MessageProducer questions = session.createProducer(questionQueue);\n    \n            final MessageConsumer answers = session.createConsumer(answerQueue);\n    \n    \n            sendText(\"Hello World!\", questions, session);\n    \n            assertEquals(\"Hello, Test Case!\", receiveText(answers));\n    \n    \n            sendText(\"How are you?\", questions, session);\n    \n            assertEquals(\"I'm doing well.\", receiveText(answers));\n    \n    \n            sendText(\"Still spinning?\", questions, session);\n    \n            assertEquals(\"Once every day, as usual.\", receiveText(answers));\n        }\n    \n        private void sendText(String text, MessageProducer questions, Session session) throws JMSException {\n    \n            questions.send(session.createTextMessage(text));\n        }\n    \n        private String receiveText(MessageConsumer answers) throws JMSException {\n    \n            return ((TextMessage) answers.receive(1000)).getText();\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.mdb.ChatBeanTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/simple-mdb\n    INFO - openejb.base = /Users/dblevins/examples/simple-mdb\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-mdb/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/simple-mdb/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/simple-mdb\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Auto-configuring a message driven bean ChatBean destination ChatBean to be destinationType javax.jms.Queue\n    INFO - Configuring Service(id=Default MDB Container, type=Container, provider-id=Default MDB Container)\n    INFO - Auto-creating a container for bean ChatBean: Container(type=MESSAGE, id=Default MDB Container)\n    INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)\n    INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)\n    INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'ChatBean'.\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdb.ChatBean/connectionFactory' in bean ChatBean to Resource(id=Default JMS Connection Factory)\n    INFO - Configuring Service(id=AnswerQueue, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'AnswerQueue' of type 'javax.jms.Queue for 'ChatBean'.\n    INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean ChatBean to Resource(id=AnswerQueue)\n    INFO - Configuring Service(id=ChatBean, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'ChatBean' of type 'javax.jms.Queue for 'ChatBean'.\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.mdb.ChatBeanTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdb.ChatBeanTest/connectionFactory' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=Default JMS Connection Factory)\n    INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=AnswerQueue)\n    INFO - Auto-linking resource-env-ref 'java:comp/env/ChatBean' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=ChatBean)\n    INFO - Enterprise application \"/Users/dblevins/examples/simple-mdb\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/simple-mdb\n    INFO - Jndi(name=\"java:global/EjbModule1515710343/org.superbiz.mdb.ChatBeanTest!org.superbiz.mdb.ChatBeanTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1515710343/org.superbiz.mdb.ChatBeanTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/simple-mdb)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.547 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-mdb"
+      },
+      {
+        "name":"simple-mdb-with-descriptor",
+        "readme":"Title: Simple MDB with Descriptor\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## ChatBean\n\n    package org.superbiz.mdbdesc;\n    \n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import javax.jms.Message;\n    import javax.jms.MessageListener;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    public class ChatBean implements MessageListener {\n    \n        private ConnectionFactory connectionFactory;\n    \n        private Queue answerQueue;\n    \n        public void onMessage(Message message) {\n            try {\n    \n                final TextMessage textMessage = (TextMessage) message;\n                final String question = textMessage.getText();\n    \n                if (\"Hello World!\".equals(question)) {\n    \n                    respond(\"Hello, Test Case!\");\n                } else if (\"How are you?\".equals(question)) {\n    \n                    respond(\"I'm doing well.\");\n                } else if (\"Still spinning?\".equals(question)) {\n    \n                    respond(\"Once every day, as usual.\");\n                }\n            } catch (JMSException e) {\n                throw new IllegalStateException(e);\n            }\n        }\n    \n        private void respond(String text) throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n    \n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageProducer from the Session to the Topic or Queue\n                MessageProducer producer = session.createProducer(answerQueue);\n                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                // Create a message\n                TextMessage message = session.createTextMessage(text);\n    \n                // Tell the producer to send the message\n                producer.send(message);\n            } finally {\n                // Clean up\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" metadata-complete=\"true\">\n      <enterprise-beans>\n    \n        <message-driven>\n    \n          <ejb-name>ChatBean</ejb-name>\n          <ejb-class>org.superbiz.mdbdesc.ChatBean</ejb-class>\n    \n          <messaging-type>javax.jms.MessageListener</messaging-type>\n    \n          <activation-config>\n            <activation-config-property>\n              <activation-config-property-name>destination</activation-config-property-name>\n              <activation-config-property-value>ChatBean</activation-config-property-value>\n            </activation-config-property>\n            <activation-config-property>\n              <activation-config-property-name>destinationType</activation-config-property-name>\n              <activation-config-property-value>javax.jms.Queue</activation-config-property-value>\n            </activation-config-property>\n          </activation-config>\n    \n          <resource-ref>\n            <res-ref-name>java:comp/env/org.superbiz.mdbdesc.ChatBean/connectionFactory</res-ref-name>\n            <res-type>javax.jms.ConnectionFactory</res-type>\n            <injection-target>\n              <injection-target-class>org.superbiz.mdbdesc.ChatBean</injection-target-class>\n              <injection-target-name>connectionFactory</injection-target-name>\n            </injection-target>\n          </resource-ref>\n    \n          <resource-env-ref>\n            <resource-env-ref-name>java:comp/env/AnswerQueue</resource-env-ref-name>\n            <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>\n            <mapped-name>AnswerQueue</mapped-name>\n            <injection-target>\n              <injection-target-class>org.superbiz.mdbdesc.ChatBean</injection-target-class>\n              <injection-target-name>answerQueue</injection-target-name>\n            </injection-target>\n          </resource-env-ref>\n    \n        </message-driven>\n    \n      </enterprise-beans>\n    </ejb-jar>\n    \n\n## ChatBeanTest\n\n    package org.superbiz.mdb;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.JMSException;\n    import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    public class ChatBeanTest extends TestCase {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource(name = \"ChatBean\")\n        private Queue questionQueue;\n    \n        @Resource(name = \"AnswerQueue\")\n        private Queue answerQueue;\n    \n        public void test() throws Exception {\n    \n            EJBContainer.createEJBContainer().getContext().bind(\"inject\", this);\n    \n            final Connection connection = connectionFactory.createConnection();\n    \n            connection.start();\n    \n            final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n            final MessageProducer questions = session.createProducer(questionQueue);\n    \n            final MessageConsumer answers = session.createConsumer(answerQueue);\n    \n    \n            sendText(\"Hello World!\", questions, session);\n    \n            assertEquals(\"Hello, Test Case!\", receiveText(answers));\n    \n    \n            sendText(\"How are you?\", questions, session);\n    \n            assertEquals(\"I'm doing well.\", receiveText(answers));\n    \n    \n            sendText(\"Still spinning?\", questions, session);\n    \n            assertEquals(\"Once every day, as usual.\", receiveText(answers));\n        }\n    \n        private void sendText(String text, MessageProducer questions, Session session) throws JMSException {\n    \n            questions.send(session.createTextMessage(text));\n        }\n    \n        private String receiveText(MessageConsumer answers) throws JMSException {\n    \n            return ((TextMessage) answers.receive(1000)).getText();\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.mdb.ChatBeanTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/simple-mdb-with-descriptor\n    INFO - openejb.base = /Users/dblevins/examples/simple-mdb-with-descriptor\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-mdb-with-descriptor/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/simple-mdb-with-descriptor/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/simple-mdb-with-descriptor\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default MDB Container, type=Container, provider-id=Default MDB Container)\n    INFO - Auto-creating a container for bean ChatBean: Container(type=MESSAGE, id=Default MDB Container)\n    INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)\n    INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)\n    INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'ChatBean'.\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdbdesc.ChatBean/connectionFactory' in bean ChatBean to Resource(id=Default JMS Connection Factory)\n    INFO - Configuring Service(id=AnswerQueue, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'AnswerQueue' of type 'javax.jms.Queue for 'ChatBean'.\n    INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean ChatBean to Resource(id=AnswerQueue)\n    INFO - Configuring Service(id=ChatBean, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'ChatBean' of type 'javax.jms.Queue for 'ChatBean'.\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.mdb.ChatBeanTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdb.ChatBeanTest/connectionFactory' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=Default JMS Connection Factory)\n    INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=AnswerQueue)\n    INFO - Auto-linking resource-env-ref 'java:comp/env/ChatBean' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=ChatBean)\n    INFO - Enterprise application \"/Users/dblevins/examples/simple-mdb-with-descriptor\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/simple-mdb-with-descriptor\n    INFO - Jndi(name=\"java:global/EjbModule1842275169/org.superbiz.mdb.ChatBeanTest!org.superbiz.mdb.ChatBeanTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1842275169/org.superbiz.mdb.ChatBeanTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/simple-mdb-with-descriptor)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.914 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-mdb-with-descriptor"
+      }
+    ],
+    "meta":[
+      {
+        "name":"spring-data-proxy-meta",
+        "readme":"# Spring Data With Meta sample #\n\nThis example simply simplifies the usage of spring-data sample\nproviding a meta annotation @SpringRepository to do all the dynamic procy EJB job.\n\nIt replaces @Proxy and @Stateless annotations.\n\nIsn't it more comfortable?\n\nTo do it we defined a meta annotation \"Metatype\" and used it.\n\nThe proxy implementation is the same than for spring-data sample.\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/spring-data-proxy-meta"
+      },
+      {
+        "name":"testing-security-meta",
+        "readme":"Title: Testing Security Meta\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AddPermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RolesAllowed;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface AddPermission {\n        public static interface $ {\n    \n            @AddPermission\n            @RolesAllowed({\"Employee\", \"Manager\"})\n            public void method();\n        }\n    }\n\n## DeletePermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RolesAllowed;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface DeletePermission {\n        public static interface $ {\n    \n            @DeletePermission\n            @RolesAllowed(\"Manager\")\n            public void method();\n        }\n    }\n\n## Metatype\n\n    package org.superbiz.injection.secure.api;\n    \n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.ANNOTATION_TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    public @interface Metatype {\n    }\n\n## MovieUnit\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.METHOD, ElementType.FIELD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @PersistenceContext(name = \"movie-unit\", unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n    public @interface MovieUnit {\n    }\n\n## ReadPermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.PermitAll;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface ReadPermission {\n        public static interface $ {\n    \n            @ReadPermission\n            @PermitAll\n            @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n            public void method();\n        }\n    }\n\n## RunAsEmployee\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RunAs;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.TYPE, ElementType.METHOD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @RunAs(\"Employee\")\n    public @interface RunAsEmployee {\n    }\n\n## RunAsManager\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RunAs;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.TYPE, ElementType.METHOD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @RunAs(\"Manager\")\n    public @interface RunAsManager {\n    }\n\n## Movie\n\n    package org.superbiz.injection.secure;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.secure;\n    \n    //START SNIPPET: code\n    \n    import org.superbiz.injection.secure.api.AddPermission;\n    import org.superbiz.injection.secure.api.DeletePermission;\n    import org.superbiz.injection.secure.api.MovieUnit;\n    import org.superbiz.injection.secure.api.ReadPermission;\n    \n    import javax.ejb.Stateful;\n    import javax.persistence.EntityManager;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @MovieUnit\n        private EntityManager entityManager;\n    \n        @AddPermission\n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        @DeletePermission\n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        @ReadPermission\n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.secure.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MovieTest\n\n    package org.superbiz.injection.secure;\n    \n    import junit.framework.TestCase;\n    import org.superbiz.injection.secure.api.RunAsEmployee;\n    import org.superbiz.injection.secure.api.RunAsManager;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.ejb.Stateless;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.List;\n    import java.util.Properties;\n    import java.util.concurrent.Callable;\n    \n    //START SNIPPET: code\n    \n    public class MovieTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @EJB(beanName = \"ManagerBean\")\n        private Caller manager;\n    \n        @EJB(beanName = \"EmployeeBean\")\n        private Caller employee;\n    \n        protected void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        public void testAsManager() throws Exception {\n            manager.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        movies.deleteMovie(movie);\n                    }\n    \n                    assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testAsEmployee() throws Exception {\n            employee.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        try {\n                            movies.deleteMovie(movie);\n                            fail(\"Employees should not be allowed to delete\");\n                        } catch (EJBAccessException e) {\n                            // Good, Employees cannot delete things\n                        }\n                    }\n    \n                    // The list should still be three movies long\n                    assertEquals(\"Movies.getMovies()\", 3, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testUnauthenticated() throws Exception {\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                fail(\"Unauthenticated users should not be able to add movies\");\n            } catch (EJBAccessException e) {\n                // Good, guests cannot add things\n            }\n    \n            try {\n                movies.deleteMovie(null);\n                fail(\"Unauthenticated users should not be allowed to delete\");\n            } catch (EJBAccessException e) {\n                // Good, Unauthenticated users cannot delete things\n            }\n    \n            try {\n                // Read access should be allowed\n    \n                List<Movie> list = movies.getMovies();\n            } catch (EJBAccessException e) {\n                fail(\"Read access should be allowed\");\n            }\n        }\n    \n        public interface Caller {\n            public <V> V call(Callable<V> callable) throws Exception;\n        }\n    \n        /**\n         * This little bit of magic allows our test code to execute in\n         * the desired security scope.\n         */\n    \n        @Stateless\n        @RunAsManager\n        public static class ManagerBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    \n        @Stateless\n        @RunAsEmployee\n        public static class EmployeeBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.secure.MovieTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testing-security-meta\n    INFO - openejb.base = /Users/dblevins/examples/testing-security-meta\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-meta/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-meta/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security-meta/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security-meta/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testing-security-meta\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean ManagerBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testing-security-meta\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testing-security-meta\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 419ms\n    INFO - Jndi(name=\"java:global/testing-security-meta/Movies!org.superbiz.injection.secure.Movies\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/Movies\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/ManagerBean\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/EmployeeBean\")\n    INFO - Jndi(name=\"java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest\")\n    INFO - Jndi(name=\"java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testing-security-meta)\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.754 sec\n    \n    Results :\n    \n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-meta"
+      },
+      {
+        "name":"schedule-methods-meta",
+        "readme":"Title: Schedule Methods Meta\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## BiAnnually\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface BiAnnually {\n        public static interface $ {\n    \n            @BiAnnually\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"1\", month = \"1,6\")\n            public void method();\n        }\n    }\n\n## BiMonthly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface BiMonthly {\n        public static interface $ {\n    \n            @BiMonthly\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"1,15\")\n            public void method();\n        }\n    }\n\n## Daily\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Daily {\n        public static interface $ {\n    \n            @Daily\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"*\")\n            public void method();\n        }\n    }\n\n## HarvestTime\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import javax.ejb.Schedules;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface HarvestTime {\n        public static interface $ {\n    \n            @HarvestTime\n            @Schedules({\n                    @Schedule(month = \"9\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                    @Schedule(month = \"10\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n            })\n            public void method();\n        }\n    }\n\n## Hourly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Hourly {\n        public static interface $ {\n    \n            @Hourly\n            @Schedule(second = \"0\", minute = \"0\", hour = \"*\")\n            public void method();\n        }\n    }\n\n## Metatype\n\n    package org.superbiz.corn.meta.api;\n    \n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.ANNOTATION_TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    public @interface Metatype {\n    }\n\n## Organic\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Lock;\n    import javax.ejb.LockType;\n    import javax.ejb.Singleton;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @Singleton\n    @Lock(LockType.READ)\n    public @interface Organic {\n    }\n\n## PlantingTime\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import javax.ejb.Schedules;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface PlantingTime {\n        public static interface $ {\n    \n            @PlantingTime\n            @Schedules({\n                    @Schedule(month = \"5\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                    @Schedule(month = \"6\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n            })\n            public void method();\n        }\n    }\n\n## Secondly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Secondly {\n        public static interface $ {\n    \n            @Secondly\n            @Schedule(second = \"*\", minute = \"*\", hour = \"*\")\n            public void method();\n        }\n    }\n\n## FarmerBrown\n\n    package org.superbiz.corn.meta;\n    \n    import org.superbiz.corn.meta.api.HarvestTime;\n    import org.superbiz.corn.meta.api.Organic;\n    import org.superbiz.corn.meta.api.PlantingTime;\n    import org.superbiz.corn.meta.api.Secondly;\n    \n    import java.util.concurrent.atomic.AtomicInteger;\n    \n    /**\n     * This is where we schedule all of Farmer Brown's corn jobs\n     *\n     * @version $Revision$ $Date$\n     */\n    @Organic\n    public class FarmerBrown {\n    \n        private final AtomicInteger checks = new AtomicInteger();\n    \n        @PlantingTime\n        private void plantTheCorn() {\n            // Dig out the planter!!!\n        }\n    \n        @HarvestTime\n        private void harvestTheCorn() {\n            // Dig out the combine!!!\n        }\n    \n        @Secondly\n        private void checkOnTheDaughters() {\n            checks.incrementAndGet();\n        }\n    \n        public int getChecks() {\n            return checks.get();\n        }\n    }\n\n## FarmerBrownTest\n\n    package org.superbiz.corn.meta;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    import static java.util.concurrent.TimeUnit.SECONDS;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    public class FarmerBrownTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            final FarmerBrown farmerBrown = (FarmerBrown) context.lookup(\"java:global/schedule-methods-meta/FarmerBrown\");\n    \n            // Give Farmer brown a chance to do some work\n            Thread.sleep(SECONDS.toMillis(5));\n    \n            assertTrue(farmerBrown.getChecks() > 4);\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.corn.meta.FarmerBrownTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/schedule-methods-meta\n    INFO - openejb.base = /Users/dblevins/examples/schedule-methods-meta\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/schedule-methods-meta/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/schedule-methods-meta/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/schedule-methods-meta\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean FarmerBrown: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.corn.meta.FarmerBrownTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/schedule-methods-meta\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/schedule-methods-meta\n    INFO - Jndi(name=\"java:global/schedule-methods-meta/FarmerBrown!org.superbiz.corn.meta.FarmerBrown\")\n    INFO - Jndi(name=\"java:global/schedule-methods-meta/FarmerBrown\")\n    INFO - Jndi(name=\"java:global/EjbModule1809441479/org.superbiz.corn.meta.FarmerBrownTest!org.superbiz.corn.meta.FarmerBrownTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1809441479/org.superbiz.corn.meta.FarmerBrownTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.corn.meta.FarmerBrownTest, ejb-name=org.superbiz.corn.meta.FarmerBrownTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.corn.meta.FarmerBrownTest, ejb-name=org.superbiz.corn.meta.FarmerBrownTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/schedule-methods-meta)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.166 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-methods-meta"
+      },
+      {
+        "name":"access-timeout-meta",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/access-timeout-meta"
+      },
+      {
+        "name":"movies-complete-meta",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/movies-complete-meta"
+      }
+    ],
+    "methods":[
+      {
+        "name":"schedule-methods",
+        "readme":"Title: Schedule Methods\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## FarmerBrown\n\n    package org.superbiz.corn;\n    \n    import javax.ejb.Lock;\n    import javax.ejb.LockType;\n    import javax.ejb.Schedule;\n    import javax.ejb.Schedules;\n    import javax.ejb.Singleton;\n    import java.util.concurrent.atomic.AtomicInteger;\n    \n    /**\n     * This is where we schedule all of Farmer Brown's corn jobs\n     *\n     * @version $Revision$ $Date$\n     */\n    @Singleton\n    @Lock(LockType.READ) // allows timers to execute in parallel\n    public class FarmerBrown {\n    \n        private final AtomicInteger checks = new AtomicInteger();\n    \n        @Schedules({\n                @Schedule(month = \"5\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                @Schedule(month = \"6\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n        })\n        private void plantTheCorn() {\n            // Dig out the planter!!!\n        }\n    \n        @Schedules({\n                @Schedule(month = \"9\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                @Schedule(month = \"10\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n        })\n        private void harvestTheCorn() {\n            // Dig out the combine!!!\n        }\n    \n        @Schedule(second = \"*\", minute = \"*\", hour = \"*\")\n        private void checkOnTheDaughters() {\n            checks.incrementAndGet();\n        }\n    \n        public int getChecks() {\n            return checks.get();\n        }\n    }\n\n## FarmerBrownTest\n\n    package org.superbiz.corn;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    import static java.util.concurrent.TimeUnit.SECONDS;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    public class FarmerBrownTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            final FarmerBrown farmerBrown = (FarmerBrown) context.lookup(\"java:global/schedule-methods/FarmerBrown\");\n    \n            // Give Farmer brown a chance to do some work\n            Thread.sleep(SECONDS.toMillis(5));\n    \n            assertTrue(farmerBrown.getChecks() > 4);\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.corn.FarmerBrownTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/schedule-methods\n    INFO - openejb.base = /Users/dblevins/examples/schedule-methods\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/schedule-methods/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/schedule-methods/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/schedule-methods\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean FarmerBrown: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.corn.FarmerBrownTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/schedule-methods\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/schedule-methods\n    INFO - Jndi(name=\"java:global/schedule-methods/FarmerBrown!org.superbiz.corn.FarmerBrown\")\n    INFO - Jndi(name=\"java:global/schedule-methods/FarmerBrown\")\n    INFO - Jndi(name=\"java:global/EjbModule660493198/org.superbiz.corn.FarmerBrownTest!org.superbiz.corn.FarmerBrownTest\")\n    INFO - Jndi(name=\"java:global/EjbModule660493198/org.superbiz.corn.FarmerBrownTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.corn.FarmerBrownTest, ejb-name=org.superbiz.corn.FarmerBrownTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.corn.FarmerBrownTest, ejb-name=org.superbiz.corn.FarmerBrownTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/schedule-methods)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.121 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-methods"
+      },
+      {
+        "name":"schedule-methods-meta",
+        "readme":"Title: Schedule Methods Meta\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## BiAnnually\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface BiAnnually {\n        public static interface $ {\n    \n            @BiAnnually\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"1\", month = \"1,6\")\n            public void method();\n        }\n    }\n\n## BiMonthly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface BiMonthly {\n        public static interface $ {\n    \n            @BiMonthly\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"1,15\")\n            public void method();\n        }\n    }\n\n## Daily\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Daily {\n        public static interface $ {\n    \n            @Daily\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"*\")\n            public void method();\n        }\n    }\n\n## HarvestTime\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import javax.ejb.Schedules;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface HarvestTime {\n        public static interface $ {\n    \n            @HarvestTime\n            @Schedules({\n                    @Schedule(month = \"9\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                    @Schedule(month = \"10\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n            })\n            public void method();\n        }\n    }\n\n## Hourly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Hourly {\n        public static interface $ {\n    \n            @Hourly\n            @Schedule(second = \"0\", minute = \"0\", hour = \"*\")\n            public void method();\n        }\n    }\n\n## Metatype\n\n    package org.superbiz.corn.meta.api;\n    \n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.ANNOTATION_TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    public @interface Metatype {\n    }\n\n## Organic\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Lock;\n    import javax.ejb.LockType;\n    import javax.ejb.Singleton;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @Singleton\n    @Lock(LockType.READ)\n    public @interface Organic {\n    }\n\n## PlantingTime\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import javax.ejb.Schedules;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface PlantingTime {\n        public static interface $ {\n    \n            @PlantingTime\n            @Schedules({\n                    @Schedule(month = \"5\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                    @Schedule(month = \"6\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n            })\n            public void method();\n        }\n    }\n\n## Secondly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Secondly {\n        public static interface $ {\n    \n            @Secondly\n            @Schedule(second = \"*\", minute = \"*\", hour = \"*\")\n            public void method();\n        }\n    }\n\n## FarmerBrown\n\n    package org.superbiz.corn.meta;\n    \n    import org.superbiz.corn.meta.api.HarvestTime;\n    import org.superbiz.corn.meta.api.Organic;\n    import org.superbiz.corn.meta.api.PlantingTime;\n    import org.superbiz.corn.meta.api.Secondly;\n    \n    import java.util.concurrent.atomic.AtomicInteger;\n    \n    /**\n     * This is where we schedule all of Farmer Brown's corn jobs\n     *\n     * @version $Revision$ $Date$\n     */\n    @Organic\n    public class FarmerBrown {\n    \n        private final AtomicInteger checks = new AtomicInteger();\n    \n        @PlantingTime\n        private void plantTheCorn() {\n            // Dig out the planter!!!\n        }\n    \n        @HarvestTime\n        private void harvestTheCorn() {\n            // Dig out the combine!!!\n        }\n    \n        @Secondly\n        private void checkOnTheDaughters() {\n            checks.incrementAndGet();\n        }\n    \n        public int getChecks() {\n            return checks.get();\n        }\n    }\n\n## FarmerBrownTest\n\n    package org.superbiz.corn.meta;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    import static java.util.concurrent.TimeUnit.SECONDS;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    public class FarmerBrownTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            final FarmerBrown farmerBrown = (FarmerBrown) context.lookup(\"java:global/schedule-methods-meta/FarmerBrown\");\n    \n            // Give Farmer brown a chance to do some work\n            Thread.sleep(SECONDS.toMillis(5));\n    \n            assertTrue(farmerBrown.getChecks() > 4);\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.corn.meta.FarmerBrownTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/schedule-methods-meta\n    INFO - openejb.base = /Users/dblevins/examples/schedule-methods-meta\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/schedule-methods-meta/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/schedule-methods-meta/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/schedule-methods-meta\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean FarmerBrown: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.corn.meta.FarmerBrownTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/schedule-methods-meta\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/schedule-methods-meta\n    INFO - Jndi(name=\"java:global/schedule-methods-meta/FarmerBrown!org.superbiz.corn.meta.FarmerBrown\")\n    INFO - Jndi(name=\"java:global/schedule-methods-meta/FarmerBrown\")\n    INFO - Jndi(name=\"java:global/EjbModule1809441479/org.superbiz.corn.meta.FarmerBrownTest!org.superbiz.corn.meta.FarmerBrownTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1809441479/org.superbiz.corn.meta.FarmerBrownTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.corn.meta.FarmerBrownTest, ejb-name=org.superbiz.corn.meta.FarmerBrownTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.corn.meta.FarmerBrownTest, ejb-name=org.superbiz.corn.meta.FarmerBrownTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/schedule-methods-meta)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.166 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-methods-meta"
+      },
+      {
+        "name":"async-methods",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/async-methods"
+      }
+    ],
+    "mockito":[
+      {
+        "name":"rest-applicationcomposer-mockito",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito"
+      }
+    ],
+    "moviefun":[
+      {
+        "name":"moviefun",
+        "readme":"Title: Movies Complete\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AddInterceptor\n\n    package org.superbiz.injection.tx;\n    \n    import javax.interceptor.AroundInvoke;\n    import javax.interceptor.InvocationContext;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    public class AddInterceptor {\n    \n        @AroundInvoke\n        public Object invoke(InvocationContext context) throws Exception {\n            // Log Add\n            return context.proceed();\n        }\n    }\n\n## DeleteInterceptor\n\n    package org.superbiz.injection.tx;\n    \n    import javax.interceptor.AroundInvoke;\n    import javax.interceptor.InvocationContext;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    public class DeleteInterceptor {\n    \n        @AroundInvoke\n        public Object invoke(InvocationContext context) throws Exception {\n            // Log Delete\n            return context.proceed();\n        }\n    }\n\n## Movie\n\n    package org.superbiz.injection.tx;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.tx;\n    \n    import javax.annotation.security.PermitAll;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import javax.interceptor.Interceptors;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    //START SNIPPET: code\n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        @RolesAllowed({\"Employee\", \"Manager\"})\n        @TransactionAttribute(TransactionAttributeType.REQUIRED)\n        @Interceptors(AddInterceptor.class)\n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        @RolesAllowed({\"Manager\"})\n        @TransactionAttribute(TransactionAttributeType.MANDATORY)\n        @Interceptors(DeleteInterceptor.class)\n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        @PermitAll\n        @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## ReadInterceptor\n\n    package org.superbiz.injection.tx;\n    \n    import javax.interceptor.AroundInvoke;\n    import javax.interceptor.InvocationContext;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    public class ReadInterceptor {\n    \n        @AroundInvoke\n        public Object invoke(InvocationContext context) throws Exception {\n            // Log Delete\n            return context.proceed();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.tx.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.injection.tx;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.security.RunAs;\n    import javax.ejb.EJB;\n    import javax.ejb.Stateless;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.List;\n    import java.util.Properties;\n    import java.util.concurrent.Callable;\n    \n    import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;\n    \n    /**\n     * See the transaction-rollback example as it does the same thing\n     * via UserTransaction and shows more techniques for rollback \n     */\n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @EJB(beanName = \"TransactionBean\")\n        private Caller transactionalCaller;\n    \n        @EJB(beanName = \"NoTransactionBean\")\n        private Caller nonTransactionalCaller;\n    \n        protected void setUp() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        private void doWork() throws Exception {\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    \n        public void testWithTransaction() throws Exception {\n            transactionalCaller.call(new Callable() {\n                public Object call() throws Exception {\n                    doWork();\n                    return null;\n                }\n            });\n        }\n    \n        public void testWithoutTransaction() throws Exception {\n            try {\n                nonTransactionalCaller.call(new Callable() {\n                    public Object call() throws Exception {\n                        doWork();\n                        return null;\n                    }\n                });\n                fail(\"The Movies bean should be using TransactionAttributeType.MANDATORY\");\n            } catch (javax.ejb.EJBException e) {\n                // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want\n            }\n        }\n    \n    \n        public static interface Caller {\n            public <V> V call(Callable<V> callable) throws Exception;\n        }\n    \n        /**\n         * This little bit of magic allows our test code to execute in\n         * the scope of a container controlled transaction.\n         */\n        @Stateless\n        @RunAs(\"Manager\")\n        @TransactionAttribute(REQUIRES_NEW)\n        public static class TransactionBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    \n        @Stateless\n        @RunAs(\"Manager\")\n        @TransactionAttribute(TransactionAttributeType.NEVER)\n        public static class NoTransactionBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.tx.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/movies-complete\n    INFO - openejb.base = /Users/dblevins/examples/movies-complete\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/movies-complete\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/movies-complete\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/movies-complete\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 402ms\n    INFO - Jndi(name=\"java:global/movies-complete/Movies!org.superbiz.injection.tx.Movies\")\n    INFO - Jndi(name=\"java:global/movies-complete/Movies\")\n    INFO - Jndi(name=\"java:global/movies-complete/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller\")\n    INFO - Jndi(name=\"java:global/movies-complete/TransactionBean\")\n    INFO - Jndi(name=\"java:global/movies-complete/NoTransactionBean!org.superbiz.injection.tx.MoviesTest$Caller\")\n    INFO - Jndi(name=\"java:global/movies-complete/NoTransactionBean\")\n    INFO - Jndi(name=\"java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/movies-complete)\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.418 sec\n    \n    Results :\n    \n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/moviefun"
+      },
+      {
+        "name":"moviefun-rest",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/moviefun-rest"
+      }
+    ],
+    "movies":[
+      {
+        "name":"movies-complete",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/movies-complete"
+      },
+      {
+        "name":"movies-complete-meta",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/movies-complete-meta"
+      }
+    ],
+    "mtom":[
+      {
+        "name":"mtom",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/mtom"
+      }
+    ],
+    "multi":[
+      {
+        "name":"multi-jpa-provider-testing",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multi-jpa-provider-testing"
+      }
+    ],
+    "multiple":[
+      {
+        "name":"multiple-tomee-arquillian",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multiple-tomee-arquillian"
+      },
+      {
+        "name":"multiple-arquillian-adapters",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters"
+      }
+    ],
+    "myfaces":[
+      {
+        "name":"myfaces-codi-demo",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/myfaces-codi-demo"
+      }
+    ],
+    "of":[
+      {
+        "name":"injection-of-connectionfactory",
+        "readme":"Title: Injection Of Connectionfactory\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Messages\n\n    package org.superbiz.injection.jms;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.Stateless;\n    import javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import javax.jms.Queue;\n    import javax.jms.Session;\n    import javax.jms.TextMessage;\n    \n    @Stateless\n    public class Messages {\n    \n        @Resource\n        private ConnectionFactory connectionFactory;\n    \n        @Resource\n        private Queue chatQueue;\n    \n    \n        public void sendMessage(String text) throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n    \n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageProducer from the Session to the Topic or Queue\n                MessageProducer producer = session.createProducer(chatQueue);\n                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                // Create a message\n                TextMessage message = session.createTextMessage(text);\n    \n                // Tell the producer to send the message\n                producer.send(message);\n            } finally {\n                // Clean up\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    \n        public String receiveMessage() throws JMSException {\n    \n            Connection connection = null;\n            Session session = null;\n            MessageConsumer consumer = null;\n            try {\n                connection = connectionFactory.createConnection();\n                connection.start();\n    \n                // Create a Session\n                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n                // Create a MessageConsumer from the Session to the Topic or Queue\n                consumer = session.createConsumer(chatQueue);\n    \n                // Wait for a message\n                TextMessage message = (TextMessage) consumer.receive(1000);\n    \n                return message.getText();\n            } finally {\n                if (consumer != null) consumer.close();\n                if (session != null) session.close();\n                if (connection != null) connection.close();\n            }\n        }\n    }\n\n## MessagingBeanTest\n\n    package org.superbiz.injection.jms;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    public class MessagingBeanTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            Messages messages = (Messages) context.lookup(\"java:global/injection-of-connectionfactory/Messages\");\n    \n            messages.sendMessage(\"Hello World!\");\n            messages.sendMessage(\"How are you?\");\n            messages.sendMessage(\"Still spinning?\");\n    \n            assertEquals(messages.receiveMessage(), \"Hello World!\");\n            assertEquals(messages.receiveMessage(), \"How are you?\");\n            assertEquals(messages.receiveMessage(), \"Still spinning?\");\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.jms.MessagingBeanTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-connectionfactory/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-connectionfactory/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-connectionfactory\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Messages: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)\n    INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'Messages'.\n    INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.injection.jms.Messages/connectionFactory' in bean Messages to Resource(id=Default JMS Connection Factory)\n    INFO - Configuring Service(id=org.superbiz.injection.jms.Messages/chatQueue, type=Resource, provider-id=Default Queue)\n    INFO - Auto-creating a Resource with id 'org.superbiz.injection.jms.Messages/chatQueue' of type 'javax.jms.Queue for 'Messages'.\n    INFO - Auto-linking resource-env-ref 'java:comp/env/org.superbiz.injection.jms.Messages/chatQueue' in bean Messages to Resource(id=org.superbiz.injection.jms.Messages/chatQueue)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.jms.MessagingBeanTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-connectionfactory\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-connectionfactory\n    INFO - Jndi(name=\"java:global/injection-of-connectionfactory/Messages!org.superbiz.injection.jms.Messages\")\n    INFO - Jndi(name=\"java:global/injection-of-connectionfactory/Messages\")\n    INFO - Jndi(name=\"java:global/EjbModule1634151355/org.superbiz.injection.jms.MessagingBeanTest!org.superbiz.injection.jms.MessagingBeanTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1634151355/org.superbiz.injection.jms.MessagingBeanTest\")\n    INFO - Created Ejb(deployment-id=Messages, ejb-name=Messages, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.jms.MessagingBeanTest, ejb-name=org.superbiz.injection.jms.MessagingBeanTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Messages, ejb-name=Messages, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.jms.MessagingBeanTest, ejb-name=org.superbiz.injection.jms.MessagingBeanTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-connectionfactory)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.562 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-connectionfactory"
+      },
+      {
+        "name":"injection-of-env-entry",
+        "readme":"Title: Using EnvEntries\n\nThe `@Resource` annotation can be used to inject several things including\nDataSources, Topics, Queues, etc.  Most of these are container supplied objects.\n\nIt is possible, however, to supply your own values to be injected via an `<env-entry>`\nin your `ejb-jar.xml` or `web.xml` deployment descriptor.  Java EE 6 supported `<env-entry>` types\nare limited to the following:\n\n - java.lang.String\n - java.lang.Integer\n - java.lang.Short\n - java.lang.Float\n - java.lang.Double\n - java.lang.Byte\n - java.lang.Character\n - java.lang.Boolean\n - java.lang.Class\n - java.lang.Enum (any enum)\n\nSee also the [Custom Injection](../custom-injection) exmaple for a TomEE and OpenEJB feature that will let you\nuse more than just the above types as well as declare `<env-entry>` items with a plain properties file.\n\n# Using @Resource for basic properties\n\nThe use of the `@Resource` annotation isn't limited to setters.  For\nexample, this annotation could have been used on the corresponding *field*\nlike so:\n\n    @Resource\n    private int maxLineItems;\n\nA fuller example might look like this:\n\n    package org.superbiz.injection.enventry;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.Singleton;\n    import java.util.Date;\n    \n    @Singleton\n    public class Configuration {\n    \n        @Resource\n        private String color;\n    \n        @Resource\n        private Shape shape;\n    \n        @Resource\n        private Class strategy;\n    \n        @Resource(name = \"date\")\n        private long date;\n    \n        public String getColor() {\n            return color;\n        }\n    \n        public Shape getShape() {\n            return shape;\n        }\n    \n        public Class getStrategy() {\n            return strategy;\n        }\n    \n        public Date getDate() {\n            return new Date(date);\n        }\n    }\n\nHere we have an `@Singleton` bean called `Confuration` that has the following properties (`<env-entry>` items)\n\n- String color\n- Shape shape\n- Class strategy\n- long date\n\n## Supplying @Resource values for <env-entry> items in ejb-jar.xml\n\nThe values for our `color`, `shape`, `strategy` and `date` properties are supplied via `<env-entry>` elements in the `ejb-jar.xml` file or the\n`web.xml` file like so:\n\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" version=\"3.0\" metadata-complete=\"false\">\n      <enterprise-beans>\n        <session>\n          <ejb-name>Configuration</ejb-name>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>\n            <env-entry-type>java.lang.String</env-entry-type>\n            <env-entry-value>orange</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>\n            <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>\n            <env-entry-value>TRIANGLE</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/strategy</env-entry-name>\n            <env-entry-type>java.lang.Class</env-entry-type>\n            <env-entry-value>org.superbiz.injection.enventry.Widget</env-entry-value>\n          </env-entry>\n          <env-entry>\n            <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>\n            <env-entry-name>date</env-entry-name>\n            <env-entry-type>java.lang.Long</env-entry-type>\n            <env-entry-value>123456789</env-entry-value>\n          </env-entry>\n        </session>\n      </enterprise-beans>\n    </ejb-jar>\n\n\n### Using the @Resource 'name' attribute\n\nNote that `date` was referenced by `name` as:\n\n    @Resource(name = \"date\")\n    private long date;\n\nWhen the `@Resource(name)` is used, you do not need to specify the full class name of the bean and can do it briefly like so:\n\n      <env-entry>\n        <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>\n        <env-entry-name>date</env-entry-name>\n        <env-entry-type>java.lang.Long</env-entry-type>\n        <env-entry-value>123456789</env-entry-value>\n      </env-entry>\n\nConversly, `color` was not referenced by `name`\n\n    @Resource\n    private String color;\n\nWhen something is not referenced by `name` in the `@Resource` annotation a default name is created.  The format is essentially this:\n\n    bean.getClass() + \"/\" + field.getName()\n\nSo the default `name` of the above `color` property ends up being `org.superbiz.injection.enventry.Configuration/color`.  This is the name\nwe must use when we attempt to decalre a value for it in xml.\n\n      <env-entry>\n        <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>\n        <env-entry-type>java.lang.String</env-entry-type>\n        <env-entry-value>orange</env-entry-value>\n      </env-entry>\n\n### @Resource and Enum (Enumerations)\n\nThe `shape` field is actually a custom Java Enum type\n\n    package org.superbiz.injection.enventry;\n\n    public enum Shape {\n    \n        CIRCLE,\n        TRIANGLE,\n        SQUARE\n    }\n\nAs of Java EE 6, java.lang.Enum types are allowed as `<env-entry>` items.  Declaring one in xml is done using the actual enum's class name like so:\n\n          <env-entry>\n            <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>\n            <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>\n            <env-entry-value>TRIANGLE</env-entry-value>\n          </env-entry>\n\nDo not use `<env-entry-type>java.lang.Enum</env-entry-type>` or it will not work!\n\n## ConfigurationTest\n\n    package org.superbiz.injection.enventry;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.Date;\n    \n    public class ConfigurationTest extends TestCase {\n    \n    \n        public void test() throws Exception {\n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            final Configuration configuration = (Configuration) context.lookup(\"java:global/injection-of-env-entry/Configuration\");\n    \n            assertEquals(\"orange\", configuration.getColor());\n    \n            assertEquals(Shape.TRIANGLE, configuration.getShape());\n    \n            assertEquals(Widget.class, configuration.getStrategy());\n    \n            assertEquals(new Date(123456789), configuration.getDate());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.enventry.ConfigurationTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-env-entry\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-env-entry\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-env-entry/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-env-entry/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-env-entry\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean Configuration: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.enventry.ConfigurationTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-env-entry\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-env-entry\n    INFO - Jndi(name=\"java:global/injection-of-env-entry/Configuration!org.superbiz.injection.enventry.Configuration\")\n    INFO - Jndi(name=\"java:global/injection-of-env-entry/Configuration\")\n    INFO - Jndi(name=\"java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest!org.superbiz.injection.enventry.ConfigurationTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-env-entry)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.664 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-env-entry"
+      },
+      {
+        "name":"injection-of-entitymanager",
+        "readme":"Title: Injection Of Entitymanager\n\nThis example shows use of `@PersistenceContext` to have an `EntityManager` with an\n`EXTENDED` persistence context injected into a `@Stateful bean`. A JPA\n`@Entity` bean is used with the `EntityManager` to create, persist and merge\ndata to a database.\n\n## Creating the JPA Entity\n\nThe entity itself is simply a pojo annotated with `@Entity`.  We create one called `Movie` which we can use to hold movie records.\n\n    package org.superbiz.injection.jpa;\n\n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n\n        @Id @GeneratedValue\n        private long id;\n\n        private String director;\n        private String title;\n        private int year;\n\n        public Movie() {\n        }\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n\n        public String getDirector() {\n            return director;\n        }\n\n        public void setDirector(String director) {\n            this.director = director;\n        }\n\n        public String getTitle() {\n            return title;\n        }\n\n        public void setTitle(String title) {\n            this.title = title;\n        }\n\n        public int getYear() {\n            return year;\n        }\n\n        public void setYear(int year) {\n            this.year = year;\n        }\n    }\n\n## Configure the EntityManager via a persistence.xml file\n\nThe above `Movie` entity can be created, removed, updated or deleted via an `EntityManager` object.  The `EntityManager` itself is\nconfigured via a `META-INF/persistence.xml` file that is placed in the same jar as the `Movie` entity.\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n\n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.jpa.Movie</class>\n\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\nNotice that the `Movie` entity is listed via a `<class>` element.  This is not required, but can help when testing or when the\n`Movie` class is located in a different jar than the jar containing the `persistence.xml` file.\n\n## Injection via @PersistenceContext\n\nThe `EntityManager` itself is created by the container using the information in the `persistence.xml`, so to use it at\nruntime, we simply need to request it be injected into one of our components.  We do this via `@PersistenceContext`\n\nThe `@PersistenceContext` annotation can be used on any CDI bean, EJB, Servlet, Servlet Listener, Servlet Filter, or JSF ManagedBean.  If you don't use an EJB you will need to use a `UserTransaction` begin and commit transactions manually.  A transaction is required for any of the create, update or delete methods of the EntityManager to work.\n\n    package org.superbiz.injection.jpa;\n\n    import javax.ejb.Stateful;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\nThis particular `EntityManager` is injected as an `EXTENDED` persistence context, which simply means that the `EntityManager`\nis created when the `@Stateful` bean is created and destroyed when the `@Stateful` bean is destroyed.  Simply put, the\ndata in the `EntityManager` is cached for the lifetime of the `@Stateful` bean.\n\nThe use of `EXTENDED` persistence contexts is **only** available to `@Stateful` beans.  See the [JPA Concepts](../../jpa-concepts.html) page for an high level explanation of what a \"persistence context\" really is and how it is significant to JPA.\n\n## MoviesTest\n\nTesting JPA is quite easy, we can simply use the `EJBContainer` API to create a container in our test case.\n\n    package org.superbiz.injection.jpa;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            final Context context = EJBContainer.createEJBContainer(p).getContext();\n    \n            Movies movies = (Movies) context.lookup(\"java:global/injection-of-entitymanager/Movies\");\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n# Running\n\nWhen we run our test case we should see output similar to the following.\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.jpa.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-entitymanager\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-entitymanager\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-entitymanager/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-entitymanager/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-entitymanager\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.jpa.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-entitymanager\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-entitymanager\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 462ms\n    INFO - Jndi(name=\"java:global/injection-of-entitymanager/Movies!org.superbiz.injection.jpa.Movies\")\n    INFO - Jndi(name=\"java:global/injection-of-entitymanager/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest!org.superbiz.injection.jpa.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-entitymanager)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.301 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-entitymanager"
+      },
+      {
+        "name":"injection-of-datasource",
+        "readme":"Title: Injection Of Datasource\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection;\n    \n    /**\n     * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $\n     */\n    public class Movie {\n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection;\n    \n    import javax.annotation.PostConstruct;\n    import javax.annotation.Resource;\n    import javax.ejb.Stateful;\n    import javax.sql.DataSource;\n    import java.sql.Connection;\n    import java.sql.PreparedStatement;\n    import java.sql.ResultSet;\n    import java.util.ArrayList;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        /**\n         * The field name \"movieDatabase\" matches the DataSource we\n         * configure in the TestCase via :\n         * p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n         * <p/>\n         * This would also match an equivalent delcaration in an openejb.xml:\n         * <Resource id=\"movieDatabase\" type=\"DataSource\"/>\n         * <p/>\n         * If you'd like the freedom to change the field name without\n         * impact on your configuration you can set the \"name\" attribute\n         * of the @Resource annotation to \"movieDatabase\" instead.\n         */\n        @Resource\n        private DataSource movieDatabase;\n    \n        @PostConstruct\n        private void construct() throws Exception {\n            Connection connection = movieDatabase.getConnection();\n            try {\n                PreparedStatement stmt = connection.prepareStatement(\"CREATE TABLE movie ( director VARCHAR(255), title VARCHAR(255), year integer)\");\n                stmt.execute();\n            } finally {\n                connection.close();\n            }\n        }\n    \n        public void addMovie(Movie movie) throws Exception {\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"INSERT into movie (director, title, year) values (?, ?, ?)\");\n                sql.setString(1, movie.getDirector());\n                sql.setString(2, movie.getTitle());\n                sql.setInt(3, movie.getYear());\n                sql.execute();\n            } finally {\n                conn.close();\n            }\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"DELETE from movie where director = ? AND title = ? AND year = ?\");\n                sql.setString(1, movie.getDirector());\n                sql.setString(2, movie.getTitle());\n                sql.setInt(3, movie.getYear());\n                sql.execute();\n            } finally {\n                conn.close();\n            }\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            ArrayList<Movie> movies = new ArrayList<Movie>();\n            Connection conn = movieDatabase.getConnection();\n            try {\n                PreparedStatement sql = conn.prepareStatement(\"SELECT director, title, year from movie\");\n                ResultSet set = sql.executeQuery();\n                while (set.next()) {\n                    Movie movie = new Movie();\n                    movie.setDirector(set.getString(\"director\"));\n                    movie.setTitle(set.getString(\"title\"));\n                    movie.setYear(set.getInt(\"year\"));\n                    movies.add(movie);\n                }\n            } finally {\n                conn.close();\n            }\n            return movies;\n        }\n    }\n\n## MoviesTest\n\n    package org.superbiz.injection;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            Context context = EJBContainer.createEJBContainer(p).getContext();\n    \n            Movies movies = (Movies) context.lookup(\"java:global/injection-of-datasource/Movies\");\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-datasource\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-datasource\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-datasource/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-datasource/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-datasource\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.injection.Movies/movieDatabase' in bean Movies to Resource(id=movieDatabase)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-datasource\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-datasource\n    INFO - Jndi(name=\"java:global/injection-of-datasource/Movies!org.superbiz.injection.Movies\")\n    INFO - Jndi(name=\"java:global/injection-of-datasource/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1508028338/org.superbiz.injection.MoviesTest!org.superbiz.injection.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1508028338/org.superbiz.injection.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.MoviesTest, ejb-name=org.superbiz.injection.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.MoviesTest, ejb-name=org.superbiz.injection.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-datasource)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.276 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-datasource"
+      },
+      {
+        "name":"injection-of-ejbs",
+        "readme":"Title: Injection Of Ejbs\n\nThis example shows how to use the @EJB annotation on a bean class to refer to other beans.\n\nThis functionality is often referred as dependency injection (see\nhttp://www.martinfowler.com/articles/injection.html), and has been recently introduced in\nJava EE 5.\n\nIn this particular example, we will create two session stateless beans\n\n  * a DataStore session bean\n  * a DataReader session bean\n\nThe DataReader bean uses the DataStore to retrieve some informations, and\nwe will see how we can, inside the DataReader bean, get a reference to the\nDataStore bean using the @EJB annotation, thus avoiding the use of the\nJNDI API.\n\n## DataReader\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.Stateless;\n    \n    /**\n     * This is an EJB 3.1 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has 2 business interfaces: DataReaderRemote, a remote business\n     * interface, and DataReaderLocal, a local business interface\n     * <p/>\n     * The instance variables 'dataStoreRemote' is annotated with the @EJB annotation:\n     * this means that the application server, at runtime, will inject in this instance\n     * variable a reference to the EJB DataStoreRemote\n     * <p/>\n     * The instance variables 'dataStoreLocal' is annotated with the @EJB annotation:\n     * this means that the application server, at runtime, will inject in this instance\n     * variable a reference to the EJB DataStoreLocal\n     */\n    //START SNIPPET: code\n    @Stateless\n    public class DataReader {\n    \n        @EJB\n        private DataStoreRemote dataStoreRemote;\n        @EJB\n        private DataStoreLocal dataStoreLocal;\n        @EJB\n        private DataStore dataStore;\n    \n        public String readDataFromLocalStore() {\n            return \"LOCAL:\" + dataStoreLocal.getData();\n        }\n    \n        public String readDataFromLocalBeanStore() {\n            return \"LOCALBEAN:\" + dataStore.getData();\n        }\n    \n        public String readDataFromRemoteStore() {\n            return \"REMOTE:\" + dataStoreRemote.getData();\n        }\n    }\n\n## DataStore\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.LocalBean;\n    import javax.ejb.Stateless;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has 2 business interfaces: DataStoreRemote, a remote business\n     * interface, and DataStoreLocal, a local business interface\n     */\n    //START SNIPPET: code\n    @Stateless\n    @LocalBean\n    public class DataStore implements DataStoreLocal, DataStoreRemote {\n    \n        public String getData() {\n            return \"42\";\n        }\n    }\n\n## DataStoreLocal\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.Local;\n    \n    /**\n     * This is an EJB 3 local business interface\n     * A local business interface may be annotated with the @Local\n     * annotation, but it's optional. A business interface which is\n     * not annotated with @Local or @Remote is assumed to be Local\n     */\n    //START SNIPPET: code\n    @Local\n    public interface DataStoreLocal {\n    \n        public String getData();\n    }\n\n## DataStoreRemote\n\n    package org.superbiz.injection;\n    \n    import javax.ejb.Remote;\n    \n    /**\n     * This is an EJB 3 remote business interface\n     * A remote business interface must be annotated with the @Remote\n     * annotation\n     */\n    //START SNIPPET: code\n    @Remote\n    public interface DataStoreRemote {\n    \n        public String getData();\n    }\n\n## EjbDependencyTest\n\n    package org.superbiz.injection;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    /**\n     * A test case for DataReaderImpl ejb, testing both the remote and local interface\n     */\n    //START SNIPPET: code\n    public class EjbDependencyTest extends TestCase {\n    \n        public void test() throws Exception {\n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            DataReader dataReader = (DataReader) context.lookup(\"java:global/injection-of-ejbs/DataReader\");\n    \n            assertNotNull(dataReader);\n    \n            assertEquals(\"LOCAL:42\", dataReader.readDataFromLocalStore());\n            assertEquals(\"REMOTE:42\", dataReader.readDataFromRemoteStore());\n            assertEquals(\"LOCALBEAN:42\", dataReader.readDataFromLocalBeanStore());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.EjbDependencyTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/injection-of-ejbs\n    INFO - openejb.base = /Users/dblevins/examples/injection-of-ejbs\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-ejbs/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/injection-of-ejbs/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-ejbs\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean DataReader: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.EjbDependencyTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/injection-of-ejbs\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/injection-of-ejbs\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataReader!org.superbiz.injection.DataReader\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataReader\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStore\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreLocal\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreRemote\")\n    INFO - Jndi(name=\"java:global/injection-of-ejbs/DataStore\")\n    INFO - Jndi(name=\"java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest!org.superbiz.injection.EjbDependencyTest\")\n    INFO - Jndi(name=\"java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest\")\n    INFO - Created Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-ejbs)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.225 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/injection-of-ejbs"
+      },
+      {
+        "name":"lookup-of-ejbs",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs"
+      },
+      {
+        "name":"lookup-of-ejbs-with-descriptor",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs-with-descriptor"
+      }
+    ],
+    "on":[
+      {
+        "name":"rest-on-ejb",
+        "readme":"Title: REST on EJB\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## User\n\n    package org.superbiz.rest;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n    import javax.persistence.NamedQueries;\n    import javax.persistence.NamedQuery;\n    import javax.xml.bind.annotation.XmlRootElement;\n    \n    @Entity\n    @NamedQueries({\n            @NamedQuery(name = \"user.list\", query = \"select u from User u\")\n    }\n\n## UserService\n\n    package org.superbiz.rest;\n    \n    import javax.ejb.Lock;\n    import javax.ejb.LockType;\n    import javax.ejb.Singleton;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.ws.rs.DELETE;\n    import javax.ws.rs.DefaultValue;\n    import javax.ws.rs.GET;\n    import javax.ws.rs.POST;\n    import javax.ws.rs.PUT;\n    import javax.ws.rs.Path;\n    import javax.ws.rs.PathParam;\n    import javax.ws.rs.Produces;\n    import javax.ws.rs.QueryParam;\n    import javax.ws.rs.core.MediaType;\n    import javax.ws.rs.core.Response;\n    import java.util.ArrayList;\n    import java.util.List;\n    \n    /**\n     * Outputs are copied because of the enhancement of OpenJPA.\n     *\n     */\n    @Singleton\n    @Lock(LockType.WRITE)\n    @Path(\"/user\")\n    @Produces(MediaType.APPLICATION_XML)\n    public class UserService {\n        @PersistenceContext\n        private EntityManager em;\n    \n        @Path(\"/create\")\n        @PUT\n        public User create(@QueryParam(\"name\") String name,\n                           @QueryParam(\"pwd\") String pwd,\n                           @QueryParam(\"mail\") String mail) {\n            User user = new User();\n            user.setFullname(name);\n            user.setPassword(pwd);\n            user.setEmail(mail);\n            em.persist(user);\n            return user;\n        }\n    \n        @Path(\"/list\")\n        @GET\n        public List<User> list(@QueryParam(\"first\") @DefaultValue(\"0\") int first,\n                               @QueryParam(\"max\") @DefaultValue(\"20\") int max) {\n            List<User> users = new ArrayList<User>();\n            List<User> found = em.createNamedQuery(\"user.list\", User.class).setFirstResult(first).setMaxResults(max).getResultList();\n            for (User u : found) {\n                users.add(u.copy());\n            }\n            return users;\n        }\n    \n        @Path(\"/show/{id}\")\n        @GET\n        public User find(@PathParam(\"id\") long id) {\n            User user = em.find(User.class, id);\n            if (user == null) {\n                return null;\n            }\n            return user.copy();\n        }\n    \n        @Path(\"/delete/{id}\")\n        @DELETE\n        public void delete(@PathParam(\"id\") long id) {\n            User user = em.find(User.class, id);\n            if (user != null) {\n                em.remove(user);\n            }\n        }\n    \n        @Path(\"/update/{id}\")\n        @POST\n        public Response update(@PathParam(\"id\") long id,\n                               @QueryParam(\"name\") String name,\n                               @QueryParam(\"pwd\") String pwd,\n                               @QueryParam(\"mail\") String mail) {\n            User user = em.find(User.class, id);\n            if (user == null) {\n                throw new IllegalArgumentException(\"user id \" + id + \" not found\");\n            }\n    \n            user.setFullname(name);\n            user.setPassword(pwd);\n            user.setEmail(mail);\n            em.merge(user);\n    \n            return Response.ok(user.copy()).build();\n        }\n    }\n\n## persistence.xml\n\n    <persistence version=\"2.0\"\n                 xmlns=\"http://java.sun.com/xml/ns/persistence\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence\n                           http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">\n      <persistence-unit name=\"user\">\n        <jta-data-source>My DataSource</jta-data-source>\n        <non-jta-data-source>My Unmanaged DataSource</non-jta-data-source>\n        <class>org.superbiz.rest.User</class>\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## UserServiceTest\n\n    package org.superbiz.rest;\n    \n    import org.apache.cxf.jaxrs.client.WebClient;\n    import org.apache.openejb.OpenEjbContainer;\n    import org.junit.AfterClass;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.naming.NamingException;\n    import javax.ws.rs.core.Response;\n    import javax.xml.bind.JAXBContext;\n    import javax.xml.bind.Unmarshaller;\n    import java.io.InputStream;\n    import java.util.ArrayList;\n    import java.util.List;\n    import java.util.Properties;\n    \n    import static junit.framework.Assert.assertEquals;\n    import static junit.framework.Assert.assertNull;\n    import static junit.framework.Assert.fail;\n    \n    public class UserServiceTest {\n        private static Context context;\n        private static UserService service;\n        private static List<User> users = new ArrayList<User>();\n    \n        @BeforeClass\n        public static void start() throws NamingException {\n            Properties properties = new Properties();\n            properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, \"true\");\n            context = EJBContainer.createEJBContainer(properties).getContext();\n    \n            // create some records\n            service = (UserService) context.lookup(\"java:global/rest-on-ejb/UserService\");\n            users.add(service.create(\"foo\", \"foopwd\", \"foo@foo.com\"));\n            users.add(service.create(\"bar\", \"barpwd\", \"bar@bar.com\"));\n        }\n    \n        @AfterClass\n        public static void close() throws NamingException {\n            if (context != null) {\n                context.close();\n            }\n        }\n    \n        @Test\n        public void create() {\n            int expected = service.list(0, 100).size() + 1;\n            Response response = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/create\")\n                    .query(\"name\", \"dummy\")\n                    .query(\"pwd\", \"unbreakable\")\n                    .query(\"mail\", \"foo@bar.fr\")\n                    .put(null);\n            List<User> list = service.list(0, 100);\n            for (User u : list) {\n                if (!users.contains(u)) {\n                    service.delete(u.getId());\n                    return;\n                }\n            }\n            fail(\"user was not added\");\n        }\n    \n        @Test\n        public void delete() throws Exception {\n            User user = service.create(\"todelete\", \"dontforget\", \"delete@me.com\");\n    \n            WebClient.create(\"http://localhost:4204\").path(\"/user/delete/\" + user.getId()).delete();\n    \n            user = service.find(user.getId());\n            assertNull(user);\n        }\n    \n        @Test\n        public void show() {\n            User user = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/show/\" + users.iterator().next().getId())\n                    .get(User.class);\n            assertEquals(\"foo\", user.getFullname());\n            assertEquals(\"foopwd\", user.getPassword());\n            assertEquals(\"foo@foo.com\", user.getEmail());\n        }\n    \n        @Test\n        public void list() throws Exception {\n            String users = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/list\")\n                    .get(String.class);\n            assertEquals(\n                    \"<users>\" +\n                            \"<user>\" +\n                            \"<email>foo@foo.com</email>\" +\n                            \"<fullname>foo</fullname>\" +\n                            \"<id>1</id>\" +\n                            \"<password>foopwd</password>\" +\n                            \"</user>\" +\n                            \"<user>\" +\n                            \"<email>bar@bar.com</email>\" +\n                            \"<fullname>bar</fullname>\" +\n                            \"<id>2</id>\" +\n                            \"<password>barpwd</password>\" +\n                            \"</user>\" +\n                            \"</users>\", users);\n        }\n    \n        @Test\n        public void update() throws Exception {\n            User created = service.create(\"name\", \"pwd\", \"mail\");\n            Response response = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/update/\" + created.getId())\n                    .query(\"name\", \"corrected\")\n                    .query(\"pwd\", \"userpwd\")\n                    .query(\"mail\", \"it@is.ok\")\n                    .post(null);\n    \n            JAXBContext ctx = JAXBContext.newInstance(User.class);\n            Unmarshaller unmarshaller = ctx.createUnmarshaller();\n            User modified = (User) unmarshaller.unmarshal(InputStream.class.cast(response.getEntity()));\n    \n            assertEquals(\"corrected\", modified.getFullname());\n            assertEquals(\"userpwd\", modified.getPassword());\n            assertEquals(\"it@is.ok\", modified.getEmail());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.rest.UserServiceTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/rest-on-ejb\n    INFO - openejb.base = /Users/dblevins/examples/rest-on-ejb\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/rest-on-ejb/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/rest-on-ejb/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/rest-on-ejb\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean UserService: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.rest.UserServiceTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=user)\n    INFO - Configuring Service(id=Default JDBC Database, type=Resource, provider-id=Default JDBC Database)\n    INFO - Auto-creating a Resource with id 'Default JDBC Database' of type 'DataSource for 'user'.\n    INFO - Configuring Service(id=Default Unmanaged JDBC Database, type=Resource, provider-id=Default Unmanaged JDBC Database)\n    INFO - Auto-creating a Resource with id 'Default Unmanaged JDBC Database' of type 'DataSource for 'user'.\n    INFO - Adjusting PersistenceUnit user <jta-data-source> to Resource ID 'Default JDBC Database' from 'My DataSource'\n    INFO - Adjusting PersistenceUnit user <non-jta-data-source> to Resource ID 'Default Unmanaged JDBC Database' from 'My Unmanaged DataSource'\n    INFO - Enterprise application \"/Users/dblevins/examples/rest-on-ejb\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/rest-on-ejb\n    INFO - PersistenceUnit(name=user, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 407ms\n    INFO - Jndi(name=\"java:global/rest-on-ejb/UserService!org.superbiz.rest.UserService\")\n    INFO - Jndi(name=\"java:global/rest-on-ejb/UserService\")\n    INFO - Jndi(name=\"java:global/EjbModule1789767313/org.superbiz.rest.UserServiceTest!org.superbiz.rest.UserServiceTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1789767313/org.superbiz.rest.UserServiceTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.rest.UserServiceTest, ejb-name=org.superbiz.rest.UserServiceTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=UserService, ejb-name=UserService, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.rest.UserServiceTest, ejb-name=org.superbiz.rest.UserServiceTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=UserService, ejb-name=UserService, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/rest-on-ejb)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Creating ServerService(id=cxf-rs)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    WARN - Query \"select u from User u\" is removed from cache  excluded permanently. Query \"select u from User u\" is not cached because it uses pagination..\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.102 sec\n    \n    Results :\n    \n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-on-ejb"
+      }
+    ],
+    "parent":[
+      {
+        "name":"polling-parent",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/polling-parent"
+      }
+    ],
+    "password":[
+      {
+        "name":"datasource-ciphered-password",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/datasource-ciphered-password"
+      }
+    ],
+    "persistence":[
+      {
+        "name":"reload-persistence-unit-properties",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/reload-persistence-unit-properties"
+      },
+      {
+        "name":"persistence-fragment",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/persistence-fragment"
+      }
+    ],
+    "pojo":[
+      {
+        "name":"pojo-webservice",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/pojo-webservice"
+      }
+    ],
+    "polling":[
+      {
+        "name":"polling-parent",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/polling-parent"
+      }
+    ],
+    "postconstruct":[
+      {
+        "name":"async-postconstruct",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/async-postconstruct"
+      }
+    ],
+    "produces":[
+      {
+        "name":"cdi-produces-disposes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-produces-disposes"
+      },
+      {
+        "name":"cdi-produces-field",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-produces-field"
+      }
+    ],
+    "projectstage":[
+      {
+        "name":"projectstage-demo",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/projectstage-demo"
+      }
+    ],
+    "properties":[
+      {
+        "name":"reload-persistence-unit-properties",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/reload-persistence-unit-properties"
+      }
+    ],
+    "provider":[
+      {
+        "name":"multi-jpa-provider-testing",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multi-jpa-provider-testing"
+      }
+    ],
+    "proxy":[
+      {
+        "name":"spring-data-proxy",
+        "readme":"# Spring Data sample #\n\nThis example uses OpenEJB hooks to replace an EJB implementation by a proxy\nto uses Spring Data in your preferred container.\n\nIt is pretty simple: simply provide to OpenEJB an InvocationHandler using delegating to spring data\nand that's it!\n\nIt is what is done in org.superbiz.dynamic.SpringDataProxy.\n\nIt contains a little trick: even if it is not annotated \"implementingInterfaceClass\" attribute\nis injected by OpenEJB to get the interface.\n\nThen we simply create the Spring Data repository and delegate to it.\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/spring-data-proxy"
+      },
+      {
+        "name":"spring-data-proxy-meta",
+        "readme":"# Spring Data With Meta sample #\n\nThis example simply simplifies the usage of spring-data sample\nproviding a meta annotation @SpringRepository to do all the dynamic procy EJB job.\n\nIt replaces @Proxy and @Stateless annotations.\n\nIsn't it more comfortable?\n\nTo do it we defined a meta annotation \"Metatype\" and used it.\n\nThe proxy implementation is the same than for spring-data sample.\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/spring-data-proxy-meta"
+      },
+      {
+        "name":"dynamic-proxy-to-access-mbean",
+        "readme":"Title: dynamic-proxy-to-access-mbean\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Example\n\nAcessing MBean is something simple through the JMX API but it is often technical and not very interesting.\n\nThis example simplify this work simply doing it generically in a proxy.\n\nSo from an user side you simple declare an interface to access your MBeans.\n\nNote: the example implementation uses a local MBeanServer but enhancing the example API\nit is easy to imagine a remote connection with user/password if needed.\n\n## ObjectName API (annotation)\n\nSimply an annotation to get the object\n\n    package org.superbiz.dynamic.mbean;\n\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.Target;\n\n    import static java.lang.annotation.ElementType.TYPE;\n    import static java.lang.annotation.ElementType.METHOD;\n    import static java.lang.annotation.RetentionPolicy.RUNTIME;\n\n    @Target({TYPE, METHOD})\n    @Retention(RUNTIME)\n    public @interface ObjectName {\n        String value();\n\n        // for remote usage only\n        String url() default \"\";\n        String user() default \"\";\n        String password() default \"\";\n    }\n\n## DynamicMBeanHandler (thr proxy implementation)\n\n    package org.superbiz.dynamic.mbean;\n\n    import javax.annotation.PreDestroy;\n    import javax.management.Attribute;\n    import javax.management.MBeanAttributeInfo;\n    import javax.management.MBeanInfo;\n    import javax.management.MBeanServer;\n    import javax.management.MBeanServerConnection;\n    import javax.management.ObjectName;\n    import javax.management.remote.JMXConnector;\n    import javax.management.remote.JMXConnectorFactory;\n    import javax.management.remote.JMXServiceURL;\n    import java.io.IOException;\n    import java.lang.management.ManagementFactory;\n    import java.lang.reflect.InvocationHandler;\n    import java.lang.reflect.Method;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.concurrent.ConcurrentHashMap;\n\n    /**\n     * Need a @PreDestroy method to disconnect the remote host when used in remote mode.\n     */\n    public class DynamicMBeanHandler implements InvocationHandler {\n        private final Map<Method, ConnectionInfo> infos = new ConcurrentHashMap<Method, ConnectionInfo>();\n\n        @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\n            final String methodName = method.getName();\n            if (method.getDeclaringClass().equals(Object.class) && \"toString\".equals(methodName)) {\n                return getClass().getSimpleName() + \" Proxy\";\n            }\n            if (method.getAnnotation(PreDestroy.class) != null) {\n                return destroy();\n            }\n\n            final ConnectionInfo info = getConnectionInfo(method);\n            final MBeanInfo infos = info.getMBeanInfo();\n            if (methodName.startsWith(\"set\") && methodName.length() > 3 && args != null && args.length == 1\n                && (Void.TYPE.equals(method.getReturnType()) || Void.class.equals(method.getReturnType()))) {\n                final String attributeName = attributeName(infos, methodName, method.getParameterTypes()[0]);\n                info.setAttribute(new Attribute(attributeName, args[0]));\n                return null;\n            } else if (methodName.startsWith(\"get\") && (args == null || args.length == 0) && methodName.length() > 3) {\n                final String attributeName = attributeName(infos, methodName, method.getReturnType());\n                return info.getAttribute(attributeName);\n            }\n            // operation\n            return info.invoke(methodName, args, getSignature(method));\n        }\n\n        public Object destroy() {\n            for (ConnectionInfo info : infos.values()) {\n                info.clean();\n            }\n            infos.clear();\n            return null;\n        }\n\n        private String[] getSignature(Method method) {\n            String[] args = new String[method.getParameterTypes().length];\n            for (int i = 0; i < method.getParameterTypes().length; i++) {\n                args[i] = method.getParameterTypes()[i].getName();\n            }\n            return args; // note: null should often work...\n        }\n\n        private String attributeName(MBeanInfo infos, String methodName, Class<?> type) {\n            String found = null;\n            String foundBackUp = null; // without checking the type\n            final String attributeName = methodName.substring(3, methodName.length());\n            final String lowerName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4, methodName.length());\n\n            for (MBeanAttributeInfo attribute : infos.getAttributes()) {\n                final String name = attribute.getName();\n                if (attributeName.equals(name)) {\n                    foundBackUp = attributeName;\n                    if (attribute.getType().equals(type.getName())) {\n                        found = name;\n                    }\n                } else if (found == null && ((lowerName.equals(name) && !attributeName.equals(name))\n                    || lowerName.equalsIgnoreCase(name))) {\n                    foundBackUp = name;\n                    if (attribute.getType().equals(type.getName())) {\n                        found = name;\n                    }\n                }\n            }\n\n            if (found == null && foundBackUp == null) {\n                throw new UnsupportedOperationException(\"cannot find attribute \" + attributeName);\n            }\n\n            if (found != null) {\n                return found;\n            }\n            return foundBackUp;\n        }\n\n        private synchronized ConnectionInfo getConnectionInfo(Method method) throws Exception {\n            if (!infos.containsKey(method)) {\n                synchronized (infos) {\n                    if (!infos.containsKey(method)) { // double check for synchro\n                        org.superbiz.dynamic.mbean.ObjectName on = method.getAnnotation(org.superbiz.dynamic.mbean.ObjectName.class);\n                        if (on == null) {\n                            Class<?> current = method.getDeclaringClass();\n                            do {\n                                on = method.getDeclaringClass().getAnnotation(org.superbiz.dynamic.mbean.ObjectName.class);\n                                current = current.getSuperclass();\n                            } while (on == null && current != null);\n                            if (on == null) {\n                                throw new UnsupportedOperationException(\"class or method should define the objectName to use for invocation: \" + method.toGenericString());\n                            }\n                        }\n                        final ConnectionInfo info;\n                        if (on.url().isEmpty()) {\n                            info = new LocalConnectionInfo();\n                            ((LocalConnectionInfo) info).server = ManagementFactory.getPlatformMBeanServer(); // could use an id...\n                        } else {\n                            info = new RemoteConnectionInfo();\n                            final Map<String, String[]> environment = new HashMap<String, String[]>();\n                            if (!on.user().isEmpty()) {\n                                environment.put(JMXConnector.CREDENTIALS, new String[]{ on.user(), on.password() });\n                            }\n                            // ((RemoteConnectionInfo) info).connector = JMXConnectorFactory.newJMXConnector(new JMXServiceURL(on.url()), environment);\n                            ((RemoteConnectionInfo) info).connector = JMXConnectorFactory.connect(new JMXServiceURL(on.url()), environment);\n\n                        }\n                        info.objectName = new ObjectName(on.value());\n\n                        infos.put(method, info);\n                    }\n                }\n            }\n            return infos.get(method);\n        }\n\n        private abstract static class ConnectionInfo {\n            protected ObjectName objectName;\n\n            public abstract void setAttribute(Attribute attribute) throws Exception;\n            public abstract Object getAttribute(String attribute) throws Exception;\n            public abstract Object invoke(String operationName, Object params[], String signature[]) throws Exception;\n            public abstract MBeanInfo getMBeanInfo() throws Exception;\n            public abstract void clean();\n        }\n\n        private static class LocalConnectionInfo extends ConnectionInfo {\n            private MBeanServer server;\n\n            @Override public void setAttribute(Attribute attribute) throws Exception {\n                server.setAttribute(objectName, attribute);\n            }\n\n            @Override public Object getAttribute(String attribute) throws Exception {\n                return server.getAttribute(objectName, attribute);\n            }\n\n            @Override\n            public Object invoke(String operationName, Object[] params, String[] signature) throws Exception {\n                return server.invoke(objectName, operationName, params, signature);\n            }\n\n            @Override public MBeanInfo getMBeanInfo() throws Exception {\n                return server.getMBeanInfo(objectName);\n            }\n\n            @Override public void clean() {\n                // no-op\n            }\n        }\n\n        private static class RemoteConnectionInfo extends ConnectionInfo {\n            private JMXConnector connector;\n            private MBeanServerConnection connection;\n\n            private void before() throws IOException {\n                connection = connector.getMBeanServerConnection();\n            }\n\n            private void after() throws IOException {\n                // no-op\n            }\n\n            @Override public void setAttribute(Attribute attribute) throws Exception {\n                before();\n                connection.setAttribute(objectName, attribute);\n                after();\n            }\n\n            @Override public Object getAttribute(String attribute) throws Exception {\n                before();\n                try {\n                    return connection.getAttribute(objectName, attribute);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override\n            public Object invoke(String operationName, Object[] params, String[] signature) throws Exception {\n                before();\n                try {\n                    return connection.invoke(objectName, operationName, params, signature);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override public MBeanInfo getMBeanInfo() throws Exception {\n                before();\n                try {\n                    return connection.getMBeanInfo(objectName);\n                } finally {\n                    after();\n                }\n            }\n\n            @Override public void clean() {\n                try {\n                    connector.close();\n                } catch (IOException e) {\n                    // no-op\n                }\n            }\n        }\n    }\n\n## Dynamic Proxies    \n\n### DynamicMBeanClient (the dynamic JMX client)\n\n\tpackage org.superbiz.dynamic.mbean;\n\n\timport org.apache.openejb.api.Proxy;\n\timport org.superbiz.dynamic.mbean.DynamicMBeanHandler;\n\timport org.superbiz.dynamic.mbean.ObjectName;\n\n\timport javax.ejb.Singleton;\n\n\t/**\n\t * @author rmannibucau\n\t */\n\t@Singleton\n\t@Proxy(DynamicMBeanHandler.class)\n\t@ObjectName(DynamicMBeanClient.OBJECT_NAME)\n\tpublic interface DynamicMBeanClient {\n\t\tstatic final String OBJECT_NAME = \"test:group=DynamicMBeanClientTest\";\n\n\t\tint getCounter();\n\t\tvoid setCounter(int i);\n\t\tint length(String aString);\n\t}\n\n### DynamicMBeanClient (the dynamic JMX client)\n    package org.superbiz.dynamic.mbean;\n\n    import org.apache.openejb.api.Proxy;\n\n    import javax.annotation.PreDestroy;\n    import javax.ejb.Singleton;\n\n\n    @Singleton\n    @Proxy(DynamicMBeanHandler.class)\n    @ObjectName(value = DynamicRemoteMBeanClient.OBJECT_NAME, url = \"service:jmx:rmi:///jndi/rmi://localhost:8243/jmxrmi\")\n    public interface DynamicRemoteMBeanClient {\n        static final String OBJECT_NAME = \"test:group=DynamicMBeanClientTest\";\n\n        int getCounter();\n        void setCounter(int i);\n        int length(String aString);\n\n        @PreDestroy void clean();\n    }\n\n## The MBean used for the test\n\n### SimpleMBean\n\n\tpackage org.superbiz.dynamic.mbean.simple;\n\n\tpublic interface SimpleMBean {\n\t\tint length(String s);\n\n\t\tint getCounter();\n\t\tvoid setCounter(int c);\n\t}\n\n## Simple\n\n\tpackage org.superbiz.dynamic.mbean.simple;\n\n\tpublic class Simple implements SimpleMBean {\n\t\tprivate int counter = 0;\n\n\t\t@Override public int length(String s) {\n\t\t    if (s == null) {\n\t\t        return 0;\n\t\t    }\n\t\t    return s.length();\n\t\t}\n\n\t\t@Override public int getCounter() {\n\t\t    return counter;\n\t\t}\n\n\t\t@Override public void setCounter(int c) {\n\t\t    counter = c;\n\t\t}\n\t}\n\n## DynamicMBeanClientTest (The test)\n\n    package org.superbiz.dynamic.mbean;\n\n    import org.junit.After;\n    import org.junit.AfterClass;\n    import org.junit.Before;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    import org.superbiz.dynamic.mbean.simple.Simple;\n\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.management.Attribute;\n    import javax.management.ObjectName;\n    import java.lang.management.ManagementFactory;\n\n    import static junit.framework.Assert.assertEquals;\n\n    public class DynamicMBeanClientTest {\n        private static ObjectName objectName;\n        private static EJBContainer container;\n\n        @EJB private DynamicMBeanClient localClient;\n        @EJB private DynamicRemoteMBeanClient remoteClient;\n\n        @BeforeClass public static void start() {\n            container = EJBContainer.createEJBContainer();\n        }\n\n        @Before public void injectAndRegisterMBean() throws Exception {\n            container.getContext().bind(\"inject\", this);\n            objectName = new ObjectName(DynamicMBeanClient.OBJECT_NAME);\n            ManagementFactory.getPlatformMBeanServer().registerMBean(new Simple(), objectName);\n        }\n\n        @After public void unregisterMBean() throws Exception {\n            if (objectName != null) {\n                ManagementFactory.getPlatformMBeanServer().unregisterMBean(objectName);\n            }\n        }\n\n        @Test public void localGet() throws Exception {\n            assertEquals(0, localClient.getCounter());\n            ManagementFactory.getPlatformMBeanServer().setAttribute(objectName, new Attribute(\"Counter\", 5));\n            assertEquals(5, localClient.getCounter());\n        }\n\n        @Test public void localSet() throws Exception {\n            assertEquals(0, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n            localClient.setCounter(8);\n            assertEquals(8, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n        }\n\n        @Test public void localOperation() {\n            assertEquals(7, localClient.length(\"openejb\"));\n        }\n\n        @Test public void remoteGet() throws Exception {\n            assertEquals(0, remoteClient.getCounter());\n            ManagementFactory.getPlatformMBeanServer().setAttribute(objectName, new Attribute(\"Counter\", 5));\n            assertEquals(5, remoteClient.getCounter());\n        }\n\n        @Test public void remoteSet() throws Exception {\n            assertEquals(0, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n            remoteClient.setCounter(8);\n            assertEquals(8, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, \"Counter\")).intValue());\n        }\n\n        @Test public void remoteOperation() {\n            assertEquals(7, remoteClient.length(\"openejb\"));\n        }\n\n        @AfterClass public static void close() {\n            if (container != null) {\n                container.close();\n            }\n        }\n    }\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-proxy-to-access-mbean"
+      }
+    ],
+    "quartz":[
+      {
+        "name":"quartz-app",
+        "readme":"Title: Quartz Resource Adapter usage\n\nNote this example is somewhat dated.  It predates the schedule API which was added to EJB 3.1.  Modern applications should use the schedule API which has many, if not all,\nthe same features as Quartz.  In fact, Quartz is the engine that drives the `@Schedule` and `ScheduleExpression` support in OpenEJB and TomEE.\n\nDespite being dated from a scheduling perspective it is still an excellent reference for how to plug-in and test a custom Java EE Resource Adapter.\n\n# Project structure\n\nAs `.rar` files do not do well on a standard classpath structure the goal is to effectively \"unwrap\" the `.rar` so that its dependencies are on the classpath and its `ra.xml` file\ncan be found in scanned by OpenEJB.\n\nWe do this by creating a mini maven module to represent the rar in maven terms.  The `pom.xml` of the \"rar module\" declares all of the jars that would be inside `.rar` as maven\ndependencies.  The `ra.xml` file is added to the project in `src/main/resources/META-INF/ra.xml` where it will be visible to other modules.\n\n    quartz-app\n    quartz-app/pom.xml\n    quartz-app/quartz-beans\n    quartz-app/quartz-beans/pom.xml\n    quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobBean.java\n    quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobScheduler.java\n    quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/QuartzMdb.java\n    quartz-app/quartz-beans/src/main/resources/META-INF\n    quartz-app/quartz-beans/src/main/resources/META-INF/ejb-jar.xml\n    quartz-app/quartz-beans/src/test/java/org/superbiz/quartz/QuartzMdbTest.java\n    quartz-app/quartz-ra\n    quartz-app/quartz-ra/pom.xml\n    quartz-app/quartz-ra/src/main/resources/META-INF\n    quartz-app/quartz-ra/src/main/resources/META-INF/ra.xml\n\n## ra.xml\n\nThe connector in question has both inbound and outbound Resource Adapters.  The inbound Resource Adapter can be used to drive message driven beans (MDBs)\n\nthe outbound Resource Adapter, `QuartzResourceAdapter`, can be injected into any component via `@Resource` and used to originate and send messages or events.\n\n    <connector xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\n               http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd\"\n               version=\"1.5\">\n\n      <description>Quartz ResourceAdapter</description>\n      <display-name>Quartz ResourceAdapter</display-name>\n\n      <vendor-name>OpenEJB</vendor-name>\n      <eis-type>Quartz Adapter</eis-type>\n      <resourceadapter-version>1.0</resourceadapter-version>\n\n      <resourceadapter id=\"QuartzResourceAdapter\">\n        <resourceadapter-class>org.apache.openejb.resource.quartz.QuartzResourceAdapter</resourceadapter-class>\n\n        <inbound-resourceadapter>\n          <messageadapter>\n            <messagelistener>\n              <messagelistener-type>org.quartz.Job</messagelistener-type>\n              <activationspec>\n                <activationspec-class>org.apache.openejb.resource.quartz.JobSpec</activationspec-class>\n              </activationspec>\n            </messagelistener>\n          </messageadapter>\n        </inbound-resourceadapter>\n\n      </resourceadapter>\n    </connector>\n\n\n# Using the Outbound Resource Adapter\n\nHere we see the outbound resource adapter used in a stateless session bean to schedule a job that will be executed by the MDB\n\n    package org.superbiz.quartz;\n\n    import org.apache.openejb.resource.quartz.QuartzResourceAdapter;\n    import org.quartz.Job;\n    import org.quartz.JobDetail;\n    import org.quartz.JobExecutionContext;\n    import org.quartz.JobExecutionException;\n    import org.quartz.Scheduler;\n    import org.quartz.SimpleTrigger;\n\n    import javax.ejb.Stateless;\n    import javax.naming.InitialContext;\n    import java.util.Date;\n\n    @Stateless\n    public class JobBean implements JobScheduler {\n\n        @Override\n        public Date createJob() throws Exception {\n\n            final QuartzResourceAdapter ra = (QuartzResourceAdapter) new InitialContext().lookup(\"java:openejb/Resource/QuartzResourceAdapter\");\n            final Scheduler s = ra.getScheduler();\n\n            //Add a job type\n            final JobDetail jd = new JobDetail(\"job1\", \"group1\", JobBean.MyTestJob.class);\n            jd.getJobDataMap().put(\"MyJobKey\", \"MyJobValue\");\n\n            //Schedule my 'test' job to run now\n            final SimpleTrigger trigger = new SimpleTrigger(\"trigger1\", \"group1\", new Date());\n            return s.scheduleJob(jd, trigger);\n        }\n\n        public static class MyTestJob implements Job {\n\n            @Override\n            public void execute(JobExecutionContext context) throws JobExecutionException {\n                System.out.println(\"This is a simple test job to get: \" + context.getJobDetail().getJobDataMap().get(\"MyJobKey\"));\n            }\n        }\n    }\n\n# Recieving data from the Inbound Resource Adapter\n\n\n    package org.superbiz.quartz;\n\n    import org.quartz.Job;\n    import org.quartz.JobExecutionContext;\n    import org.quartz.JobExecutionException;\n\n    import javax.ejb.ActivationConfigProperty;\n    import javax.ejb.MessageDriven;\n\n    @MessageDriven(activationConfig = {\n            @ActivationConfigProperty(propertyName = \"cronExpression\", propertyValue = \"* * * * * ?\")})\n    public class QuartzMdb implements Job {\n\n        @Override\n        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {\n            System.out.println(\"Executing Job\");\n        }\n    }\n\n# Test case\n\n    package org.superbiz.quartz;\n\n    import org.junit.AfterClass;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n\n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import java.util.Date;\n    import java.util.Properties;\n\n    public class QuartzMdbTest {\n\n        private static InitialContext initialContext = null;\n\n        @BeforeClass\n        public static void beforeClass() throws Exception {\n\n            if (null == initialContext) {\n                Properties properties = new Properties();\n                properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n\n                initialContext = new InitialContext(properties);\n            }\n        }\n\n        @AfterClass\n        public static void afterClass() throws Exception {\n            if (null != initialContext) {\n                initialContext.close();\n                initialContext = null;\n            }\n        }\n\n        @Test\n        public void testLookup() throws Exception {\n\n            final JobScheduler jbi = (JobScheduler) initialContext.lookup(\"JobBeanLocal\");\n            final Date d = jbi.createJob();\n            Thread.sleep(500);\n            System.out.println(\"Scheduled test job should have run at: \" + d.toString());\n        }\n\n        @Test\n        public void testMdb() throws Exception {\n            // Sleep 3 seconds and give quartz a chance to execute our MDB\n            Thread.sleep(3000);\n        }\n    }\n\n# Running\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.quartz.QuartzMdbTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/quartz-app/quartz-beans\n    INFO - openejb.base = /Users/dblevins/examples/quartz-app/quartz-beans\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found ConnectorModule in classpath: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/quartz-app/quartz-beans/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar\n    INFO - Extracting jar: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar\n    INFO - Extracted path: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0\n    INFO - Beginning load: /Users/dblevins/examples/quartz-app/quartz-beans/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean JobBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=QuartzResourceAdapter, type=Resource, provider-id=QuartzResourceAdapter)\n    INFO - Configuring Service(id=quartz-ra-1.0, type=Container, provider-id=Default MDB Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear\n    INFO - Jndi(name=JobBeanLocal) --> Ejb(deployment-id=JobBean)\n    INFO - Jndi(name=global/classpath.ear/quartz-beans/JobBean!org.superbiz.quartz.JobScheduler) --> Ejb(deployment-id=JobBean)\n    INFO - Jndi(name=global/classpath.ear/quartz-beans/JobBean) --> Ejb(deployment-id=JobBean)\n    INFO - Created Ejb(deployment-id=JobBean, ejb-name=JobBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=QuartzMdb, ejb-name=QuartzMdb, container=quartz-ra-1.0)\n    Executing Job\n    INFO - Started Ejb(deployment-id=JobBean, ejb-name=JobBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=QuartzMdb, ejb-name=QuartzMdb, container=quartz-ra-1.0)\n    INFO - Deployed Application(path=/Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear)\n    This is a simple test job to get: MyJobValue\n    Scheduled test job should have run at: Fri Oct 28 17:05:12 PDT 2011\n    Executing Job\n    Executing Job\n    Executing Job\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.971 sec\n\n    Results :\n\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/quartz-app"
+      }
+    ],
+    "realm":[
+      {
+        "name":"cdi-realm",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-realm"
+      },
+      {
+        "name":"realm-in-tomee",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/realm-in-tomee"
+      }
+    ],
+    "redeployment":[
+      {
+        "name":"bval-evaluation-redeployment",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/bval-evaluation-redeployment"
+      }
+    ],
+    "registration":[
+      {
+        "name":"mbean-auto-registration",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/mbean-auto-registration"
+      }
+    ],
+    "reload":[
+      {
+        "name":"reload-persistence-unit-properties",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/reload-persistence-unit-properties"
+      }
+    ],
+    "request":[
+      {
+        "name":"cdi-request-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-request-scope"
+      }
+    ],
+    "resource":[
+      {
+        "name":"client-resource-lookup-preview",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/client-resource-lookup-preview"
+      }
+    ],
+    "resources":[
+      {
+        "name":"resources-jmx-example",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/resources-jmx-example"
+      },
+      {
+        "name":"webservice-ws-with-resources-config",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-ws-with-resources-config"
+      },
+      {
+        "name":"resources-declared-in-webapp",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/resources-declared-in-webapp"
+      }
+    ],
+    "rest":[
+      {
+        "name":"rest-on-ejb",
+        "readme":"Title: REST on EJB\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## User\n\n    package org.superbiz.rest;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n    import javax.persistence.NamedQueries;\n    import javax.persistence.NamedQuery;\n    import javax.xml.bind.annotation.XmlRootElement;\n    \n    @Entity\n    @NamedQueries({\n            @NamedQuery(name = \"user.list\", query = \"select u from User u\")\n    }\n\n## UserService\n\n    package org.superbiz.rest;\n    \n    import javax.ejb.Lock;\n    import javax.ejb.LockType;\n    import javax.ejb.Singleton;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.ws.rs.DELETE;\n    import javax.ws.rs.DefaultValue;\n    import javax.ws.rs.GET;\n    import javax.ws.rs.POST;\n    import javax.ws.rs.PUT;\n    import javax.ws.rs.Path;\n    import javax.ws.rs.PathParam;\n    import javax.ws.rs.Produces;\n    import javax.ws.rs.QueryParam;\n    import javax.ws.rs.core.MediaType;\n    import javax.ws.rs.core.Response;\n    import java.util.ArrayList;\n    import java.util.List;\n    \n    /**\n     * Outputs are copied because of the enhancement of OpenJPA.\n     *\n     */\n    @Singleton\n    @Lock(LockType.WRITE)\n    @Path(\"/user\")\n    @Produces(MediaType.APPLICATION_XML)\n    public class UserService {\n        @PersistenceContext\n        private EntityManager em;\n    \n        @Path(\"/create\")\n        @PUT\n        public User create(@QueryParam(\"name\") String name,\n                           @QueryParam(\"pwd\") String pwd,\n                           @QueryParam(\"mail\") String mail) {\n            User user = new User();\n            user.setFullname(name);\n            user.setPassword(pwd);\n            user.setEmail(mail);\n            em.persist(user);\n            return user;\n        }\n    \n        @Path(\"/list\")\n        @GET\n        public List<User> list(@QueryParam(\"first\") @DefaultValue(\"0\") int first,\n                               @QueryParam(\"max\") @DefaultValue(\"20\") int max) {\n            List<User> users = new ArrayList<User>();\n            List<User> found = em.createNamedQuery(\"user.list\", User.class).setFirstResult(first).setMaxResults(max).getResultList();\n            for (User u : found) {\n                users.add(u.copy());\n            }\n            return users;\n        }\n    \n        @Path(\"/show/{id}\")\n        @GET\n        public User find(@PathParam(\"id\") long id) {\n            User user = em.find(User.class, id);\n            if (user == null) {\n                return null;\n            }\n            return user.copy();\n        }\n    \n        @Path(\"/delete/{id}\")\n        @DELETE\n        public void delete(@PathParam(\"id\") long id) {\n            User user = em.find(User.class, id);\n            if (user != null) {\n                em.remove(user);\n            }\n        }\n    \n        @Path(\"/update/{id}\")\n        @POST\n        public Response update(@PathParam(\"id\") long id,\n                               @QueryParam(\"name\") String name,\n                               @QueryParam(\"pwd\") String pwd,\n                               @QueryParam(\"mail\") String mail) {\n            User user = em.find(User.class, id);\n            if (user == null) {\n                throw new IllegalArgumentException(\"user id \" + id + \" not found\");\n            }\n    \n            user.setFullname(name);\n            user.setPassword(pwd);\n            user.setEmail(mail);\n            em.merge(user);\n    \n            return Response.ok(user.copy()).build();\n        }\n    }\n\n## persistence.xml\n\n    <persistence version=\"2.0\"\n                 xmlns=\"http://java.sun.com/xml/ns/persistence\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence\n                           http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">\n      <persistence-unit name=\"user\">\n        <jta-data-source>My DataSource</jta-data-source>\n        <non-jta-data-source>My Unmanaged DataSource</non-jta-data-source>\n        <class>org.superbiz.rest.User</class>\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## UserServiceTest\n\n    package org.superbiz.rest;\n    \n    import org.apache.cxf.jaxrs.client.WebClient;\n    import org.apache.openejb.OpenEjbContainer;\n    import org.junit.AfterClass;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.naming.NamingException;\n    import javax.ws.rs.core.Response;\n    import javax.xml.bind.JAXBContext;\n    import javax.xml.bind.Unmarshaller;\n    import java.io.InputStream;\n    import java.util.ArrayList;\n    import java.util.List;\n    import java.util.Properties;\n    \n    import static junit.framework.Assert.assertEquals;\n    import static junit.framework.Assert.assertNull;\n    import static junit.framework.Assert.fail;\n    \n    public class UserServiceTest {\n        private static Context context;\n        private static UserService service;\n        private static List<User> users = new ArrayList<User>();\n    \n        @BeforeClass\n        public static void start() throws NamingException {\n            Properties properties = new Properties();\n            properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, \"true\");\n            context = EJBContainer.createEJBContainer(properties).getContext();\n    \n            // create some records\n            service = (UserService) context.lookup(\"java:global/rest-on-ejb/UserService\");\n            users.add(service.create(\"foo\", \"foopwd\", \"foo@foo.com\"));\n            users.add(service.create(\"bar\", \"barpwd\", \"bar@bar.com\"));\n        }\n    \n        @AfterClass\n        public static void close() throws NamingException {\n            if (context != null) {\n                context.close();\n            }\n        }\n    \n        @Test\n        public void create() {\n            int expected = service.list(0, 100).size() + 1;\n            Response response = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/create\")\n                    .query(\"name\", \"dummy\")\n                    .query(\"pwd\", \"unbreakable\")\n                    .query(\"mail\", \"foo@bar.fr\")\n                    .put(null);\n            List<User> list = service.list(0, 100);\n            for (User u : list) {\n                if (!users.contains(u)) {\n                    service.delete(u.getId());\n                    return;\n                }\n            }\n            fail(\"user was not added\");\n        }\n    \n        @Test\n        public void delete() throws Exception {\n            User user = service.create(\"todelete\", \"dontforget\", \"delete@me.com\");\n    \n            WebClient.create(\"http://localhost:4204\").path(\"/user/delete/\" + user.getId()).delete();\n    \n            user = service.find(user.getId());\n            assertNull(user);\n        }\n    \n        @Test\n        public void show() {\n            User user = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/show/\" + users.iterator().next().getId())\n                    .get(User.class);\n            assertEquals(\"foo\", user.getFullname());\n            assertEquals(\"foopwd\", user.getPassword());\n            assertEquals(\"foo@foo.com\", user.getEmail());\n        }\n    \n        @Test\n        public void list() throws Exception {\n            String users = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/list\")\n                    .get(String.class);\n            assertEquals(\n                    \"<users>\" +\n                            \"<user>\" +\n                            \"<email>foo@foo.com</email>\" +\n                            \"<fullname>foo</fullname>\" +\n                            \"<id>1</id>\" +\n                            \"<password>foopwd</password>\" +\n                            \"</user>\" +\n                            \"<user>\" +\n                            \"<email>bar@bar.com</email>\" +\n                            \"<fullname>bar</fullname>\" +\n                            \"<id>2</id>\" +\n                            \"<password>barpwd</password>\" +\n                            \"</user>\" +\n                            \"</users>\", users);\n        }\n    \n        @Test\n        public void update() throws Exception {\n            User created = service.create(\"name\", \"pwd\", \"mail\");\n            Response response = WebClient.create(\"http://localhost:4204\")\n                    .path(\"/user/update/\" + created.getId())\n                    .query(\"name\", \"corrected\")\n                    .query(\"pwd\", \"userpwd\")\n                    .query(\"mail\", \"it@is.ok\")\n                    .post(null);\n    \n            JAXBContext ctx = JAXBContext.newInstance(User.class);\n            Unmarshaller unmarshaller = ctx.createUnmarshaller();\n            User modified = (User) unmarshaller.unmarshal(InputStream.class.cast(response.getEntity()));\n    \n            assertEquals(\"corrected\", modified.getFullname());\n            assertEquals(\"userpwd\", modified.getPassword());\n            assertEquals(\"it@is.ok\", modified.getEmail());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.rest.UserServiceTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/rest-on-ejb\n    INFO - openejb.base = /Users/dblevins/examples/rest-on-ejb\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/rest-on-ejb/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/rest-on-ejb/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/rest-on-ejb\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean UserService: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.rest.UserServiceTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=user)\n    INFO - Configuring Service(id=Default JDBC Database, type=Resource, provider-id=Default JDBC Database)\n    INFO - Auto-creating a Resource with id 'Default JDBC Database' of type 'DataSource for 'user'.\n    INFO - Configuring Service(id=Default Unmanaged JDBC Database, type=Resource, provider-id=Default Unmanaged JDBC Database)\n    INFO - Auto-creating a Resource with id 'Default Unmanaged JDBC Database' of type 'DataSource for 'user'.\n    INFO - Adjusting PersistenceUnit user <jta-data-source> to Resource ID 'Default JDBC Database' from 'My DataSource'\n    INFO - Adjusting PersistenceUnit user <non-jta-data-source> to Resource ID 'Default Unmanaged JDBC Database' from 'My Unmanaged DataSource'\n    INFO - Enterprise application \"/Users/dblevins/examples/rest-on-ejb\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/rest-on-ejb\n    INFO - PersistenceUnit(name=user, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 407ms\n    INFO - Jndi(name=\"java:global/rest-on-ejb/UserService!org.superbiz.rest.UserService\")\n    INFO - Jndi(name=\"java:global/rest-on-ejb/UserService\")\n    INFO - Jndi(name=\"java:global/EjbModule1789767313/org.superbiz.rest.UserServiceTest!org.superbiz.rest.UserServiceTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1789767313/org.superbiz.rest.UserServiceTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.rest.UserServiceTest, ejb-name=org.superbiz.rest.UserServiceTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=UserService, ejb-name=UserService, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.rest.UserServiceTest, ejb-name=org.superbiz.rest.UserServiceTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=UserService, ejb-name=UserService, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/rest-on-ejb)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Creating ServerService(id=cxf-rs)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    WARN - Query \"select u from User u\" is removed from cache  excluded permanently. Query \"select u from User u\" is not cached because it uses pagination..\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.102 sec\n    \n    Results :\n    \n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-on-ejb"
+      },
+      {
+        "name":"simple-rest",
+        "readme":"Title: Simple REST\n\nDefining a REST service is pretty easy, simply ad @Path annotation to a class then define on methods\nthe HTTP method to use (@GET, @POST, ...).\n\n#The Code\n\n## The REST service: @Path, @GET, @POST\n\nHere we see a bean that uses the Bean-Managed Concurrency option as well as the @Startup annotation which causes the bean to be instantiated by the container when the application starts. Singleton beans with @ConcurrencyManagement(BEAN) are responsible for their own thread-safety. The bean shown is a simple properties \"registry\" and provides a place where options could be set and retrieved by all beans in the application.\n\n    package org.superbiz.rest;\n\n    import javax.ws.rs.GET;\n    import javax.ws.rs.POST;\n    import javax.ws.rs.Path;\n\n    @Path(\"/greeting\")\n    public class GreetingService {\n        @GET\n        public String message() {\n            return \"Hi REST!\";\n        }\n\n        @POST\n        public String lowerCase(final String message) {\n            return \"Hi REST!\".toLowerCase();\n        }\n    }\n\n# Testing\n\n## Test for the JAXRS service\n\nThe test uses the OpenEJB ApplicationComposer to make it trivial.\n\nThe idea is first to activate the jaxrs services. This is done using @EnableServices annotation.\n\nThen we create on the fly the application simply returning an object representing the web.xml. Here we simply\nuse it to define the context root but you can use it to define your REST Application too. And to complete the\napplication definition we add @Classes annotation to define the set of classes to use in this app.\n\nFinally to test it we use cxf client API to call the REST service in get() and post() methods.\n\n    package org.superbiz.rest;\n\n    import org.apache.cxf.jaxrs.client.WebClient;\n    import org.apache.openejb.jee.SingletonBean;\n    import org.apache.openejb.junit.ApplicationComposer;\n    import org.apache.openejb.junit.EnableServices;\n    import org.apache.openejb.junit.Module;\n    import org.junit.Test;\n    import org.junit.runner.RunWith;\n\n    import java.io.IOException;\n\n    import static org.junit.Assert.assertEquals;\n\n    @EnableServices(value = \"jaxrs\")\n    @RunWith(ApplicationComposer.class)\n    public class GreetingServiceTest {\n        @Module\n        public SingletonBean app() {\n            return (SingletonBean) new SingletonBean(GreetingService.class).localBean();\n        }\n\n        @Test\n        public void get() throws IOException {\n            final String message = WebClient.create(\"http://localhost:4204\").path(\"/GreetingServiceTest/greeting/\").get(String.class);\n            assertEquals(\"Hi REST!\", message);\n        }\n\n        @Test\n        public void post() throws IOException {\n            final String message = WebClient.create(\"http://localhost:4204\").path(\"/GreetingServiceTest/greeting/\").post(\"Hi REST!\", String.class);\n            assertEquals(\"hi rest!\", message);\n        }\n    }\n\n#Running\n\nRunning the example is fairly simple. In the \"simple-rest\" directory run:\n\n    $ mvn clean install\n\nWhich should create output like the following.\n\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf-rs)\n    INFO - Initializing network services\n    INFO - Starting service httpejbd\n    INFO - Started service httpejbd\n    INFO - Starting service cxf-rs\n    INFO - Started service cxf-rs\n    INFO -   ** Bound Services **\n    INFO -   NAME                 IP              PORT\n    INFO -   httpejbd             127.0.0.1       4204\n    INFO - -------\n    INFO - Ready!\n    INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Enterprise application \"/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest\" loaded.\n    INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest\n    INFO - Existing thread singleton service in SystemInstance() null\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@12c9b196\n    INFO - Succeeded in installing singleton service\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points are validated successfully.\n    INFO - OpenWebBeans Container has started, it took 11 ms.\n    INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)\n    INFO - Setting the server's publish address to be http://127.0.0.1:4204/test\n    INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService\n    INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest\n    INFO - Stopping network services\n    INFO - Stopping server services\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec\n\n    Results :\n\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-rest"
+      },
+      {
+        "name":"moviefun-rest",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/moviefun-rest"
+      },
+      {
+        "name":"rest-applicationcomposer",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer"
+      },
+      {
+        "name":"rest-example",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-example"
+      },
+      {
+        "name":"rest-example-with-application",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-example-with-application"
+      },
+      {
+        "name":"rest-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-cdi"
+      },
+      {
+        "name":"rest-applicationcomposer-mockito",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito"
+      },
+      {
+        "name":"rest-jaas",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-jaas"
+      },
+      {
+        "name":"rest-xml-json",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-xml-json"
+      }
+    ],
+    "rollback":[
+      {
+        "name":"transaction-rollback",
+        "readme":"Title: Transaction Rollback\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## CustomRuntimeException\n\n    package org.superbiz.txrollback;\n    \n    import javax.ejb.ApplicationException;\n    \n    @ApplicationException\n    public class CustomRuntimeException extends RuntimeException {\n    \n        public CustomRuntimeException() {\n        }\n    \n        public CustomRuntimeException(String s) {\n            super(s);\n        }\n    \n        public CustomRuntimeException(String s, Throwable throwable) {\n            super(s, throwable);\n        }\n    \n        public CustomRuntimeException(Throwable throwable) {\n            super(throwable);\n        }\n    }\n\n## Movie\n\n    package org.superbiz.txrollback;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    \n    @Entity(name = \"Movie\")\n    public class Movie {\n    \n        @Id\n        @GeneratedValue(strategy = GenerationType.AUTO)\n        private long id;\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.txrollback;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.SessionContext;\n    import javax.ejb.Stateless;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    //START SNIPPET: code\n    @Stateless\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        @Resource\n        private SessionContext sessionContext;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    \n        public void callSetRollbackOnly() {\n            sessionContext.setRollbackOnly();\n        }\n    \n        public void throwUncheckedException() {\n            throw new RuntimeException(\"Throwing unchecked exceptions will rollback a transaction\");\n        }\n    \n        public void throwApplicationException() {\n            throw new CustomRuntimeException(\"This is marked @ApplicationException, so no TX rollback\");\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.testinjection.MoviesTest.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.txrollback;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.transaction.RollbackException;\n    import javax.transaction.UserTransaction;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @Resource\n        private UserTransaction userTransaction;\n    \n        @PersistenceContext\n        private EntityManager entityManager;\n    \n        private EJBContainer ejbContainer;\n    \n        public void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\" + System.currentTimeMillis());\n    \n            ejbContainer = EJBContainer.createEJBContainer(p);\n            ejbContainer.getContext().bind(\"inject\", this);\n        }\n    \n        @Override\n        protected void tearDown() throws Exception {\n            ejbContainer.close();\n        }\n    \n        /**\n         * Standard successful transaction scenario.  The data created inside\n         * the transaction is visible after the transaction completes.\n         * <p/>\n         * Note that UserTransaction is only usable by Bean-Managed Transaction\n         * beans, which can be specified with @TransactionManagement(BEAN)\n         */\n        public void testCommit() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n            } finally {\n                userTransaction.commit();\n            }\n    \n            // Transaction was committed\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n        }\n    \n        /**\n         * Standard transaction rollback scenario.  The data created inside\n         * the transaction is not visible after the transaction completes.\n         */\n        public void testUserTransactionRollback() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n            } finally {\n                userTransaction.rollback();\n            }\n    \n            // Transaction was rolled back\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 0, list.size());\n        }\n    \n        /**\n         * Transaction is marked for rollback inside the bean via\n         * calling the javax.ejb.SessionContext.setRollbackOnly() method\n         * <p/>\n         * This is the cleanest way to make a transaction rollback.\n         */\n        public void testMarkedRollback() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n    \n                movies.callSetRollbackOnly();\n            } finally {\n                try {\n                    userTransaction.commit();\n                    fail(\"A RollbackException should have been thrown\");\n                } catch (RollbackException e) {\n                    // Pass\n                }\n            }\n    \n            // Transaction was rolled back\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 0, list.size());\n        }\n    \n        /**\n         * Throwing an unchecked exception from a bean will cause\n         * the container to call setRollbackOnly() and discard the\n         * bean instance from further use without calling any @PreDestroy\n         * methods on the bean instance.\n         */\n        public void testExceptionBasedRollback() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n    \n                try {\n                    movies.throwUncheckedException();\n                } catch (RuntimeException e) {\n                    // Good, this will cause the tx to rollback\n                }\n            } finally {\n                try {\n                    userTransaction.commit();\n                    fail(\"A RollbackException should have been thrown\");\n                } catch (RollbackException e) {\n                    // Pass\n                }\n            }\n    \n            // Transaction was rolled back\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 0, list.size());\n        }\n    \n        /**\n         * It is still possible to throw unchecked (runtime) exceptions\n         * without dooming the transaction by marking the exception\n         * with the @ApplicationException annotation or in the ejb-jar.xml\n         * deployment descriptor via the <application-exception> tag\n         */\n        public void testCommit2() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n    \n                try {\n                    movies.throwApplicationException();\n                } catch (RuntimeException e) {\n                    // This will *not* cause the tx to rollback\n                    // because it is marked as an @ApplicationException\n                }\n            } finally {\n                userTransaction.commit();\n            }\n    \n            // Transaction was committed\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.txrollback.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 412ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1718375554/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1718375554/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule935567559/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule935567559/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1961109485/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1961109485/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule419651577/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule419651577/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 4ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule15169271/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule15169271/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.586 sec\n    \n    Results :\n    \n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/transaction-rollback"
+      }
+    ],
+    "routing":[
+      {
+        "name":"dynamic-datasource-routing",
+        "readme":"Title: Dynamic Datasource Routing\n\nThe TomEE dynamic datasource api aims to allow to use multiple data sources as one from an application point of view.\n\nIt can be useful for technical reasons (load balancing for example) or more generally\nfunctionnal reasons (filtering, aggregation, enriching...). However please note you can choose\nonly one datasource by transaction. It means the goal of this feature is not to switch more than\nonce of datasource in a transaction. The following code will not work:\n\n    @Stateless\n    public class MyEJB {\n        @Resource private MyRouter router;\n        @PersistenceContext private EntityManager em;\n\n        public void workWithDataSources() {\n            router.setDataSource(\"ds1\");\n            em.persist(new MyEntity());\n\n            router.setDataSource(\"ds2\"); // same transaction -> this invocation doesn't work\n            em.persist(new MyEntity());\n        }\n    }\n\nIn this example the implementation simply use a datasource from its name and needs to be set before using any JPA\noperation in the transaction (to keep the logic simple in the example).\n\n# The implementation of the Router\n\nOur router has two configuration parameters:\n* a list of jndi names representing datasources to use\n* a default datasource to use\n\n## Router implementation\n\nThe interface Router (`org.apache.openejb.resource.jdbc.Router`) has only one method to implement, `public DataSource getDataSource()`\n\nOur `DeterminedRouter` implementation uses a ThreadLocal to manage the currently used datasource. Keep in mind JPA used more than once the getDatasource() method\nfor one operation. To change the datasource in one transaction is dangerous and should be avoid.\n\n    package org.superbiz.dynamicdatasourcerouting;\n\n    import org.apache.openejb.resource.jdbc.AbstractRouter;\n\n    import javax.naming.NamingException;\n    import javax.sql.DataSource;\n    import java.util.Map;\n    import java.util.concurrent.ConcurrentHashMap;\n\n    public class DeterminedRouter extends AbstractRouter {\n        private String dataSourceNames;\n        private String defaultDataSourceName;\n        private Map<String, DataSource> dataSources = null;\n        private ThreadLocal<DataSource> currentDataSource = new ThreadLocal<DataSource>();\n\n        /**\n         * @param datasourceList datasource resource name, separator is a space\n         */\n        public void setDataSourceNames(String datasourceList) {\n            dataSourceNames = datasourceList;\n        }\n\n        /**\n         * lookup datasource in openejb resources\n         */\n        private void init() {\n            dataSources = new ConcurrentHashMap<String, DataSource>();\n            for (String ds : dataSourceNames.split(\" \")) {\n                try {\n                    Object o = getOpenEJBResource(ds);\n                    if (o instanceof DataSource) {\n                        dataSources.put(ds, DataSource.class.cast(o));\n                    }\n                } catch (NamingException e) {\n                    // ignored\n                }\n            }\n        }\n\n        /**\n         * @return the user selected data source if it is set\n         *         or the default one\n         *  @throws IllegalArgumentException if the data source is not found\n         */\n        @Override\n        public DataSource getDataSource() {\n            // lazy init of routed datasources\n            if (dataSources == null) {\n                init();\n            }\n\n            // if no datasource is selected use the default one\n            if (currentDataSource.get() == null) {\n                if (dataSources.containsKey(defaultDataSourceName)) {\n                    return dataSources.get(defaultDataSourceName);\n\n                } else {\n                    throw new IllegalArgumentException(\"you have to specify at least one datasource\");\n                }\n            }\n\n            // the developper set the datasource to use\n            return currentDataSource.get();\n        }\n\n        /**\n         *\n         * @param datasourceName data source name\n         */\n        public void setDataSource(String datasourceName) {\n            if (dataSources == null) {\n                init();\n            }\n            if (!dataSources.containsKey(datasourceName)) {\n                throw new IllegalArgumentException(\"data source called \" + datasourceName + \" can't be found.\");\n            }\n            DataSource ds = dataSources.get(datasourceName);\n            currentDataSource.set(ds);\n        }\n\n        /**\n         * reset the data source\n         */\n        public void clear() {\n            currentDataSource.remove();\n        }\n\n        public void setDefaultDataSourceName(String name) {\n            this.defaultDataSourceName = name;\n        }\n    }\n\n## Declaring the implementation\n\nTo be able to use your router as a resource you need to provide a service configuration. It is done in a file\nyou can find in META-INF/org.router/ and called service-jar.xml\n(for your implementation you can of course change the package name).\n\nIt contains the following code:\n\n    <ServiceJar>\n      <ServiceProvider id=\"DeterminedRouter\" <!-- the name you want to use -->\n          service=\"Resource\"\n          type=\"org.apache.openejb.resource.jdbc.Router\"\n          class-name=\"org.superbiz.dynamicdatasourcerouting.DeterminedRouter\"> <!-- implementation class -->\n\n        # the parameters\n\n        DataSourceNames\n        DefaultDataSourceName\n      </ServiceProvider>\n    </ServiceJar>\n\n\n# Using the Router\n\nHere we have a `RoutedPersister` stateless bean which uses our `DeterminedRouter`\n\n    package org.superbiz.dynamicdatasourcerouting;\n\n    import javax.annotation.Resource;\n    import javax.ejb.Stateless;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n\n    @Stateless\n    public class RoutedPersister {\n        @PersistenceContext(unitName = \"router\")\n        private EntityManager em;\n\n        @Resource(name = \"My Router\", type = DeterminedRouter.class)\n        private DeterminedRouter router;\n\n        public void persist(int id, String name, String ds) {\n            router.setDataSource(ds);\n            em.persist(new Person(id, name));\n        }\n    }\n\n# The test\n\nIn test mode and using property style configuration the foolowing configuration is used:\n\n    public class DynamicDataSourceTest {\n        @Test\n        public void route() throws Exception {\n            String[] databases = new String[]{\"database1\", \"database2\", \"database3\"};\n\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());\n\n            // resources\n            // datasources\n            for (int i = 1; i <= databases.length; i++) {\n                String dbName = databases[i - 1];\n                properties.setProperty(dbName, \"new://Resource?type=DataSource\");\n                dbName += \".\";\n                properties.setProperty(dbName + \"JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n                properties.setProperty(dbName + \"JdbcUrl\", \"jdbc:hsqldb:mem:db\" + i);\n                properties.setProperty(dbName + \"UserName\", \"sa\");\n                properties.setProperty(dbName + \"Password\", \"\");\n                properties.setProperty(dbName + \"JtaManaged\", \"true\");\n            }\n\n            // router\n            properties.setProperty(\"My Router\", \"new://Resource?provider=org.router:DeterminedRouter&type=\" + DeterminedRouter.class.getName());\n            properties.setProperty(\"My Router.DatasourceNames\", \"database1 database2 database3\");\n            properties.setProperty(\"My Router.DefaultDataSourceName\", \"database1\");\n\n            // routed datasource\n            properties.setProperty(\"Routed Datasource\", \"new://Resource?provider=RoutedDataSource&type=\" + Router.class.getName());\n            properties.setProperty(\"Routed Datasource.Router\", \"My Router\");\n\n            Context ctx = EJBContainer.createEJBContainer(properties).getContext();\n            RoutedPersister ejb = (RoutedPersister) ctx.lookup(\"java:global/dynamic-datasource-routing/RoutedPersister\");\n            for (int i = 0; i < 18; i++) {\n                // persisting a person on database db -> kind of manual round robin\n                String name = \"record \" + i;\n                String db = databases[i % 3];\n                ejb.persist(i, name, db);\n            }\n\n            // assert database records number using jdbc\n            for (int i = 1; i <= databases.length; i++) {\n                Connection connection = DriverManager.getConnection(\"jdbc:hsqldb:mem:db\" + i, \"sa\", \"\");\n                Statement st = connection.createStatement();\n                ResultSet rs = st.executeQuery(\"select count(*) from PERSON\");\n                rs.next();\n                assertEquals(6, rs.getInt(1));\n                st.close();\n                connection.close();\n            }\n\n            ctx.close();\n        }\n    }\n\n# Configuration via openejb.xml\n\nThe testcase above uses properties for configuration.  The identical way to do it via the `conf/openejb.xml` is as follows:\n\n    <!-- Router and datasource -->\n    <Resource id=\"My Router\" type=\"org.apache.openejb.router.test.DynamicDataSourceTest$DeterminedRouter\" provider=\"org.routertest:DeterminedRouter\">\n        DatasourceNames = database1 database2 database3\n        DefaultDataSourceName = database1\n    </Resource>\n    <Resource id=\"Routed Datasource\" type=\"org.apache.openejb.resource.jdbc.Router\" provider=\"RoutedDataSource\">\n        Router = My Router\n    </Resource>\n\n    <!-- real datasources -->\n    <Resource id=\"database1\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db1\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n    <Resource id=\"database2\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db2\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n    <Resource id=\"database3\" type=\"DataSource\">\n        JdbcDriver = org.hsqldb.jdbcDriver\n        JdbcUrl = jdbc:hsqldb:mem:db3\n        UserName = sa\n        Password\n        JtaManaged = true\n    </Resource>\n\n\n\n\n## Some hack for OpenJPA\n\nUsing more than one datasource behind one EntityManager means the databases are already created. If it is not the case,\nthe JPA provider has to create the datasource at boot time.\n\nHibernate do it so if you declare your databases it will work. However with OpenJPA\n(the default JPA provider for OpenEJB), the creation is lazy and it happens only once so when you'll switch of database\nit will no more work.\n\nOf course OpenEJB provides @Singleton and @Startup features of Java EE 6 and we can do a bean just making a simple find,\neven on none existing entities, just to force the database creation:\n\n    @Startup\n    @Singleton\n    public class BoostrapUtility {\n        // inject all real databases\n\n        @PersistenceContext(unitName = \"db1\")\n        private EntityManager em1;\n\n        @PersistenceContext(unitName = \"db2\")\n        private EntityManager em2;\n\n        @PersistenceContext(unitName = \"db3\")\n        private EntityManager em3;\n\n        // force database creation\n\n        @PostConstruct\n        @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n        public void initDatabase() {\n            em1.find(Person.class, 0);\n            em2.find(Person.class, 0);\n            em3.find(Person.class, 0);\n        }\n    }\n\n## Using the routed datasource\n\nNow you configured the way you want to route your JPA operation, you registered the resources and you initialized\nyour databases you can use it and see how it is simple:\n\n    @Stateless\n    public class RoutedPersister {\n        // injection of the \"proxied\" datasource\n        @PersistenceContext(unitName = \"router\")\n        private EntityManager em;\n\n        // injection of the router you need it to configured the database\n        @Resource(name = \"My Router\", type = DeterminedRouter.class)\n        private DeterminedRouter router;\n\n        public void persist(int id, String name, String ds) {\n            router.setDataSource(ds); // configuring the database for the current transaction\n            em.persist(new Person(id, name)); // will use ds database automatically\n        }\n    }\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - openejb.base = /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=My Router, type=Resource, provider-id=DeterminedRouter)\n    INFO - Configuring Service(id=database3, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=database2, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=Routed Datasource, type=Resource, provider-id=RoutedDataSource)\n    INFO - Configuring Service(id=database1, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-datasource-routing/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/dynamic-datasource-routing/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-datasource-routing\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean BoostrapUtility: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean RoutedPersister: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Auto-linking resource-ref 'java:comp/env/My Router' in bean RoutedPersister to Resource(id=My Router)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=router)\n    INFO - Configuring PersistenceUnit(name=db1)\n    INFO - Auto-creating a Resource with id 'database1NonJta' of type 'DataSource for 'db1'.\n    INFO - Configuring Service(id=database1NonJta, type=Resource, provider-id=database1)\n    INFO - Adjusting PersistenceUnit db1 <non-jta-data-source> to Resource ID 'database1NonJta' from 'null'\n    INFO - Configuring PersistenceUnit(name=db2)\n    INFO - Auto-creating a Resource with id 'database2NonJta' of type 'DataSource for 'db2'.\n    INFO - Configuring Service(id=database2NonJta, type=Resource, provider-id=database2)\n    INFO - Adjusting PersistenceUnit db2 <non-jta-data-source> to Resource ID 'database2NonJta' from 'null'\n    INFO - Configuring PersistenceUnit(name=db3)\n    INFO - Auto-creating a Resource with id 'database3NonJta' of type 'DataSource for 'db3'.\n    INFO - Configuring Service(id=database3NonJta, type=Resource, provider-id=database3)\n    INFO - Adjusting PersistenceUnit db3 <non-jta-data-source> to Resource ID 'database3NonJta' from 'null'\n    INFO - Enterprise application \"/Users/dblevins/examples/dynamic-datasource-routing\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/dynamic-datasource-routing\n    INFO - PersistenceUnit(name=router, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 504ms\n    INFO - PersistenceUnit(name=db1, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 11ms\n    INFO - PersistenceUnit(name=db2, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 7ms\n    INFO - PersistenceUnit(name=db3, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 6ms\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/BoostrapUtility!org.superbiz.dynamicdatasourcerouting.BoostrapUtility\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/BoostrapUtility\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/RoutedPersister!org.superbiz.dynamicdatasourcerouting.RoutedPersister\")\n    INFO - Jndi(name=\"java:global/dynamic-datasource-routing/RoutedPersister\")\n    INFO - Jndi(name=\"java:global/EjbModule1519652738/org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest!org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1519652738/org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest\")\n    INFO - Created Ejb(deployment-id=RoutedPersister, ejb-name=RoutedPersister, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, ejb-name=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=BoostrapUtility, ejb-name=BoostrapUtility, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=RoutedPersister, ejb-name=RoutedPersister, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, ejb-name=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=BoostrapUtility, ejb-name=BoostrapUtility, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-datasource-routing)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.504 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/dynamic-datasource-routing"
+      }
+    ],
+    "scala":[
+      {
+        "name":"scala-basic",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/scala-basic"
+      }
+    ],
+    "schedule":[
+      {
+        "name":"schedule-methods",
+        "readme":"Title: Schedule Methods\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## FarmerBrown\n\n    package org.superbiz.corn;\n    \n    import javax.ejb.Lock;\n    import javax.ejb.LockType;\n    import javax.ejb.Schedule;\n    import javax.ejb.Schedules;\n    import javax.ejb.Singleton;\n    import java.util.concurrent.atomic.AtomicInteger;\n    \n    /**\n     * This is where we schedule all of Farmer Brown's corn jobs\n     *\n     * @version $Revision$ $Date$\n     */\n    @Singleton\n    @Lock(LockType.READ) // allows timers to execute in parallel\n    public class FarmerBrown {\n    \n        private final AtomicInteger checks = new AtomicInteger();\n    \n        @Schedules({\n                @Schedule(month = \"5\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                @Schedule(month = \"6\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n        })\n        private void plantTheCorn() {\n            // Dig out the planter!!!\n        }\n    \n        @Schedules({\n                @Schedule(month = \"9\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                @Schedule(month = \"10\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n        })\n        private void harvestTheCorn() {\n            // Dig out the combine!!!\n        }\n    \n        @Schedule(second = \"*\", minute = \"*\", hour = \"*\")\n        private void checkOnTheDaughters() {\n            checks.incrementAndGet();\n        }\n    \n        public int getChecks() {\n            return checks.get();\n        }\n    }\n\n## FarmerBrownTest\n\n    package org.superbiz.corn;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    import static java.util.concurrent.TimeUnit.SECONDS;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    public class FarmerBrownTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            final FarmerBrown farmerBrown = (FarmerBrown) context.lookup(\"java:global/schedule-methods/FarmerBrown\");\n    \n            // Give Farmer brown a chance to do some work\n            Thread.sleep(SECONDS.toMillis(5));\n    \n            assertTrue(farmerBrown.getChecks() > 4);\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.corn.FarmerBrownTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/schedule-methods\n    INFO - openejb.base = /Users/dblevins/examples/schedule-methods\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/schedule-methods/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/schedule-methods/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/schedule-methods\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean FarmerBrown: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.corn.FarmerBrownTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/schedule-methods\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/schedule-methods\n    INFO - Jndi(name=\"java:global/schedule-methods/FarmerBrown!org.superbiz.corn.FarmerBrown\")\n    INFO - Jndi(name=\"java:global/schedule-methods/FarmerBrown\")\n    INFO - Jndi(name=\"java:global/EjbModule660493198/org.superbiz.corn.FarmerBrownTest!org.superbiz.corn.FarmerBrownTest\")\n    INFO - Jndi(name=\"java:global/EjbModule660493198/org.superbiz.corn.FarmerBrownTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.corn.FarmerBrownTest, ejb-name=org.superbiz.corn.FarmerBrownTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.corn.FarmerBrownTest, ejb-name=org.superbiz.corn.FarmerBrownTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/schedule-methods)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.121 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-methods"
+      },
+      {
+        "name":"schedule-methods-meta",
+        "readme":"Title: Schedule Methods Meta\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## BiAnnually\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface BiAnnually {\n        public static interface $ {\n    \n            @BiAnnually\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"1\", month = \"1,6\")\n            public void method();\n        }\n    }\n\n## BiMonthly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface BiMonthly {\n        public static interface $ {\n    \n            @BiMonthly\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"1,15\")\n            public void method();\n        }\n    }\n\n## Daily\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Daily {\n        public static interface $ {\n    \n            @Daily\n            @Schedule(second = \"0\", minute = \"0\", hour = \"0\", dayOfMonth = \"*\")\n            public void method();\n        }\n    }\n\n## HarvestTime\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import javax.ejb.Schedules;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface HarvestTime {\n        public static interface $ {\n    \n            @HarvestTime\n            @Schedules({\n                    @Schedule(month = \"9\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                    @Schedule(month = \"10\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n            })\n            public void method();\n        }\n    }\n\n## Hourly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Hourly {\n        public static interface $ {\n    \n            @Hourly\n            @Schedule(second = \"0\", minute = \"0\", hour = \"*\")\n            public void method();\n        }\n    }\n\n## Metatype\n\n    package org.superbiz.corn.meta.api;\n    \n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.ANNOTATION_TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    public @interface Metatype {\n    }\n\n## Organic\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Lock;\n    import javax.ejb.LockType;\n    import javax.ejb.Singleton;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @Singleton\n    @Lock(LockType.READ)\n    public @interface Organic {\n    }\n\n## PlantingTime\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import javax.ejb.Schedules;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface PlantingTime {\n        public static interface $ {\n    \n            @PlantingTime\n            @Schedules({\n                    @Schedule(month = \"5\", dayOfMonth = \"20-Last\", minute = \"0\", hour = \"8\"),\n                    @Schedule(month = \"6\", dayOfMonth = \"1-10\", minute = \"0\", hour = \"8\")\n            })\n            public void method();\n        }\n    }\n\n## Secondly\n\n    package org.superbiz.corn.meta.api;\n    \n    import javax.ejb.Schedule;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface Secondly {\n        public static interface $ {\n    \n            @Secondly\n            @Schedule(second = \"*\", minute = \"*\", hour = \"*\")\n            public void method();\n        }\n    }\n\n## FarmerBrown\n\n    package org.superbiz.corn.meta;\n    \n    import org.superbiz.corn.meta.api.HarvestTime;\n    import org.superbiz.corn.meta.api.Organic;\n    import org.superbiz.corn.meta.api.PlantingTime;\n    import org.superbiz.corn.meta.api.Secondly;\n    \n    import java.util.concurrent.atomic.AtomicInteger;\n    \n    /**\n     * This is where we schedule all of Farmer Brown's corn jobs\n     *\n     * @version $Revision$ $Date$\n     */\n    @Organic\n    public class FarmerBrown {\n    \n        private final AtomicInteger checks = new AtomicInteger();\n    \n        @PlantingTime\n        private void plantTheCorn() {\n            // Dig out the planter!!!\n        }\n    \n        @HarvestTime\n        private void harvestTheCorn() {\n            // Dig out the combine!!!\n        }\n    \n        @Secondly\n        private void checkOnTheDaughters() {\n            checks.incrementAndGet();\n        }\n    \n        public int getChecks() {\n            return checks.get();\n        }\n    }\n\n## FarmerBrownTest\n\n    package org.superbiz.corn.meta;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    \n    import static java.util.concurrent.TimeUnit.SECONDS;\n    \n    /**\n     * @version $Revision$ $Date$\n     */\n    public class FarmerBrownTest extends TestCase {\n    \n        public void test() throws Exception {\n    \n            final Context context = EJBContainer.createEJBContainer().getContext();\n    \n            final FarmerBrown farmerBrown = (FarmerBrown) context.lookup(\"java:global/schedule-methods-meta/FarmerBrown\");\n    \n            // Give Farmer brown a chance to do some work\n            Thread.sleep(SECONDS.toMillis(5));\n    \n            assertTrue(farmerBrown.getChecks() > 4);\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.corn.meta.FarmerBrownTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/schedule-methods-meta\n    INFO - openejb.base = /Users/dblevins/examples/schedule-methods-meta\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/schedule-methods-meta/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/schedule-methods-meta/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/schedule-methods-meta\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean FarmerBrown: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.corn.meta.FarmerBrownTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/schedule-methods-meta\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/schedule-methods-meta\n    INFO - Jndi(name=\"java:global/schedule-methods-meta/FarmerBrown!org.superbiz.corn.meta.FarmerBrown\")\n    INFO - Jndi(name=\"java:global/schedule-methods-meta/FarmerBrown\")\n    INFO - Jndi(name=\"java:global/EjbModule1809441479/org.superbiz.corn.meta.FarmerBrownTest!org.superbiz.corn.meta.FarmerBrownTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1809441479/org.superbiz.corn.meta.FarmerBrownTest\")\n    INFO - Created Ejb(deployment-id=org.superbiz.corn.meta.FarmerBrownTest, ejb-name=org.superbiz.corn.meta.FarmerBrownTest, container=Default Managed Container)\n    INFO - Created Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.corn.meta.FarmerBrownTest, ejb-name=org.superbiz.corn.meta.FarmerBrownTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/schedule-methods-meta)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.166 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-methods-meta"
+      },
+      {
+        "name":"schedule-expression",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-expression"
+      },
+      {
+        "name":"schedule-events",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/schedule-events"
+      }
+    ],
+    "scope":[
+      {
+        "name":"cdi-application-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-application-scope"
+      },
+      {
+        "name":"cdi-request-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-request-scope"
+      },
+      {
+        "name":"cdi-session-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-session-scope"
+      }
+    ],
+    "security":[
+      {
+        "name":"testing-security",
+        "readme":"Title: Testing Security\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection.secure;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.secure;\n    \n    //START SNIPPET: code\n    \n    import javax.annotation.security.PermitAll;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        @RolesAllowed({\"Employee\", \"Manager\"})\n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        @RolesAllowed({\"Manager\"})\n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        @PermitAll\n        @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.secure.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MovieTest\n\n    package org.superbiz.injection.secure;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.security.RunAs;\n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.ejb.Stateless;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.List;\n    import java.util.Properties;\n    import java.util.concurrent.Callable;\n    \n    //START SNIPPET: code\n    \n    public class MovieTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @EJB(name = \"ManagerBean\")\n        private Caller manager;\n    \n        @EJB(name = \"EmployeeBean\")\n        private Caller employee;\n    \n        protected void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        public void testAsManager() throws Exception {\n            manager.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        movies.deleteMovie(movie);\n                    }\n    \n                    assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testAsEmployee() throws Exception {\n            employee.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        try {\n                            movies.deleteMovie(movie);\n                            fail(\"Employees should not be allowed to delete\");\n                        } catch (EJBAccessException e) {\n                            // Good, Employees cannot delete things\n                        }\n                    }\n    \n                    // The list should still be three movies long\n                    assertEquals(\"Movies.getMovies()\", 3, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testUnauthenticated() throws Exception {\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                fail(\"Unauthenticated users should not be able to add movies\");\n            } catch (EJBAccessException e) {\n                // Good, guests cannot add things\n            }\n    \n            try {\n                movies.deleteMovie(null);\n                fail(\"Unauthenticated users should not be allowed to delete\");\n            } catch (EJBAccessException e) {\n                // Good, Unauthenticated users cannot delete things\n            }\n    \n            try {\n                // Read access should be allowed\n    \n                List<Movie> list = movies.getMovies();\n            } catch (EJBAccessException e) {\n                fail(\"Read access should be allowed\");\n            }\n        }\n    \n    \n        public static interface Caller {\n            public <V> V call(Callable<V> callable) throws Exception;\n        }\n    \n        /**\n         * This little bit of magic allows our test code to execute in\n         * the desired security scope.\n         */\n    \n        @Stateless\n        @RunAs(\"Manager\")\n        public static class ManagerBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    \n        @Stateless\n        @RunAs(\"Employee\")\n        public static class EmployeeBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.secure.MovieTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testing-security\n    INFO - openejb.base = /Users/dblevins/examples/testing-security\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testing-security\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean ManagerBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testing-security\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testing-security\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 405ms\n    INFO - Jndi(name=\"java:global/testing-security/Movies!org.superbiz.injection.secure.Movies\")\n    INFO - Jndi(name=\"java:global/testing-security/Movies\")\n    INFO - Jndi(name=\"java:global/testing-security/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security/ManagerBean\")\n    INFO - Jndi(name=\"java:global/testing-security/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security/EmployeeBean\")\n    INFO - Jndi(name=\"java:global/EjbModule26174809/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest\")\n    INFO - Jndi(name=\"java:global/EjbModule26174809/org.superbiz.injection.secure.MovieTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testing-security)\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.574 sec\n    \n    Results :\n    \n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security"
+      },
+      {
+        "name":"testing-security-meta",
+        "readme":"Title: Testing Security Meta\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AddPermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RolesAllowed;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface AddPermission {\n        public static interface $ {\n    \n            @AddPermission\n            @RolesAllowed({\"Employee\", \"Manager\"})\n            public void method();\n        }\n    }\n\n## DeletePermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RolesAllowed;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface DeletePermission {\n        public static interface $ {\n    \n            @DeletePermission\n            @RolesAllowed(\"Manager\")\n            public void method();\n        }\n    }\n\n## Metatype\n\n    package org.superbiz.injection.secure.api;\n    \n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.ANNOTATION_TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    public @interface Metatype {\n    }\n\n## MovieUnit\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.METHOD, ElementType.FIELD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @PersistenceContext(name = \"movie-unit\", unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n    public @interface MovieUnit {\n    }\n\n## ReadPermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.PermitAll;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface ReadPermission {\n        public static interface $ {\n    \n            @ReadPermission\n            @PermitAll\n            @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n            public void method();\n        }\n    }\n\n## RunAsEmployee\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RunAs;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.TYPE, ElementType.METHOD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @RunAs(\"Employee\")\n    public @interface RunAsEmployee {\n    }\n\n## RunAsManager\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RunAs;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.TYPE, ElementType.METHOD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @RunAs(\"Manager\")\n    public @interface RunAsManager {\n    }\n\n## Movie\n\n    package org.superbiz.injection.secure;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.secure;\n    \n    //START SNIPPET: code\n    \n    import org.superbiz.injection.secure.api.AddPermission;\n    import org.superbiz.injection.secure.api.DeletePermission;\n    import org.superbiz.injection.secure.api.MovieUnit;\n    import org.superbiz.injection.secure.api.ReadPermission;\n    \n    import javax.ejb.Stateful;\n    import javax.persistence.EntityManager;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @MovieUnit\n        private EntityManager entityManager;\n    \n        @AddPermission\n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        @DeletePermission\n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        @ReadPermission\n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.secure.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MovieTest\n\n    package org.superbiz.injection.secure;\n    \n    import junit.framework.TestCase;\n    import org.superbiz.injection.secure.api.RunAsEmployee;\n    import org.superbiz.injection.secure.api.RunAsManager;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.ejb.Stateless;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.List;\n    import java.util.Properties;\n    import java.util.concurrent.Callable;\n    \n    //START SNIPPET: code\n    \n    public class MovieTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @EJB(beanName = \"ManagerBean\")\n        private Caller manager;\n    \n        @EJB(beanName = \"EmployeeBean\")\n        private Caller employee;\n    \n        protected void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        public void testAsManager() throws Exception {\n            manager.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        movies.deleteMovie(movie);\n                    }\n    \n                    assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testAsEmployee() throws Exception {\n            employee.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        try {\n                            movies.deleteMovie(movie);\n                            fail(\"Employees should not be allowed to delete\");\n                        } catch (EJBAccessException e) {\n                            // Good, Employees cannot delete things\n                        }\n                    }\n    \n                    // The list should still be three movies long\n                    assertEquals(\"Movies.getMovies()\", 3, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testUnauthenticated() throws Exception {\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                fail(\"Unauthenticated users should not be able to add movies\");\n            } catch (EJBAccessException e) {\n                // Good, guests cannot add things\n            }\n    \n            try {\n                movies.deleteMovie(null);\n                fail(\"Unauthenticated users should not be allowed to delete\");\n            } catch (EJBAccessException e) {\n                // Good, Unauthenticated users cannot delete things\n            }\n    \n            try {\n                // Read access should be allowed\n    \n                List<Movie> list = movies.getMovies();\n            } catch (EJBAccessException e) {\n                fail(\"Read access should be allowed\");\n            }\n        }\n    \n        public interface Caller {\n            public <V> V call(Callable<V> callable) throws Exception;\n        }\n    \n        /**\n         * This little bit of magic allows our test code to execute in\n         * the desired security scope.\n         */\n    \n        @Stateless\n        @RunAsManager\n        public static class ManagerBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    \n        @Stateless\n        @RunAsEmployee\n        public static class EmployeeBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.secure.MovieTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testing-security-meta\n    INFO - openejb.base = /Users/dblevins/examples/testing-security-meta\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-meta/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-meta/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security-meta/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security-meta/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testing-security-meta\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean ManagerBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testing-security-meta\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testing-security-meta\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 419ms\n    INFO - Jndi(name=\"java:global/testing-security-meta/Movies!org.superbiz.injection.secure.Movies\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/Movies\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/ManagerBean\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/EmployeeBean\")\n    INFO - Jndi(name=\"java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest\")\n    INFO - Jndi(name=\"java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testing-security-meta)\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.754 sec\n    \n    Results :\n    \n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-meta"
+      },
+      {
+        "name":"testing-security-3",
+        "readme":"Title: Testing Security 3\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection.secure;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.secure;\n    \n    //START SNIPPET: code\n    \n    import javax.annotation.security.PermitAll;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        @RolesAllowed({\"Employee\", \"Manager\"})\n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        @RolesAllowed({\"Manager\"})\n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        @PermitAll\n        @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## MyLoginProvider\n\n    package org.superbiz.injection.secure;\n\n    import org.apache.openejb.core.security.jaas.LoginProvider;\n\n    import javax.security.auth.login.FailedLoginException;\n    import java.util.Arrays;\n    import java.util.List;\n\n    public class MyLoginProvider implements LoginProvider {\n\n\n        @Override\n        public List<String> authenticate(String user, String password) throws FailedLoginException {\n            if (\"paul\".equals(user) && \"michelle\".equals(password)) {\n                return Arrays.asList(\"Manager\", \"rockstar\", \"beatle\");\n            }\n\n            if (\"eddie\".equals(user) && \"jump\".equals(password)) {\n                return Arrays.asList(\"Employee\", \"rockstar\", \"vanhalen\");\n            }\n\n            throw new FailedLoginException(\"Bad user or password!\");\n        }\n    }\n\n## org.apache.openejb.core.security.jaas.LoginProvider\n\n    org.superbiz.injection.secure.MyLoginProvider\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.secure.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MovieTest\n\n    package org.superbiz.injection.secure;\n\n    import junit.framework.TestCase;\n\n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.naming.NamingException;\n    import java.util.List;\n    import java.util.Properties;\n\n    public class MovieTest extends TestCase {\n\n        @EJB\n        private Movies movies;\n\n        private Context getContext(String user, String pass) throws NamingException {\n            Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            p.setProperty(\"openejb.authentication.realmName\", \"ServiceProviderLogin\");\n            p.put(Context.SECURITY_PRINCIPAL, user);\n            p.put(Context.SECURITY_CREDENTIALS, pass);\n\n            return new InitialContext(p);\n        }\n\n        protected void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n\n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n\n        public void testAsManager() throws Exception {\n            final Context context = getContext(\"paul\", \"michelle\");\n\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n\n                for (Movie movie : list) {\n                    movies.deleteMovie(movie);\n                }\n\n                assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n            } finally {\n                context.close();\n            }\n        }\n\n        public void testAsEmployee() throws Exception {\n            final Context context = getContext(\"eddie\", \"jump\");\n\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n\n                for (Movie movie : list) {\n                    try {\n                        movies.deleteMovie(movie);\n                        fail(\"Employees should not be allowed to delete\");\n                    } catch (EJBAccessException e) {\n                        // Good, Employees cannot delete things\n                    }\n                }\n\n                // The list should still be three movies long\n                assertEquals(\"Movies.getMovies()\", 3, movies.getMovies().size());\n            } finally {\n                context.close();\n            }\n        }\n\n        public void testUnauthenticated() throws Exception {\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                fail(\"Unauthenticated users should not be able to add movies\");\n            } catch (EJBAccessException e) {\n                // Good, guests cannot add things\n            }\n\n            try {\n                movies.deleteMovie(null);\n                fail(\"Unauthenticated users should not be allowed to delete\");\n            } catch (EJBAccessException e) {\n                // Good, Unauthenticated users cannot delete things\n            }\n\n            try {\n                // Read access should be allowed\n\n                List<Movie> list = movies.getMovies();\n\n            } catch (EJBAccessException e) {\n                fail(\"Read access should be allowed\");\n            }\n\n        }\n\n        public void testLoginFailure() throws NamingException {\n            try {\n                getContext(\"eddie\", \"panama\");\n                fail(\"supposed to have a login failure here\");\n            } catch (javax.naming.AuthenticationException e) {\n                //expected\n            }\n\n            try {\n                getContext(\"jimmy\", \"foxylady\");\n                fail(\"supposed to have a login failure here\");\n            } catch (javax.naming.AuthenticationException e) {\n                //expected\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.secure.MovieTest\n    INFO - ********************************************************************************\n    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Fri Jul 20 08:42:53 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 20120720\n    INFO - Build time: 08:33\n    INFO - ********************************************************************************\n    INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\n    INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@38ee6681\n    INFO - Succeeded in installing singleton service\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Creating Resource(id=movieDatabase)\n    INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3/target/classes\n    INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\n    INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Creating Container(id=Default Stateful Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Creating Resource(id=movieDatabaseNonJta)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\" loaded.\n    INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\n    SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested installation of a ClassFileTransformer which requires a JavaAgent.  See http://tomee.apache.org/3.0/javaagent.html\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 268ms\n    INFO - Jndi(name=\"java:global/testing-security-3/Movies!org.superbiz.injection.secure.Movies\")\n    INFO - Jndi(name=\"java:global/testing-security-3/Movies\")\n    INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@38ee6681\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points are validated successfully.\n    INFO - OpenWebBeans Container has started, it took 170 ms.\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3)\n    20-Jul-2012 8:42:55 AM null openjpa.Runtime\n    INFO: Starting OpenJPA 2.2.0\n    20-Jul-2012 8:42:56 AM null openjpa.jdbc.JDBC\n    INFO: Using dictionary class \"org.apache.openjpa.jdbc.sql.HSQLDictionary\" (HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).\n    20-Jul-2012 8:42:57 AM null openjpa.Enhance\n    INFO: Creating subclass and redefining methods for \"[class org.superbiz.injection.secure.Movie]\". This means that your application will be less efficient than it would if you ran the OpenJPA enhancer.\n    INFO - Logging in\n    INFO - Logging out\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    INFO - Logging in\n    INFO - Logging out\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.069 sec\n\n    Results :\n\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-3"
+      },
+      {
+        "name":"testing-security-4",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-4"
+      },
+      {
+        "name":"webservice-security",
+        "readme":"Title: Webservice Security\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## CalculatorImpl\n\n    package org.superbiz.calculator;\n    \n    import javax.annotation.security.DeclareRoles;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has a single interface: CalculatorWs a webservice interface.\n     */\n    //START SNIPPET: code\n    @DeclareRoles(value = {\"Administrator\"})\n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.calculator.CalculatorWs\")\n    public class CalculatorImpl implements CalculatorWs, CalculatorRemote {\n    \n        @RolesAllowed(value = {\"Administrator\"})\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        @RolesAllowed(value = {\"Administrator\"})\n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## CalculatorRemote\n\n    package org.superbiz.calculator;\n    \n    import javax.ejb.Remote;\n    \n    @Remote\n    public interface CalculatorRemote {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## CalculatorWs\n\n    package org.superbiz.calculator;\n    \n    import javax.jws.WebService;\n    \n    //END SNIPPET: code\n    \n    /**\n     * This is an EJB 3 webservice interface\n     * A webservice interface must be annotated with the @Local\n     * annotation.\n     */\n    //START SNIPPET: code\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    public interface CalculatorWs {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n\n## openejb-jar.xml\n\n    <openejb-jar xmlns=\"http://tomee.apache.org/xml/ns/openejb-jar-2.2\">\n      <enterprise-beans>\n        <session>\n          <ejb-name>CalculatorImpl</ejb-name>\n          <web-service-security>\n            <security-realm-name/>\n            <transport-guarantee>NONE</transport-guarantee>\n            <auth-method>BASIC</auth-method>\n          </web-service-security>\n        </session>\n      </enterprise-beans>\n    </openejb-jar>\n\n## CalculatorTest\n\n    package org.superbiz.calculator;\n    \n    import junit.framework.TestCase;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.BindingProvider;\n    import javax.xml.ws.Service;\n    import java.net.URL;\n    import java.util.Properties;\n    \n    public class CalculatorTest extends TestCase {\n    \n        //START SNIPPET: setup\n        private InitialContext initialContext;\n    \n        protected void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            initialContext = new InitialContext(properties);\n        }\n        //END SNIPPET: setup\n    \n        /**\n         * Create a webservice client using wsdl url\n         *\n         * @throws Exception\n         */\n        //START SNIPPET: webservice\n        public void testCalculatorViaWsInterface() throws Exception {\n            URL url = new URL(\"http://127.0.0.1:4204/CalculatorImpl?wsdl\");\n            QName calcServiceQName = new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\");\n            Service calcService = Service.create(url, calcServiceQName);\n            assertNotNull(calcService);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n            ((BindingProvider) calc).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, \"jane\");\n            ((BindingProvider) calc).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, \"waterfall\");\n            assertEquals(10, calc.sum(4, 6));\n            assertEquals(12, calc.multiply(3, 4));\n        }\n        //END SNIPPET: webservice\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.CalculatorTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-security\n    INFO - openejb.base = /Users/dblevins/examples/webservice-security\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-security/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-security/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-security/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean CalculatorImpl: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-security/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-security/classpath.ear\n    INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/webservice-security/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/webservice-security/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-security/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.481 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-security"
+      },
+      {
+        "name":"webservice-ws-security",
+        "readme":"Title: Webservice Ws Security\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## CalculatorImpl\n\n    package org.superbiz.calculator;\n    \n    import javax.annotation.security.DeclareRoles;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has a single interface: CalculatorWs a webservice interface.\n     */\n    //START SNIPPET: code\n    @DeclareRoles(value = {\"Administrator\"})\n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.calculator.CalculatorWs\")\n    public class CalculatorImpl implements CalculatorWs, CalculatorRemote {\n    \n        @RolesAllowed(value = {\"Administrator\"})\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## CalculatorRemote\n\n    package org.superbiz.calculator;\n    \n    import javax.ejb.Remote;\n    \n    @Remote\n    public interface CalculatorRemote {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## CalculatorWs\n\n    package org.superbiz.calculator;\n    \n    import javax.jws.WebService;\n    \n    //END SNIPPET: code\n    \n    /**\n     * This is an EJB 3 webservice interface\n     * A webservice interface must be annotated with the @Local\n     * annotation.\n     */\n    //START SNIPPET: code\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    public interface CalculatorWs {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n             version=\"3.0\" id=\"simple\" metadata-complete=\"false\">\n    \n      <enterprise-beans>\n    \n        <session>\n          <ejb-name>CalculatorImplTimestamp1way</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplTimestamp2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenPlainPassword</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenHashedPassword</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplSign</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplEncrypt2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplSign2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplEncryptAndSign2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n      </enterprise-beans>\n    \n    </ejb-jar>\n    \n\n## openejb-jar.xml\n\n    <openejb-jar xmlns=\"http://www.openejb.org/openejb-jar/1.1\">\n    \n      <ejb-deployment ejb-name=\"CalculatorImpl\">\n        <properties>\n          # webservice.security.realm\n          # webservice.security.securityRealm\n          # webservice.security.transportGarantee = NONE\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass = org.superbiz.calculator.CustomPasswordHandler\n    \n          # automatically added\n          wss4j.in.validator.{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken = org.apache.openejb.server.cxf.OpenEJBLoginValidator\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplTimestamp1way\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Timestamp\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplTimestamp2ways\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Timestamp\n          wss4j.out.action = Timestamp\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenPlainPassword\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenHashedPassword\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordDigest\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenPlainPasswordEncrypt\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken Encrypt\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n          wss4j.in.decryptionPropFile = META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-server.properties\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplSign\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Signature\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n          wss4j.in.signaturePropFile = META-INF/CalculatorImplSign-server.properties\n        </properties>\n      </ejb-deployment>\n    \n    </openejb-jar>\n    \n\n## webservices.xml\n\n    <webservices xmlns=\"http://java.sun.com/xml/ns/j2ee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\n    http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd\"\n                 xmlns:ger=\"http://ciaows.org/wsdl\" version=\"1.1\">\n    \n      <webservice-description>\n        <webservice-description-name>CalculatorWsService</webservice-description-name>\n        <port-component>\n          <port-component-name>CalculatorImplTimestamp1way</port-component-name>\n          <wsdl-port>CalculatorImplTimestamp1way</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplTimestamp1way</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplTimestamp2ways</port-component-name>\n          <wsdl-port>CalculatorImplTimestamp2ways</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplTimestamp2ways</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenPlainPassword</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenPlainPassword</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenPlainPassword</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenHashedPassword</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenHashedPassword</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenHashedPassword</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenPlainPasswordEncrypt</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-link>\n          </service-impl-bean>\n        </port-component>\n      </webservice-description>\n    \n    </webservices>\n    \n\n## CalculatorTest\n\n    package org.superbiz.calculator;\n    \n    import junit.framework.TestCase;\n    import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;\n    import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;\n    import org.apache.cxf.endpoint.Client;\n    import org.apache.cxf.endpoint.Endpoint;\n    import org.apache.cxf.frontend.ClientProxy;\n    import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;\n    import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;\n    import org.apache.ws.security.WSConstants;\n    import org.apache.ws.security.WSPasswordCallback;\n    import org.apache.ws.security.handler.WSHandlerConstants;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.security.auth.callback.Callback;\n    import javax.security.auth.callback.CallbackHandler;\n    import javax.security.auth.callback.UnsupportedCallbackException;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.Service;\n    import javax.xml.ws.soap.SOAPBinding;\n    import java.io.IOException;\n    import java.net.URL;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.Properties;\n    \n    public class CalculatorTest extends TestCase {\n    \n        //START SNIPPET: setup\n        protected void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            new InitialContext(properties);\n        }\n        //END SNIPPET: setup\n    \n        //START SNIPPET: webservice\n        public void testCalculatorViaWsInterface() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImpl?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithTimestamp1way() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplTimestamp1way?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplTimestamp1way\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\t\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(12, calc.multiply(3, 4));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithTimestamp2ways() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplTimestamp2ways?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplTimestamp2ways\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\t\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n            endpoint.getInInterceptors().add(new SAAJInInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            Map<String, Object> inProps = new HashMap<String, Object>();\n            inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);\n            endpoint.getInInterceptors().add(wssIn);\n    \n            assertEquals(12, calc.multiply(3, 4));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPassword() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPassword?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPassword\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenHashedPassword() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenHashedPassword?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenHashedPassword\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPasswordEncrypt() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPasswordEncrypt?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPasswordEncrypt\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN\n                    + \" \" + WSHandlerConstants.ENCRYPT);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n            outProps.put(WSHandlerConstants.ENC_PROP_FILE, \"META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-client.properties\");\n            outProps.put(WSHandlerConstants.ENCRYPTION_USER, \"serveralias\");\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithSign() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplSign?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplSign\");\n    \n    //      CalculatorWs calc = calcService.getPort(\n    //\tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE);\n            outProps.put(WSHandlerConstants.USER, \"clientalias\");\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"clientPassword\");\n                }\n            });\n            outProps.put(WSHandlerConstants.SIG_PROP_FILE, \"META-INF/CalculatorImplSign-client.properties\");\n            outProps.put(WSHandlerConstants.SIG_KEY_ID, \"IssuerSerial\");\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(24, calc.multiply(4, 6));\n        }\n        //END SNIPPET: webservice\n    }\n\n## CustomPasswordHandler\n\n    package org.superbiz.calculator;\n    \n    import org.apache.ws.security.WSPasswordCallback;\n    \n    import javax.security.auth.callback.Callback;\n    import javax.security.auth.callback.CallbackHandler;\n    import javax.security.auth.callback.UnsupportedCallbackException;\n    import java.io.IOException;\n    \n    public class CustomPasswordHandler implements CallbackHandler {\n        @Override\n        public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n            WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n    \n            if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN) {\n                // TODO get the password from the users.properties if possible\n                pc.setPassword(\"waterfall\");\n            } else if (pc.getUsage() == WSPasswordCallback.DECRYPT) {\n                pc.setPassword(\"serverPassword\");\n            } else if (pc.getUsage() == WSPasswordCallback.SIGNATURE) {\n                pc.setPassword(\"serverPassword\");\n            }\n        }\n    }\n\n# Running\n\n    \n    generate keys:\n    \n    do.sun.jdk:\n         [echo] *** Running on a Sun JDK ***\n         [echo] generate server keys\n         [java] Certificate stored in file </Users/dblevins/examples/webservice-ws-security/target/classes/META-INF/serverKey.rsa>\n         [echo] generate client keys\n         [java] Certificate stored in file </Users/dblevins/examples/webservice-ws-security/target/test-classes/META-INF/clientKey.rsa>\n         [echo] import client/server public keys in client/server keystores\n         [java] Certificate was added to keystore\n         [java] Certificate was added to keystore\n    \n    do.ibm.jdk:\n    \n    run:\n         [echo] Running JDK specific keystore creation target\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.CalculatorTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-ws-security\n    INFO - openejb.base = /Users/dblevins/examples/webservice-ws-security\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-ws-security/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-ws-security/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-ws-security/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean CalculatorImplTimestamp1way: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-ws-security/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-ws-security/classpath.ear\n    INFO - Jndi(name=CalculatorImplTimestamp1wayRemote) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=CalculatorImplTimestamp2waysRemote) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=CalculatorImplUsernameTokenHashedPasswordRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordEncryptRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=CalculatorImplSignRemote) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=CalculatorImplEncrypt2waysRemote) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=CalculatorImplSign2waysRemote) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=CalculatorImplEncryptAndSign2waysRemote) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplSign, ejb-name=CalculatorImplSign, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplTimestamp1way, ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplSign2ways, ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplEncrypt2ways, ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplTimestamp2ways, ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplSign, ejb-name=CalculatorImplSign, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplTimestamp1way, ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplSign2ways, ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplEncrypt2ways, ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplTimestamp2ways, ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-ws-security/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.582 sec\n    \n    Results :\n    \n    Tests run: 7, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-ws-security"
+      },
+      {
+        "name":"testing-security-2",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-2"
+      }
+    ],
+    "server":[
+      {
+        "name":"server-events",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/server-events"
+      }
+    ],
+    "session":[
+      {
+        "name":"cdi-session-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-session-scope"
+      }
+    ],
+    "singleton":[
+      {
+        "name":"simple-singleton",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-singleton"
+      }
+    ],
+    "spock":[
+      {
+        "name":"groovy-spock",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/groovy-spock"
+      }
+    ],
+    "spring":[
+      {
+        "name":"spring-data-proxy",
+        "readme":"# Spring Data sample #\n\nThis example uses OpenEJB hooks to replace an EJB implementation by a proxy\nto uses Spring Data in your preferred container.\n\nIt is pretty simple: simply provide to OpenEJB an InvocationHandler using delegating to spring data\nand that's it!\n\nIt is what is done in org.superbiz.dynamic.SpringDataProxy.\n\nIt contains a little trick: even if it is not annotated \"implementingInterfaceClass\" attribute\nis injected by OpenEJB to get the interface.\n\nThen we simply create the Spring Data repository and delegate to it.\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/spring-data-proxy"
+      },
+      {
+        "name":"spring-data-proxy-meta",
+        "readme":"# Spring Data With Meta sample #\n\nThis example simply simplifies the usage of spring-data sample\nproviding a meta annotation @SpringRepository to do all the dynamic procy EJB job.\n\nIt replaces @Proxy and @Stateless annotations.\n\nIsn't it more comfortable?\n\nTo do it we defined a meta annotation \"Metatype\" and used it.\n\nThe proxy implementation is the same than for spring-data sample.\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/spring-data-proxy-meta"
+      }
+    ],
+    "stateful":[
+      {
+        "name":"telephone-stateful",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/telephone-stateful"
+      },
+      {
+        "name":"simple-stateful-callbacks",
+        "readme":"Title: Simple Stateful with callback methods\n\nThis example shows how to create a stateful session bean that uses the @PrePassivate, @PostActivate, @PostConstruct, @PreDestroy and @AroundInvoke annotations.\n\n## CallbackCounter\n\n    package org.superbiz.counter;\n\n    import javax.annotation.PostConstruct;\n    import javax.annotation.PreDestroy;\n    import javax.ejb.PostActivate;\n    import javax.ejb.PrePassivate;\n    import javax.ejb.Stateful;\n    import javax.ejb.StatefulTimeout;\n    import javax.interceptor.AroundInvoke;\n    import javax.interceptor.InvocationContext;\n    import java.io.Serializable;\n    import java.util.concurrent.TimeUnit;\n\n    @Stateful\n    @StatefulTimeout(value = 1, unit = TimeUnit.SECONDS)\n    public class CallbackCounter implements Serializable {\n\n        private int count = 0;\n\n        @PrePassivate\n        public void prePassivate() {\n            ExecutionChannel.getInstance().notifyObservers(\"prePassivate\");\n        }\n\n        @PostActivate\n        public void postActivate() {\n            ExecutionChannel.getInstance().notifyObservers(\"postActivate\");\n        }\n\n        @PostConstruct\n        public void postConstruct() {\n            ExecutionChannel.getInstance().notifyObservers(\"postConstruct\");\n        }\n\n        @PreDestroy\n        public void preDestroy() {\n            ExecutionChannel.getInstance().notifyObservers(\"preDestroy\");\n        }\n\n        @AroundInvoke\n        public Object intercept(InvocationContext ctx) throws Exception {\n            ExecutionChannel.getInstance().notifyObservers(ctx.getMethod().getName());\n            return ctx.proceed();\n        }\n\n        public int count() {\n            return count;\n        }\n\n        public int increment() {\n            return ++count;\n        }\n\n        public int reset() {\n            return (count = 0);\n        }\n    }\n\n## ExecutionChannel\n\n    package org.superbiz.counter;\n\n    import java.util.ArrayList;\n    import java.util.List;\n\n    public class ExecutionChannel {\n        private static final ExecutionChannel INSTANCE = new ExecutionChannel();\n\n        private final List<ExecutionObserver> observers = new ArrayList<ExecutionObserver>();\n\n        public static ExecutionChannel getInstance() {\n            return INSTANCE;\n        }\n\n        public void addObserver(ExecutionObserver observer) {\n            this.observers.add(observer);\n        }\n\n        public void notifyObservers(Object value) {\n            for (ExecutionObserver observer : this.observers) {\n                observer.onExecution(value);\n            }\n        }\n    }\n\n## ExecutionObserver\n\n    package org.superbiz.counter;\n\n    public interface ExecutionObserver {\n\n        void onExecution(Object value);\n\n    }\n\n## CounterCallbacksTest\n\n    package org.superbiz.counter;\n\n    import junit.framework.Assert;\n    import org.junit.Test;\n\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.naming.NamingException;\n    import java.util.*;\n\n    public class CounterCallbacksTest implements ExecutionObserver {\n        private static List<Object> received = new ArrayList<Object>();\n\n        public Context getContext() throws NamingException {\n            final Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            return new InitialContext(p);\n\n        }\n\n        @Test\n        public void test() throws Exception {\n            final Map<String, Object> p = new HashMap<String, Object>();\n            p.put(\"MySTATEFUL\", \"new://Container?type=STATEFUL\");\n            p.put(\"MySTATEFUL.Capacity\", \"2\"); //How many instances of Stateful beans can our server hold in memory?\n            p.put(\"MySTATEFUL.Frequency\", \"1\"); //Interval in seconds between checks\n            p.put(\"MySTATEFUL.BulkPassivate\", \"0\"); //No bulkPassivate - just passivate entities whenever it is needed\n            final EJBContainer container = EJBContainer.createEJBContainer(p);\n\n            //this is going to track the execution\n            ExecutionChannel.getInstance().addObserver(this);\n\n            {\n                final Context context = getContext();\n\n                CallbackCounter counterA = (CallbackCounter) context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\");\n                Assert.assertNotNull(counterA);\n                Assert.assertEquals(\"postConstruct\", received.remove(0));\n\n                Assert.assertEquals(0, counterA.count());\n                Assert.assertEquals(\"count\", received.remove(0));\n\n                Assert.assertEquals(1, counterA.increment());\n                Assert.assertEquals(\"increment\", received.remove(0));\n\n                Assert.assertEquals(0, counterA.reset());\n                Assert.assertEquals(\"reset\", received.remove(0));\n\n                Assert.assertEquals(1, counterA.increment());\n                Assert.assertEquals(\"increment\", received.remove(0));\n\n                System.out.println(\"Waiting 2 seconds...\");\n                Thread.sleep(2000);\n\n                Assert.assertEquals(\"preDestroy\", received.remove(0));\n\n                try {\n                    counterA.increment();\n                    Assert.fail(\"The ejb is not supposed to be there.\");\n                } catch (javax.ejb.NoSuchEJBException e) {\n                    //excepted\n                }\n\n                context.close();\n            }\n\n            {\n                final Context context = getContext();\n\n                CallbackCounter counterA = (CallbackCounter) context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\");\n                Assert.assertEquals(\"postConstruct\", received.remove(0));\n\n                Assert.assertEquals(1, counterA.increment());\n                Assert.assertEquals(\"increment\", received.remove(0));\n\n                ((CallbackCounter) context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\")).count();\n                Assert.assertEquals(\"postConstruct\", received.remove(0));\n                Assert.assertEquals(\"count\", received.remove(0));\n\n                ((CallbackCounter) context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\")).count();\n                Assert.assertEquals(\"postConstruct\", received.remove(0));\n                Assert.assertEquals(\"count\", received.remove(0));\n\n                System.out.println(\"Waiting 2 seconds...\");\n                Thread.sleep(2000);\n                Assert.assertEquals(\"prePassivate\", received.remove(0));\n\n                context.close();\n            }\n            container.close();\n\n            Assert.assertEquals(\"preDestroy\", received.remove(0));\n            Assert.assertEquals(\"preDestroy\", received.remove(0));\n\n            Assert.assertTrue(received.toString(), received.isEmpty());\n        }\n\n        @Override\n        public void onExecution(Object value) {\n            System.out.println(\"Test step -> \" + value);\n            received.add(value);\n        }\n    }\n\n# Running\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.counter.CounterCallbacksTest\n    INFO - ********************************************************************************\n    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Sat Jul 21 08:18:28 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 20120721\n    INFO - Build time: 04:06\n    INFO - ********************************************************************************\n    INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd\n    INFO - Succeeded in installing singleton service\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=MySTATEFUL, type=Container, provider-id=Default Stateful Container)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Creating Container(id=MySTATEFUL)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks/target/classes\n    INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    INFO - Auto-deploying ejb CallbackCounter: EjbDeployment(deployment-id=CallbackCounter)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.counter.CounterCallbacksTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Enterprise application \"/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\" loaded.\n    INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    INFO - Jndi(name=\"java:global/simple-stateful-callbacks/CallbackCounter!org.superbiz.counter.CallbackCounter\")\n    INFO - Jndi(name=\"java:global/simple-stateful-callbacks/CallbackCounter\")\n    INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points are validated successfully.\n    INFO - OpenWebBeans Container has started, it took 225 ms.\n    INFO - Created Ejb(deployment-id=CallbackCounter, ejb-name=CallbackCounter, container=MySTATEFUL)\n    INFO - Started Ejb(deployment-id=CallbackCounter, ejb-name=CallbackCounter, container=MySTATEFUL)\n    INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks)\n    Test step -> postConstruct\n    Test step -> count\n    Test step -> increment\n    Test step -> reset\n    Test step -> increment\n    Waiting 2 seconds...\n    Test step -> preDestroy\n    INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-8000\n    INFO - Activation failed: file not found /tmp/583c10bfdbd326ba=57f94a9b=138a9798adf=-8000\n    Test step -> postConstruct\n    Test step -> increment\n    Test step -> postConstruct\n    Test step -> count\n    Test step -> postConstruct\n    Test step -> count\n    Waiting 2 seconds...\n    Test step -> prePassivate\n    INFO - Passivating to file /tmp/583c10bfdbd326ba=57f94a9b=138a9798adf=-7fff\n    Test step -> preDestroy\n    INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-7ffe\n    Test step -> preDestroy\n    INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-7ffd\n    INFO - Undeploying app: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.487 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n    [INFO] ------------------------------------------------------------------------\n    [INFO] BUILD SUCCESS\n    [INFO] ------------------------------------------------------------------------\n    [INFO] Total time: 15.803s\n    [INFO] Finished at: Sat Jul 21 08:18:35 EDT 2012\n    [INFO] Final Memory: 11M/247M\n    [INFO] ------------------------------------------------------------------------\n\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-stateful-callbacks"
+      },
+      {
+        "name":"simple-stateful",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-stateful"
+      }
+    ],
+    "stateless":[
+      {
+        "name":"simple-stateless-with-descriptor",
+        "readme":"Title: Simple Stateless with Descriptor\n\nThis test is similar to simple-stateless, with two major differences. In this case all the classes are regular POJOs without annotations.\nThe EJB-specific metadata is provided via an XML descriptor. The second difference is the explicite use of Local and Remote interfaces. \n\n## CalculatorImpl\n\n    package org.superbiz.calculator;\n    \n    /**\n     * This is an EJB 3 stateless session bean, configured using an EJB 3\n     * deployment descriptor as opposed to using annotations.\n     * This EJB has 2 business interfaces: CalculatorRemote, a remote business\n     * interface, and CalculatorLocal, a local business interface\n     */\n    public class CalculatorImpl implements CalculatorRemote, CalculatorLocal {\n    \n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## CalculatorLocal\n\n    package org.superbiz.calculator;\n    \n    /**\n     * This is an EJB 3 local business interface\n     * This interface is specified using the business-local tag in the deployment descriptor\n     */\n    public interface CalculatorLocal {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## CalculatorRemote\n\n    package org.superbiz.calculator;\n    \n    \n    /**\n     * This is an EJB 3 remote business interface\n     * This interface is specified using the business-local tag in the deployment descriptor\n     */\n    public interface CalculatorRemote {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## ejb-jar.xml\n\nThe XML descriptor defines the EJB class and both local and remote interfaces.\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\"\n             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n             version=\"3.0\">\n      <enterprise-beans>\n        <session>\n          <ejb-name>CalculatorImpl</ejb-name>\n          <business-local>org.superbiz.calculator.CalculatorLocal</business-local>\n          <business-remote>org.superbiz.calculator.CalculatorRemote</business-remote>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n      </enterprise-beans>\n    </ejb-jar>\n\n    \n\n## CalculatorTest\n\nTwo tests obtain a Local and Remote interface to the bean instance. This time an `InitialContext` object is directly created, \nas opposed to getting the context from `EJBContainer`, as we did in the previous example. \n\n    package org.superbiz.calculator;\n    \n    import junit.framework.TestCase;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import java.util.Properties;\n    \n    public class CalculatorTest extends TestCase {\n    \n        private InitialContext initialContext;\n    \n        protected void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n    \n            initialContext = new InitialContext(properties);\n        }\n\n        /**\n         * Lookup the Calculator bean via its remote home interface\n         *\n         * @throws Exception\n         */\n        public void testCalculatorViaRemoteInterface() throws Exception {\n            Object object = initialContext.lookup(\"CalculatorImplRemote\");\n    \n            assertNotNull(object);\n            assertTrue(object instanceof CalculatorRemote);\n            CalculatorRemote calc = (CalculatorRemote) object;\n            assertEquals(10, calc.sum(4, 6));\n            assertEquals(12, calc.multiply(3, 4));\n        }\n\n        /**\n         * Lookup the Calculator bean via its local home interface\n         *\n         * @throws Exception\n         */\n        public void testCalculatorViaLocalInterface() throws Exception {\n            Object object = initialContext.lookup(\"CalculatorImplLocal\");\n    \n            assertNotNull(object);\n            assertTrue(object instanceof CalculatorLocal);\n            CalculatorLocal calc = (CalculatorLocal) object;\n            assertEquals(10, calc.sum(4, 6));\n            assertEquals(12, calc.multiply(3, 4));\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.CalculatorTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/simple-stateless-with-descriptor\n    INFO - openejb.base = /Users/dblevins/examples/simple-stateless-with-descriptor\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-stateless-with-descriptor/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/simple-stateless-with-descriptor/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean CalculatorImpl: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear\n    INFO - Jndi(name=CalculatorImplLocal) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl!org.superbiz.calculator.CalculatorLocal) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear)\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.475 sec\n    \n    Results :\n    \n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-stateless-with-descriptor"
+      },
+      {
+        "name":"simple-stateless",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-stateless"
+      },
+      {
+        "name":"simple-stateless-callbacks",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-stateless-callbacks"
+      }
+    ],
+    "stereotypes":[
+      {
+        "name":"cdi-alternative-and-stereotypes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes"
+      }
+    ],
+    "struts":[
+      {
+        "name":"struts",
+        "readme":"Title: Struts\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AddUser\n\n    package org.superbiz.struts;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import java.util.Properties;\n    \n    \n    public class AddUser {\n    \n        private int id;\n        private String firstName;\n        private String lastName;\n        private String errorMessage;\n    \n    \n        public String getFirstName() {\n            return firstName;\n        }\n    \n        public void setFirstName(String firstName) {\n            this.firstName = firstName;\n        }\n    \n        public String getLastName() {\n            return lastName;\n        }\n    \n        public void setLastName(String lastName) {\n            this.lastName = lastName;\n        }\n    \n        public String getErrorMessage() {\n            return errorMessage;\n        }\n    \n        public void setErrorMessage(String errorMessage) {\n            this.errorMessage = errorMessage;\n        }\n    \n        public int getId() {\n            return id;\n        }\n    \n        public void setId(int id) {\n            this.id = id;\n        }\n    \n        public String execute() {\n    \n            try {\n                UserService service = null;\n                Properties props = new Properties();\n                props.put(Context.INITIAL_CONTEXT_FACTORY,\n                        \"org.apache.openejb.core.LocalInitialContextFactory\");\n                Context ctx = new InitialContext(props);\n                service = (UserService) ctx.lookup(\"UserServiceImplLocal\");\n                service.add(new User(id, firstName, lastName));\n            } catch (Exception e) {\n                this.errorMessage = e.getMessage();\n                return \"failure\";\n            }\n    \n            return \"success\";\n        }\n    }\n\n## AddUserForm\n\n    package org.superbiz.struts;\n    \n    import com.opensymphony.xwork2.ActionSupport;\n    \n    \n    public class AddUserForm extends ActionSupport {\n    }\n\n## FindUser\n\n    package org.superbiz.struts;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import java.util.Properties;\n    \n    public class FindUser {\n    \n        private int id;\n        private String errorMessage;\n        private User user;\n    \n        public User getUser() {\n            return user;\n        }\n    \n        public void setUser(User user) {\n            this.user = user;\n        }\n    \n        public String getErrorMessage() {\n            return errorMessage;\n        }\n    \n        public void setErrorMessage(String errorMessage) {\n            this.errorMessage = errorMessage;\n        }\n    \n        public int getId() {\n            return id;\n        }\n    \n        public void setId(int id) {\n            this.id = id;\n        }\n    \n        public String execute() {\n    \n            try {\n                UserService service = null;\n                Properties props = new Properties();\n                props.put(Context.INITIAL_CONTEXT_FACTORY,\n                        \"org.apache.openejb.core.LocalInitialContextFactory\");\n                Context ctx = new InitialContext(props);\n                service = (UserService) ctx.lookup(\"UserServiceImplLocal\");\n                this.user = service.find(id);\n            } catch (Exception e) {\n                this.errorMessage = e.getMessage();\n                return \"failure\";\n            }\n    \n            return \"success\";\n        }\n    }\n\n## FindUserForm\n\n    package org.superbiz.struts;\n    \n    import com.opensymphony.xwork2.ActionSupport;\n    \n    \n    public class FindUserForm extends ActionSupport {\n    }\n\n## ListAllUsers\n\n    package org.superbiz.struts;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import java.util.List;\n    import java.util.Properties;\n    \n    public class ListAllUsers {\n    \n        private int id;\n        private String errorMessage;\n        private List<User> users;\n    \n        public List<User> getUsers() {\n            return users;\n        }\n    \n        public void setUsers(List<User> users) {\n            this.users = users;\n        }\n    \n        public String getErrorMessage() {\n            return errorMessage;\n        }\n    \n        public void setErrorMessage(String errorMessage) {\n            this.errorMessage = errorMessage;\n        }\n    \n        public int getId() {\n            return id;\n        }\n    \n        public void setId(int id) {\n            this.id = id;\n        }\n    \n        public String execute() {\n    \n            try {\n                UserService service = null;\n                Properties props = new Properties();\n                props.put(Context.INITIAL_CONTEXT_FACTORY,\n                        \"org.apache.openejb.core.LocalInitialContextFactory\");\n                Context ctx = new InitialContext(props);\n                service = (UserService) ctx.lookup(\"UserServiceImplLocal\");\n                this.users = service.findAll();\n            } catch (Exception e) {\n                this.errorMessage = e.getMessage();\n                return \"failure\";\n            }\n    \n            return \"success\";\n        }\n    }\n\n## User\n\n    package org.superbiz.struts;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.Id;\n    import javax.persistence.Table;\n    import java.io.Serializable;\n    \n    @Entity\n    @Table(name = \"USER\")\n    public class User implements Serializable {\n        private long id;\n        private String firstName;\n        private String lastName;\n    \n        public User(long id, String firstName, String lastName) {\n            super();\n            this.id = id;\n            this.firstName = firstName;\n            this.lastName = lastName;\n        }\n    \n        public User() {\n        }\n    \n        @Id\n        public long getId() {\n            return id;\n        }\n    \n        public void setId(long id) {\n            this.id = id;\n        }\n    \n        public String getFirstName() {\n            return firstName;\n        }\n    \n        public void setFirstName(String firstName) {\n            this.firstName = firstName;\n        }\n    \n        public String getLastName() {\n            return lastName;\n        }\n    \n        public void setLastName(String lastName) {\n            this.lastName = lastName;\n        }\n    }\n\n## UserService\n\n    package org.superbiz.struts;\n    \n    import java.util.List;\n    \n    public interface UserService {\n        public void add(User user);\n    \n        public User find(int id);\n    \n        public List<User> findAll();\n    }\n\n## UserServiceImpl\n\n    package org.superbiz.struts;\n    \n    import javax.ejb.Stateless;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import java.util.List;\n    \n    @Stateless\n    public class UserServiceImpl implements UserService {\n    \n        @PersistenceContext(unitName = \"user\")\n        private EntityManager manager;\n    \n        public void add(User user) {\n            manager.persist(user);\n        }\n    \n        public User find(int id) {\n            return manager.find(User.class, id);\n        }\n    \n        public List<User> findAll() {\n            return manager.createQuery(\"select u from User u\").getResultList();\n        }\n    }\n\n## persistence.xml\n\n    </persistence-unit>\n    \n      -->\n    </persistence>\n\n## struts.xml\n\n    <struts>\n      <constant name=\"struts.devMode\" value=\"true\"></constant>\n      <package name=\"default\" namespace=\"/\" extends=\"struts-default\">\n        <action name=\"addUserForm\" class=\"org.superbiz.struts.AddUserForm\">\n          <result>/addUserForm.jsp</result>\n        </action>\n        <action name=\"addUser\" class=\"org.superbiz.struts.AddUser\">\n          <result name=\"success\">/addedUser.jsp</result>\n          <result name='failure'>/addUserForm.jsp</result>\n        </action>\n        <action name=\"findUserForm\" class=\"org.superbiz.struts.FindUserForm\">\n          <result>/findUserForm.jsp</result>\n        </action>\n        <action name=\"findUser\" class=\"org.superbiz.struts.FindUser\">\n          <result name='success'>/displayUser.jsp</result>\n          <result name='failure'>/findUserForm.jsp</result>\n        </action>\n        <action name=\"listAllUsers\" class=\"org.superbiz.struts.ListAllUsers\">\n          <result>/displayUsers.jsp</result>\n        </action>\n    \n      </package>\n    </struts>\n\n## decorators.xml\n\n    <decorators defaultdir=\"/decorators\">\n      <decorator name=\"main\" page=\"layout.jsp\">\n        <pattern>/*</pattern>\n      </decorator>\n    </decorators>\n\n## web.xml\n\n    <web-app xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n             version=\"2.5\">\n      <display-name>Learn EJB3 and Struts2</display-name>\n      <filter>\n        <filter-name>struts2</filter-name>\n        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>\n        <init-param>\n          <param-name>actionPackages</param-name>\n          <param-value>com.lq</param-value>\n        </init-param>\n      </filter>\n      <filter>\n        <filter-name>struts-cleanup</filter-name>\n        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>\n      </filter>\n      <filter>\n        <filter-name>sitemesh</filter-name>\n        <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>\n      </filter>\n      <filter-mapping>\n        <filter-name>struts-cleanup</filter-name>\n        <url-pattern>/*</url-pattern>\n      </filter-mapping>\n      <filter-mapping>\n        <filter-name>sitemesh</filter-name>\n        <url-pattern>/*</url-pattern>\n      </filter-mapping>\n      <filter-mapping>\n        <filter-name>struts2</filter-name>\n        <url-pattern>/*</url-pattern>\n      </filter-mapping>\n      <welcome-file-list>\n        <welcome-file>index.jsp</welcome-file>\n      </welcome-file-list>\n      <jsp-config>\n        <jsp-property-group>\n          <description>JSP configuration of all the JSP's</description>\n          <url-pattern>*.jsp</url-pattern>\n          <include-prelude>/prelude.jspf</include-prelude>\n        </jsp-property-group>\n      </jsp-config>\n    </web-app>\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/struts"
+      }
+    ],
+    "telephone":[
+      {
+        "name":"telephone-stateful",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/telephone-stateful"
+      }
+    ],
+    "testcase":[
+      {
+        "name":"testcase-injection",
+        "readme":"Title: Testcase Injection\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.testinjection;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.testinjection;\n    \n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    import static javax.ejb.TransactionAttributeType.MANDATORY;\n    \n    //START SNIPPET: code\n    @Stateful\n    @TransactionAttribute(MANDATORY)\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.testinjection.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.testinjection;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.transaction.UserTransaction;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @Resource\n        private UserTransaction userTransaction;\n    \n        @PersistenceContext\n        private EntityManager entityManager;\n    \n        public void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        public void test() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n    \n                for (Movie movie : list) {\n                    movies.deleteMovie(movie);\n                }\n    \n                assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n            } finally {\n                userTransaction.commit();\n            }\n    \n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.testinjection.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testcase-injection\n    INFO - openejb.base = /Users/dblevins/examples/testcase-injection\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testcase-injection/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testcase-injection/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testcase-injection\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.testinjection.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testcase-injection\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testcase-injection\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 408ms\n    INFO - Jndi(name=\"java:global/testcase-injection/Movies!org.superbiz.testinjection.Movies\")\n    INFO - Jndi(name=\"java:global/testcase-injection/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1583515396/org.superbiz.testinjection.MoviesTest!org.superbiz.testinjection.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1583515396/org.superbiz.testinjection.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.testinjection.MoviesTest, ejb-name=org.superbiz.testinjection.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.testinjection.MoviesTest, ejb-name=org.superbiz.testinjection.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testcase-injection)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.24 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testcase-injection"
+      }
+    ],
+    "testing":[
+      {
+        "name":"testing-security",
+        "readme":"Title: Testing Security\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection.secure;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.secure;\n    \n    //START SNIPPET: code\n    \n    import javax.annotation.security.PermitAll;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        @RolesAllowed({\"Employee\", \"Manager\"})\n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        @RolesAllowed({\"Manager\"})\n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        @PermitAll\n        @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.secure.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MovieTest\n\n    package org.superbiz.injection.secure;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.security.RunAs;\n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.ejb.Stateless;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.List;\n    import java.util.Properties;\n    import java.util.concurrent.Callable;\n    \n    //START SNIPPET: code\n    \n    public class MovieTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @EJB(name = \"ManagerBean\")\n        private Caller manager;\n    \n        @EJB(name = \"EmployeeBean\")\n        private Caller employee;\n    \n        protected void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        public void testAsManager() throws Exception {\n            manager.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        movies.deleteMovie(movie);\n                    }\n    \n                    assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testAsEmployee() throws Exception {\n            employee.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        try {\n                            movies.deleteMovie(movie);\n                            fail(\"Employees should not be allowed to delete\");\n                        } catch (EJBAccessException e) {\n                            // Good, Employees cannot delete things\n                        }\n                    }\n    \n                    // The list should still be three movies long\n                    assertEquals(\"Movies.getMovies()\", 3, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testUnauthenticated() throws Exception {\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                fail(\"Unauthenticated users should not be able to add movies\");\n            } catch (EJBAccessException e) {\n                // Good, guests cannot add things\n            }\n    \n            try {\n                movies.deleteMovie(null);\n                fail(\"Unauthenticated users should not be allowed to delete\");\n            } catch (EJBAccessException e) {\n                // Good, Unauthenticated users cannot delete things\n            }\n    \n            try {\n                // Read access should be allowed\n    \n                List<Movie> list = movies.getMovies();\n            } catch (EJBAccessException e) {\n                fail(\"Read access should be allowed\");\n            }\n        }\n    \n    \n        public static interface Caller {\n            public <V> V call(Callable<V> callable) throws Exception;\n        }\n    \n        /**\n         * This little bit of magic allows our test code to execute in\n         * the desired security scope.\n         */\n    \n        @Stateless\n        @RunAs(\"Manager\")\n        public static class ManagerBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    \n        @Stateless\n        @RunAs(\"Employee\")\n        public static class EmployeeBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.secure.MovieTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testing-security\n    INFO - openejb.base = /Users/dblevins/examples/testing-security\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testing-security\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean ManagerBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testing-security\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testing-security\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 405ms\n    INFO - Jndi(name=\"java:global/testing-security/Movies!org.superbiz.injection.secure.Movies\")\n    INFO - Jndi(name=\"java:global/testing-security/Movies\")\n    INFO - Jndi(name=\"java:global/testing-security/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security/ManagerBean\")\n    INFO - Jndi(name=\"java:global/testing-security/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security/EmployeeBean\")\n    INFO - Jndi(name=\"java:global/EjbModule26174809/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest\")\n    INFO - Jndi(name=\"java:global/EjbModule26174809/org.superbiz.injection.secure.MovieTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testing-security)\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.574 sec\n    \n    Results :\n    \n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security"
+      },
+      {
+        "name":"testing-security-meta",
+        "readme":"Title: Testing Security Meta\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AddPermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RolesAllowed;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface AddPermission {\n        public static interface $ {\n    \n            @AddPermission\n            @RolesAllowed({\"Employee\", \"Manager\"})\n            public void method();\n        }\n    }\n\n## DeletePermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RolesAllowed;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface DeletePermission {\n        public static interface $ {\n    \n            @DeletePermission\n            @RolesAllowed(\"Manager\")\n            public void method();\n        }\n    }\n\n## Metatype\n\n    package org.superbiz.injection.secure.api;\n    \n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    @Metatype\n    @Target(ElementType.ANNOTATION_TYPE)\n    @Retention(RetentionPolicy.RUNTIME)\n    public @interface Metatype {\n    }\n\n## MovieUnit\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.METHOD, ElementType.FIELD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @PersistenceContext(name = \"movie-unit\", unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n    public @interface MovieUnit {\n    }\n\n## ReadPermission\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.PermitAll;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target(ElementType.METHOD)\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    public @interface ReadPermission {\n        public static interface $ {\n    \n            @ReadPermission\n            @PermitAll\n            @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n            public void method();\n        }\n    }\n\n## RunAsEmployee\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RunAs;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.TYPE, ElementType.METHOD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @RunAs(\"Employee\")\n    public @interface RunAsEmployee {\n    }\n\n## RunAsManager\n\n    package org.superbiz.injection.secure.api;\n    \n    import javax.annotation.security.RunAs;\n    import java.lang.annotation.ElementType;\n    import java.lang.annotation.Retention;\n    import java.lang.annotation.RetentionPolicy;\n    import java.lang.annotation.Target;\n    \n    \n    @Metatype\n    @Target({ElementType.TYPE, ElementType.METHOD})\n    @Retention(RetentionPolicy.RUNTIME)\n    \n    @RunAs(\"Manager\")\n    public @interface RunAsManager {\n    }\n\n## Movie\n\n    package org.superbiz.injection.secure;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.secure;\n    \n    //START SNIPPET: code\n    \n    import org.superbiz.injection.secure.api.AddPermission;\n    import org.superbiz.injection.secure.api.DeletePermission;\n    import org.superbiz.injection.secure.api.MovieUnit;\n    import org.superbiz.injection.secure.api.ReadPermission;\n    \n    import javax.ejb.Stateful;\n    import javax.persistence.EntityManager;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @MovieUnit\n        private EntityManager entityManager;\n    \n        @AddPermission\n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        @DeletePermission\n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        @ReadPermission\n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.secure.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MovieTest\n\n    package org.superbiz.injection.secure;\n    \n    import junit.framework.TestCase;\n    import org.superbiz.injection.secure.api.RunAsEmployee;\n    import org.superbiz.injection.secure.api.RunAsManager;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.ejb.Stateless;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.List;\n    import java.util.Properties;\n    import java.util.concurrent.Callable;\n    \n    //START SNIPPET: code\n    \n    public class MovieTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @EJB(beanName = \"ManagerBean\")\n        private Caller manager;\n    \n        @EJB(beanName = \"EmployeeBean\")\n        private Caller employee;\n    \n        protected void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        public void testAsManager() throws Exception {\n            manager.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        movies.deleteMovie(movie);\n                    }\n    \n                    assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testAsEmployee() throws Exception {\n            employee.call(new Callable() {\n                public Object call() throws Exception {\n    \n                    movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                    movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                    List<Movie> list = movies.getMovies();\n                    assertEquals(\"List.size()\", 3, list.size());\n    \n                    for (Movie movie : list) {\n                        try {\n                            movies.deleteMovie(movie);\n                            fail(\"Employees should not be allowed to delete\");\n                        } catch (EJBAccessException e) {\n                            // Good, Employees cannot delete things\n                        }\n                    }\n    \n                    // The list should still be three movies long\n                    assertEquals(\"Movies.getMovies()\", 3, movies.getMovies().size());\n                    return null;\n                }\n            });\n        }\n    \n        public void testUnauthenticated() throws Exception {\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                fail(\"Unauthenticated users should not be able to add movies\");\n            } catch (EJBAccessException e) {\n                // Good, guests cannot add things\n            }\n    \n            try {\n                movies.deleteMovie(null);\n                fail(\"Unauthenticated users should not be allowed to delete\");\n            } catch (EJBAccessException e) {\n                // Good, Unauthenticated users cannot delete things\n            }\n    \n            try {\n                // Read access should be allowed\n    \n                List<Movie> list = movies.getMovies();\n            } catch (EJBAccessException e) {\n                fail(\"Read access should be allowed\");\n            }\n        }\n    \n        public interface Caller {\n            public <V> V call(Callable<V> callable) throws Exception;\n        }\n    \n        /**\n         * This little bit of magic allows our test code to execute in\n         * the desired security scope.\n         */\n    \n        @Stateless\n        @RunAsManager\n        public static class ManagerBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    \n        @Stateless\n        @RunAsEmployee\n        public static class EmployeeBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.secure.MovieTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testing-security-meta\n    INFO - openejb.base = /Users/dblevins/examples/testing-security-meta\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-meta/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-meta/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security-meta/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-security-meta/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testing-security-meta\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean ManagerBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testing-security-meta\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testing-security-meta\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 419ms\n    INFO - Jndi(name=\"java:global/testing-security-meta/Movies!org.superbiz.injection.secure.Movies\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/Movies\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/ManagerBean\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-security-meta/EmployeeBean\")\n    INFO - Jndi(name=\"java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest\")\n    INFO - Jndi(name=\"java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testing-security-meta)\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.754 sec\n    \n    Results :\n    \n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-meta"
+      },
+      {
+        "name":"testing-security-3",
+        "readme":"Title: Testing Security 3\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection.secure;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.secure;\n    \n    //START SNIPPET: code\n    \n    import javax.annotation.security.PermitAll;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.TransactionAttributeType;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    @Stateful\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.EXTENDED)\n        private EntityManager entityManager;\n    \n        @RolesAllowed({\"Employee\", \"Manager\"})\n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        @RolesAllowed({\"Manager\"})\n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        @PermitAll\n        @TransactionAttribute(TransactionAttributeType.SUPPORTS)\n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## MyLoginProvider\n\n    package org.superbiz.injection.secure;\n\n    import org.apache.openejb.core.security.jaas.LoginProvider;\n\n    import javax.security.auth.login.FailedLoginException;\n    import java.util.Arrays;\n    import java.util.List;\n\n    public class MyLoginProvider implements LoginProvider {\n\n\n        @Override\n        public List<String> authenticate(String user, String password) throws FailedLoginException {\n            if (\"paul\".equals(user) && \"michelle\".equals(password)) {\n                return Arrays.asList(\"Manager\", \"rockstar\", \"beatle\");\n            }\n\n            if (\"eddie\".equals(user) && \"jump\".equals(password)) {\n                return Arrays.asList(\"Employee\", \"rockstar\", \"vanhalen\");\n            }\n\n            throw new FailedLoginException(\"Bad user or password!\");\n        }\n    }\n\n## org.apache.openejb.core.security.jaas.LoginProvider\n\n    org.superbiz.injection.secure.MyLoginProvider\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.secure.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MovieTest\n\n    package org.superbiz.injection.secure;\n\n    import junit.framework.TestCase;\n\n    import javax.ejb.EJB;\n    import javax.ejb.EJBAccessException;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.naming.NamingException;\n    import java.util.List;\n    import java.util.Properties;\n\n    public class MovieTest extends TestCase {\n\n        @EJB\n        private Movies movies;\n\n        private Context getContext(String user, String pass) throws NamingException {\n            Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            p.setProperty(\"openejb.authentication.realmName\", \"ServiceProviderLogin\");\n            p.put(Context.SECURITY_PRINCIPAL, user);\n            p.put(Context.SECURITY_CREDENTIALS, pass);\n\n            return new InitialContext(p);\n        }\n\n        protected void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n\n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n\n        public void testAsManager() throws Exception {\n            final Context context = getContext(\"paul\", \"michelle\");\n\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n\n                for (Movie movie : list) {\n                    movies.deleteMovie(movie);\n                }\n\n                assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n            } finally {\n                context.close();\n            }\n        }\n\n        public void testAsEmployee() throws Exception {\n            final Context context = getContext(\"eddie\", \"jump\");\n\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n\n                for (Movie movie : list) {\n                    try {\n                        movies.deleteMovie(movie);\n                        fail(\"Employees should not be allowed to delete\");\n                    } catch (EJBAccessException e) {\n                        // Good, Employees cannot delete things\n                    }\n                }\n\n                // The list should still be three movies long\n                assertEquals(\"Movies.getMovies()\", 3, movies.getMovies().size());\n            } finally {\n                context.close();\n            }\n        }\n\n        public void testUnauthenticated() throws Exception {\n            try {\n                movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                fail(\"Unauthenticated users should not be able to add movies\");\n            } catch (EJBAccessException e) {\n                // Good, guests cannot add things\n            }\n\n            try {\n                movies.deleteMovie(null);\n                fail(\"Unauthenticated users should not be allowed to delete\");\n            } catch (EJBAccessException e) {\n                // Good, Unauthenticated users cannot delete things\n            }\n\n            try {\n                // Read access should be allowed\n\n                List<Movie> list = movies.getMovies();\n\n            } catch (EJBAccessException e) {\n                fail(\"Read access should be allowed\");\n            }\n\n        }\n\n        public void testLoginFailure() throws NamingException {\n            try {\n                getContext(\"eddie\", \"panama\");\n                fail(\"supposed to have a login failure here\");\n            } catch (javax.naming.AuthenticationException e) {\n                //expected\n            }\n\n            try {\n                getContext(\"jimmy\", \"foxylady\");\n                fail(\"supposed to have a login failure here\");\n            } catch (javax.naming.AuthenticationException e) {\n                //expected\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.secure.MovieTest\n    INFO - ********************************************************************************\n    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Fri Jul 20 08:42:53 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 20120720\n    INFO - Build time: 08:33\n    INFO - ********************************************************************************\n    INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\n    INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@38ee6681\n    INFO - Succeeded in installing singleton service\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Creating Resource(id=movieDatabase)\n    INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3/target/classes\n    INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\n    INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Creating Container(id=Default Stateful Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Creating Resource(id=movieDatabaseNonJta)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\" loaded.\n    INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3\n    SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested installation of a ClassFileTransformer which requires a JavaAgent.  See http://tomee.apache.org/3.0/javaagent.html\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 268ms\n    INFO - Jndi(name=\"java:global/testing-security-3/Movies!org.superbiz.injection.secure.Movies\")\n    INFO - Jndi(name=\"java:global/testing-security-3/Movies\")\n    INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@38ee6681\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points are validated successfully.\n    INFO - OpenWebBeans Container has started, it took 170 ms.\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3)\n    20-Jul-2012 8:42:55 AM null openjpa.Runtime\n    INFO: Starting OpenJPA 2.2.0\n    20-Jul-2012 8:42:56 AM null openjpa.jdbc.JDBC\n    INFO: Using dictionary class \"org.apache.openjpa.jdbc.sql.HSQLDictionary\" (HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).\n    20-Jul-2012 8:42:57 AM null openjpa.Enhance\n    INFO: Creating subclass and redefining methods for \"[class org.superbiz.injection.secure.Movie]\". This means that your application will be less efficient than it would if you ran the OpenJPA enhancer.\n    INFO - Logging in\n    INFO - Logging out\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    INFO - Logging in\n    INFO - Logging out\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.069 sec\n\n    Results :\n\n    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-3"
+      },
+      {
+        "name":"testing-security-4",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-4"
+      },
+      {
+        "name":"ear-testing",
+        "readme":"Title: EAR Testing\n\nThe goal of this example is to demonstrate how maven projects might be organized in a more real world style and how testing with OpenEJB can fit into that structure.\n\nThis example takes the basic moviefun code we us in many of examples and splits it into two modules:\n\n - `business-logic`\n - `business-model`\n\nAs the names imply, we keep our `@Entity` beans in the `business-model` module and our session beans in the `business-logic` model.  The tests located and run from the business logic module.\n\n    ear-testing\n    ear-testing/business-logic\n    ear-testing/business-logic/pom.xml\n    ear-testing/business-logic/src/main/java/org/superbiz/logic/Movies.java\n    ear-testing/business-logic/src/main/java/org/superbiz/logic/MoviesImpl.java\n    ear-testing/business-logic/src/main/resources\n    ear-testing/business-logic/src/main/resources/META-INF\n    ear-testing/business-logic/src/main/resources/META-INF/ejb-jar.xml\n    ear-testing/business-logic/src/test/java/org/superbiz/logic/MoviesTest.java\n    ear-testing/business-model\n    ear-testing/business-model/pom.xml\n    ear-testing/business-model/src/main/java/org/superbiz/model/Movie.java\n    ear-testing/business-model/src/main/resources/META-INF/persistence.xml\n    ear-testing/pom.xml\n\n# Project configuration\n\nThe parent pom, trimmed to the minimum, looks like so:\n\n    <project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n      <modelVersion>4.0.0</modelVersion>\n      <groupId>org.superbiz</groupId>\n      <artifactId>myear</artifactId>\n      <version>1.1.0-SNAPSHOT</version>\n\n      <packaging>pom</packaging>\n\n      <modules>\n        <module>business-model</module>\n        <module>business-logic</module>\n      </modules>\n\n      <dependencyManagement>\n        <dependencies>\n          <dependency>\n            <groupId>org.apache.openejb</groupId>\n            <artifactId>javaee-api</artifactId>\n            <version>6.0-2</version>\n          </dependency>\n          <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.8.1</version>\n          </dependency>\n        </dependencies>\n      </dependencyManagement>\n    </project>\n\nThe `business-model/pom.xml` as follows:\n\n    <project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n      <parent>\n        <groupId>org.superbiz</groupId>\n        <artifactId>myear</artifactId>\n        <version>1.1.0-SNAPSHOT</version>\n      </parent>\n\n      <modelVersion>4.0.0</modelVersion>\n\n      <artifactId>business-model</artifactId>\n      <packaging>jar</packaging>\n\n      <dependencies>\n        <dependency>\n          <groupId>org.apache.openejb</groupId>\n          <artifactId>javaee-api</artifactId>\n          <scope>provided</scope>\n        </dependency>\n        <dependency>\n          <groupId>junit</groupId>\n          <artifactId>junit</artifactId>\n          <scope>test</scope>\n        </dependency>\n\n      </dependencies>\n\n    </project>\n\nAnd finally, the `business-logic/pom.xml` which is setup to support embedded testing with OpenEJB:\n\n    <project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n      <parent>\n        <groupId>org.superbiz</groupId>\n        <artifactId>myear</artifactId>\n        <version>1.1.0-SNAPSHOT</version>\n      </parent>\n\n      <modelVersion>4.0.0</modelVersion>\n\n      <artifactId>business-logic</artifactId>\n      <packaging>jar</packaging>\n\n      <dependencies>\n        <dependency>\n          <groupId>org.superbiz</groupId>\n          <artifactId>business-model</artifactId>\n          <version>${project.version}</version>\n        </dependency>\n        <dependency>\n          <groupId>org.apache.openejb</groupId>\n          <artifactId>javaee-api</artifactId>\n          <scope>provided</scope>\n        </dependency>\n        <dependency>\n          <groupId>junit</groupId>\n          <artifactId>junit</artifactId>\n          <scope>test</scope>\n        </dependency>\n        <!--\n        The <scope>test</scope> guarantees that non of your runtime\n        code is dependent on any OpenEJB classes.\n        -->\n        <dependency>\n          <groupId>org.apache.openejb</groupId>\n          <artifactId>openejb-core</artifactId>\n          <version>7.0.0-SNAPSHOT</version>\n          <scope>test</scope>\n        </dependency>\n      </dependencies>\n    </project>\n\n# TestCode\n\nThe test code is the same as always:\n\n    public class MoviesTest extends TestCase {\n\n        public void test() throws Exception {\n            Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n\n            p.put(\"openejb.deployments.classpath.ear\", \"true\");\n\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n\n            p.put(\"movieDatabaseUnmanaged\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabaseUnmanaged.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabaseUnmanaged.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n            p.put(\"movieDatabaseUnmanaged.JtaManaged\", \"false\");\n\n            Context context = new InitialContext(p);\n\n            Movies movies = (Movies) context.lookup(\"MoviesLocal\");\n\n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n\n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n\n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    }\n\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.logic.MoviesTest\n    Apache OpenEJB 7.0.0-SNAPSHOT    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/ear-testing/business-logic\n    INFO - openejb.base = /Users/dblevins/examples/ear-testing/business-logic\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found PersistenceModule in classpath: /Users/dblevins/examples/ear-testing/business-model/target/business-model-1.0.jar\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/ear-testing/business-logic/target/classes\n    INFO - Using 'openejb.deployments.classpath.ear=true'\n    INFO - Beginning load: /Users/dblevins/examples/ear-testing/business-model/target/business-model-1.0.jar\n    INFO - Beginning load: /Users/dblevins/examples/ear-testing/business-logic/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/ear-testing/business-logic/classpath.ear\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Enterprise application \"/Users/dblevins/examples/ear-testing/business-logic/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/ear-testing/business-logic/classpath.ear\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 415ms\n    INFO - Jndi(name=MoviesLocal) --> Ejb(deployment-id=Movies)\n    INFO - Jndi(name=global/classpath.ear/business-logic/Movies!org.superbiz.logic.Movies) --> Ejb(deployment-id=Movies)\n    INFO - Jndi(name=global/classpath.ear/business-logic/Movies) --> Ejb(deployment-id=Movies)\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/ear-testing/business-logic/classpath.ear)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.393 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/ear-testing"
+      },
+      {
+        "name":"testing-transactions",
+        "readme":"Title: Testing Transactions\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection.tx;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.tx;\n    \n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    import static javax.ejb.TransactionAttributeType.MANDATORY;\n    \n    //START SNIPPET: code\n    @Stateful(name = \"Movies\")\n    @TransactionAttribute(MANDATORY)\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.tx.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.injection.tx;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.Stateless;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.List;\n    import java.util.Properties;\n    import java.util.concurrent.Callable;\n    \n    import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;\n    \n    /**\n     * See the transaction-rollback example as it does the same thing\n     * via UserTransaction and shows more techniques for rollback \n     */\n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @EJB\n        private Caller transactionalCaller;\n    \n        protected void setUp() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        private void doWork() throws Exception {\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    \n        public void testWithTransaction() throws Exception {\n            transactionalCaller.call(new Callable() {\n                public Object call() throws Exception {\n                    doWork();\n                    return null;\n                }\n            });\n        }\n    \n        public void testWithoutTransaction() throws Exception {\n            try {\n                doWork();\n                fail(\"The Movies bean should be using TransactionAttributeType.MANDATORY\");\n            } catch (javax.ejb.EJBTransactionRequiredException e) {\n                // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want\n            }\n        }\n    \n    \n        public static interface Caller {\n            public <V> V call(Callable<V> callable) throws Exception;\n        }\n    \n        /**\n         * This little bit of magic allows our test code to execute in\n         * the scope of a container controlled transaction.\n         */\n        @Stateless\n        @TransactionAttribute(REQUIRES_NEW)\n        public static class TransactionBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.tx.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testing-transactions\n    INFO - openejb.base = /Users/dblevins/examples/testing-transactions\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-transactions/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-transactions/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-transactions/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-transactions/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testing-transactions\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testing-transactions\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testing-transactions\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 406ms\n    INFO - Jndi(name=\"java:global/testing-transactions/Movies!org.superbiz.injection.tx.Movies\")\n    INFO - Jndi(name=\"java:global/testing-transactions/Movies\")\n    INFO - Jndi(name=\"java:global/testing-transactions/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-transactions/TransactionBean\")\n    INFO - Jndi(name=\"java:global/EjbModule2036741132/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule2036741132/org.superbiz.injection.tx.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testing-transactions)\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.403 sec\n    \n    Results :\n    \n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-transactions"
+      },
+      {
+        "name":"testing-transactions-bmt",
+        "readme":"Title: Testing Transactions BMT\n\nShows how to begin, commit and rollback transactions using a UserTransaction via a Stateful Bean.\n\n## Movie\n\n    package org.superbiz.injection.tx;\n\n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n\n    @Entity\n    public class Movie {\n\n        @Id\n        @GeneratedValue\n        private Long id;\n        private String director;\n        private String title;\n        private int year;\n\n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n\n        public Movie() {\n\n        }\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getDirector() {\n            return director;\n        }\n\n        public void setDirector(String director) {\n            this.director = director;\n        }\n\n        public String getTitle() {\n            return title;\n        }\n\n        public void setTitle(String title) {\n            this.title = title;\n        }\n\n        public int getYear() {\n            return year;\n        }\n\n        public void setYear(int year) {\n            this.year = year;\n        }\n    }\n\n## Movies\n\n    package org.superbiz.injection.tx;\n\n    import javax.annotation.Resource;\n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionManagement;\n    import javax.ejb.TransactionManagementType;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import javax.transaction.UserTransaction;\n\n    @Stateful(name = \"Movies\")\n    @TransactionManagement(TransactionManagementType.BEAN)\n    public class Movies {\n\n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n\n        @Resource\n        private UserTransaction userTransaction;\n\n        public void addMovie(Movie movie) throws Exception {\n            try {\n                userTransaction.begin();\n                entityManager.persist(movie);\n\n                //For some dummy reason, this db can have only 5 titles. :O)\n                if (countMovies() > 5) {\n                    userTransaction.rollback();\n                } else {\n                    userTransaction.commit();\n                }\n\n\n            } catch (Exception e) {\n                e.printStackTrace();\n                userTransaction.rollback();\n            }\n        }\n\n        public Long countMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT COUNT(m) FROM Movie m\");\n            return Long.class.cast(query.getSingleResult());\n        }\n    }\n\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n\n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.tx.Movie</class>\n\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.injection.tx;\n\n    import org.junit.Assert;\n    import org.junit.Test;\n\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.Properties;\n\n    public class MoviesTest {\n\n        @EJB\n        private Movies movies;\n\n        @Test\n        public void testMe() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n\n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n\n            movies.addMovie(new Movie(\"Asif Kapadia\", \"Senna\", 2010));\n            movies.addMovie(new Movie(\"José Padilha\", \"Tropa de Elite\", 2007));\n            movies.addMovie(new Movie(\"Andy Wachowski/Lana Wachowski\", \"The Matrix\", 1999));\n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n            Assert.assertEquals(5L, movies.countMovies().longValue());\n        }\n\n    }\n\n\n# Running\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.tx.MoviesTest\n    INFO - ********************************************************************************\n    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Sat Jul 21 16:39:28 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 20120721\n    INFO - Build time: 12:06\n    INFO - ********************************************************************************\n    INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f\n    INFO - Succeeded in installing singleton service\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Creating Resource(id=movieDatabase)\n    INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt/target/classes\n    INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    WARNING - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Creating Container(id=Default Stateful Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Creating Resource(id=movieDatabaseNonJta)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\" loaded.\n    INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested installation of a ClassFileTransformer which requires a JavaAgent.  See http://tomee.apache.org/3.0/javaagent.html\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 399ms\n    INFO - Jndi(name=\"java:global/testing-transactions-bmt/Movies!org.superbiz.injection.tx.Movies\")\n    INFO - Jndi(name=\"java:global/testing-transactions-bmt/Movies\")\n    INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points are validated successfully.\n    INFO - OpenWebBeans Container has started, it took 157 ms.\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt)\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@709a1411\n    21-Jul-2012 4:39:32 PM null openjpa.Runtime\n    INFO: Starting OpenJPA 2.2.0\n    21-Jul-2012 4:39:32 PM null openjpa.jdbc.JDBC\n    INFO: Using dictionary class \"org.apache.openjpa.jdbc.sql.HSQLDictionary\" (HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).\n    21-Jul-2012 4:39:33 PM null openjpa.Enhance\n    INFO: Creating subclass and redefining methods for \"[class org.superbiz.injection.tx.Movie]\". This means that your application will be less efficient than it would if you ran the OpenJPA enhancer.\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@709a1411\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@627b5c\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@627b5c\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2f031310\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2f031310\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4\n    INFO - Rolling back user transaction org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.471 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-transactions-bmt"
+      },
+      {
+        "name":"testing-security-2",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-security-2"
+      },
+      {
+        "name":"multi-jpa-provider-testing",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multi-jpa-provider-testing"
+      }
+    ],
+    "timeout":[
+      {
+        "name":"access-timeout-meta",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/access-timeout-meta"
+      },
+      {
+        "name":"access-timeout",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/access-timeout"
+      }
+    ],
+    "tomee":[
+      {
+        "name":"tomee-jersey-eclipselink",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/tomee-jersey-eclipselink"
+      },
+      {
+        "name":"realm-in-tomee",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/realm-in-tomee"
+      },
+      {
+        "name":"multiple-tomee-arquillian",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/multiple-tomee-arquillian"
+      }
+    ],
+    "transaction":[
+      {
+        "name":"transaction-rollback",
+        "readme":"Title: Transaction Rollback\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## CustomRuntimeException\n\n    package org.superbiz.txrollback;\n    \n    import javax.ejb.ApplicationException;\n    \n    @ApplicationException\n    public class CustomRuntimeException extends RuntimeException {\n    \n        public CustomRuntimeException() {\n        }\n    \n        public CustomRuntimeException(String s) {\n            super(s);\n        }\n    \n        public CustomRuntimeException(String s, Throwable throwable) {\n            super(s, throwable);\n        }\n    \n        public CustomRuntimeException(Throwable throwable) {\n            super(throwable);\n        }\n    }\n\n## Movie\n\n    package org.superbiz.txrollback;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    \n    @Entity(name = \"Movie\")\n    public class Movie {\n    \n        @Id\n        @GeneratedValue(strategy = GenerationType.AUTO)\n        private long id;\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.txrollback;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.SessionContext;\n    import javax.ejb.Stateless;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    //START SNIPPET: code\n    @Stateless\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        @Resource\n        private SessionContext sessionContext;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    \n        public void callSetRollbackOnly() {\n            sessionContext.setRollbackOnly();\n        }\n    \n        public void throwUncheckedException() {\n            throw new RuntimeException(\"Throwing unchecked exceptions will rollback a transaction\");\n        }\n    \n        public void throwApplicationException() {\n            throw new CustomRuntimeException(\"This is marked @ApplicationException, so no TX rollback\");\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.testinjection.MoviesTest.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.txrollback;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.transaction.RollbackException;\n    import javax.transaction.UserTransaction;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @Resource\n        private UserTransaction userTransaction;\n    \n        @PersistenceContext\n        private EntityManager entityManager;\n    \n        private EJBContainer ejbContainer;\n    \n        public void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\" + System.currentTimeMillis());\n    \n            ejbContainer = EJBContainer.createEJBContainer(p);\n            ejbContainer.getContext().bind(\"inject\", this);\n        }\n    \n        @Override\n        protected void tearDown() throws Exception {\n            ejbContainer.close();\n        }\n    \n        /**\n         * Standard successful transaction scenario.  The data created inside\n         * the transaction is visible after the transaction completes.\n         * <p/>\n         * Note that UserTransaction is only usable by Bean-Managed Transaction\n         * beans, which can be specified with @TransactionManagement(BEAN)\n         */\n        public void testCommit() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n            } finally {\n                userTransaction.commit();\n            }\n    \n            // Transaction was committed\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n        }\n    \n        /**\n         * Standard transaction rollback scenario.  The data created inside\n         * the transaction is not visible after the transaction completes.\n         */\n        public void testUserTransactionRollback() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n            } finally {\n                userTransaction.rollback();\n            }\n    \n            // Transaction was rolled back\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 0, list.size());\n        }\n    \n        /**\n         * Transaction is marked for rollback inside the bean via\n         * calling the javax.ejb.SessionContext.setRollbackOnly() method\n         * <p/>\n         * This is the cleanest way to make a transaction rollback.\n         */\n        public void testMarkedRollback() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n    \n                movies.callSetRollbackOnly();\n            } finally {\n                try {\n                    userTransaction.commit();\n                    fail(\"A RollbackException should have been thrown\");\n                } catch (RollbackException e) {\n                    // Pass\n                }\n            }\n    \n            // Transaction was rolled back\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 0, list.size());\n        }\n    \n        /**\n         * Throwing an unchecked exception from a bean will cause\n         * the container to call setRollbackOnly() and discard the\n         * bean instance from further use without calling any @PreDestroy\n         * methods on the bean instance.\n         */\n        public void testExceptionBasedRollback() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n    \n                try {\n                    movies.throwUncheckedException();\n                } catch (RuntimeException e) {\n                    // Good, this will cause the tx to rollback\n                }\n            } finally {\n                try {\n                    userTransaction.commit();\n                    fail(\"A RollbackException should have been thrown\");\n                } catch (RollbackException e) {\n                    // Pass\n                }\n            }\n    \n            // Transaction was rolled back\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 0, list.size());\n        }\n    \n        /**\n         * It is still possible to throw unchecked (runtime) exceptions\n         * without dooming the transaction by marking the exception\n         * with the @ApplicationException annotation or in the ejb-jar.xml\n         * deployment descriptor via the <application-exception> tag\n         */\n        public void testCommit2() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n    \n                try {\n                    movies.throwApplicationException();\n                } catch (RuntimeException e) {\n                    // This will *not* cause the tx to rollback\n                    // because it is marked as an @ApplicationException\n                }\n            } finally {\n                userTransaction.commit();\n            }\n    \n            // Transaction was committed\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.txrollback.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 412ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1718375554/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1718375554/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule935567559/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule935567559/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule1961109485/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule1961109485/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule419651577/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule419651577/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/transaction-rollback\n    INFO - openejb.base = /Users/dblevins/examples/transaction-rollback\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/transaction-rollback\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/transaction-rollback\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 4ms\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies\")\n    INFO - Jndi(name=\"java:global/transaction-rollback/Movies\")\n    INFO - Jndi(name=\"java:global/EjbModule15169271/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule15169271/org.superbiz.txrollback.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    WARN - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.\n    INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback\n    INFO - Closing DataSource: movieDatabase\n    INFO - Closing DataSource: movieDatabaseNonJta\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.586 sec\n    \n    Results :\n    \n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/transaction-rollback"
+      }
+    ],
+    "transactions":[
+      {
+        "name":"testing-transactions",
+        "readme":"Title: Testing Transactions\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.injection.tx;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Movie {\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.injection.tx;\n    \n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionAttribute;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    import static javax.ejb.TransactionAttributeType.MANDATORY;\n    \n    //START SNIPPET: code\n    @Stateful(name = \"Movies\")\n    @TransactionAttribute(MANDATORY)\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.tx.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.injection.tx;\n    \n    import junit.framework.TestCase;\n    \n    import javax.ejb.EJB;\n    import javax.ejb.Stateless;\n    import javax.ejb.TransactionAttribute;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.List;\n    import java.util.Properties;\n    import java.util.concurrent.Callable;\n    \n    import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;\n    \n    /**\n     * See the transaction-rollback example as it does the same thing\n     * via UserTransaction and shows more techniques for rollback \n     */\n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @EJB\n        private Caller transactionalCaller;\n    \n        protected void setUp() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        private void doWork() throws Exception {\n    \n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n    \n            for (Movie movie : list) {\n                movies.deleteMovie(movie);\n            }\n    \n            assertEquals(\"Movies.getMovies()\", 0, movies.getMovies().size());\n        }\n    \n        public void testWithTransaction() throws Exception {\n            transactionalCaller.call(new Callable() {\n                public Object call() throws Exception {\n                    doWork();\n                    return null;\n                }\n            });\n        }\n    \n        public void testWithoutTransaction() throws Exception {\n            try {\n                doWork();\n                fail(\"The Movies bean should be using TransactionAttributeType.MANDATORY\");\n            } catch (javax.ejb.EJBTransactionRequiredException e) {\n                // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want\n            }\n        }\n    \n    \n        public static interface Caller {\n            public <V> V call(Callable<V> callable) throws Exception;\n        }\n    \n        /**\n         * This little bit of magic allows our test code to execute in\n         * the scope of a container controlled transaction.\n         */\n        @Stateless\n        @TransactionAttribute(REQUIRES_NEW)\n        public static class TransactionBean implements Caller {\n    \n            public <V> V call(Callable<V> callable) throws Exception {\n                return callable.call();\n            }\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.tx.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/testing-transactions\n    INFO - openejb.base = /Users/dblevins/examples/testing-transactions\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-transactions/target/classes\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-transactions/target/test-classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-transactions/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/testing-transactions/target/test-classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/testing-transactions\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/Users/dblevins/examples/testing-transactions\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/testing-transactions\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 406ms\n    INFO - Jndi(name=\"java:global/testing-transactions/Movies!org.superbiz.injection.tx.Movies\")\n    INFO - Jndi(name=\"java:global/testing-transactions/Movies\")\n    INFO - Jndi(name=\"java:global/testing-transactions/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller\")\n    INFO - Jndi(name=\"java:global/testing-transactions/TransactionBean\")\n    INFO - Jndi(name=\"java:global/EjbModule2036741132/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule2036741132/org.superbiz.injection.tx.MoviesTest\")\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/testing-transactions)\n    INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization\n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.403 sec\n    \n    Results :\n    \n    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-transactions"
+      },
+      {
+        "name":"testing-transactions-bmt",
+        "readme":"Title: Testing Transactions BMT\n\nShows how to begin, commit and rollback transactions using a UserTransaction via a Stateful Bean.\n\n## Movie\n\n    package org.superbiz.injection.tx;\n\n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.Id;\n\n    @Entity\n    public class Movie {\n\n        @Id\n        @GeneratedValue\n        private Long id;\n        private String director;\n        private String title;\n        private int year;\n\n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n\n        public Movie() {\n\n        }\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getDirector() {\n            return director;\n        }\n\n        public void setDirector(String director) {\n            this.director = director;\n        }\n\n        public String getTitle() {\n            return title;\n        }\n\n        public void setTitle(String title) {\n            this.title = title;\n        }\n\n        public int getYear() {\n            return year;\n        }\n\n        public void setYear(int year) {\n            this.year = year;\n        }\n    }\n\n## Movies\n\n    package org.superbiz.injection.tx;\n\n    import javax.annotation.Resource;\n    import javax.ejb.Stateful;\n    import javax.ejb.TransactionManagement;\n    import javax.ejb.TransactionManagementType;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import javax.transaction.UserTransaction;\n\n    @Stateful(name = \"Movies\")\n    @TransactionManagement(TransactionManagementType.BEAN)\n    public class Movies {\n\n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n\n        @Resource\n        private UserTransaction userTransaction;\n\n        public void addMovie(Movie movie) throws Exception {\n            try {\n                userTransaction.begin();\n                entityManager.persist(movie);\n\n                //For some dummy reason, this db can have only 5 titles. :O)\n                if (countMovies() > 5) {\n                    userTransaction.rollback();\n                } else {\n                    userTransaction.commit();\n                }\n\n\n            } catch (Exception e) {\n                e.printStackTrace();\n                userTransaction.rollback();\n            }\n        }\n\n        public Long countMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT COUNT(m) FROM Movie m\");\n            return Long.class.cast(query.getSingleResult());\n        }\n    }\n\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n\n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.injection.tx.Movie</class>\n\n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.injection.tx;\n\n    import org.junit.Assert;\n    import org.junit.Test;\n\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import java.util.Properties;\n\n    public class MoviesTest {\n\n        @EJB\n        private Movies movies;\n\n        @Test\n        public void testMe() throws Exception {\n            final Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n\n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n\n            movies.addMovie(new Movie(\"Asif Kapadia\", \"Senna\", 2010));\n            movies.addMovie(new Movie(\"José Padilha\", \"Tropa de Elite\", 2007));\n            movies.addMovie(new Movie(\"Andy Wachowski/Lana Wachowski\", \"The Matrix\", 1999));\n            movies.addMovie(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n            Assert.assertEquals(5L, movies.countMovies().longValue());\n        }\n\n    }\n\n\n# Running\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.injection.tx.MoviesTest\n    INFO - ********************************************************************************\n    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Sat Jul 21 16:39:28 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 20120721\n    INFO - Build time: 12:06\n    INFO - ********************************************************************************\n    INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f\n    INFO - Succeeded in installing singleton service\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Creating Resource(id=movieDatabase)\n    INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt/target/classes\n    INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    WARNING - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)\n    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)\n    INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Creating Container(id=Default Stateful Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /tmp for stateful session passivation\n    INFO - Configuring PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    INFO - Creating Resource(id=movieDatabaseNonJta)\n    INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    INFO - Enterprise application \"/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\" loaded.\n    INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested installation of a ClassFileTransformer which requires a JavaAgent.  See http://tomee.apache.org/3.0/javaagent.html\n    INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 399ms\n    INFO - Jndi(name=\"java:global/testing-transactions-bmt/Movies!org.superbiz.injection.tx.Movies\")\n    INFO - Jndi(name=\"java:global/testing-transactions-bmt/Movies\")\n    INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points are validated successfully.\n    INFO - OpenWebBeans Container has started, it took 157 ms.\n    INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)\n    INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt)\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@709a1411\n    21-Jul-2012 4:39:32 PM null openjpa.Runtime\n    INFO: Starting OpenJPA 2.2.0\n    21-Jul-2012 4:39:32 PM null openjpa.jdbc.JDBC\n    INFO: Using dictionary class \"org.apache.openjpa.jdbc.sql.HSQLDictionary\" (HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).\n    21-Jul-2012 4:39:33 PM null openjpa.Enhance\n    INFO: Creating subclass and redefining methods for \"[class org.superbiz.injection.tx.Movie]\". This means that your application will be less efficient than it would if you ran the OpenJPA enhancer.\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@709a1411\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@627b5c\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@627b5c\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2f031310\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2f031310\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da\n    INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da\n    INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4\n    INFO - Rolling back user transaction org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.471 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/testing-transactions-bmt"
+      }
+    ],
+    "troubleshooting":[
+      {
+        "name":"troubleshooting",
+        "readme":"Title: Troubleshooting\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Movie\n\n    package org.superbiz.troubleshooting;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    \n    @Entity(name = \"Movie\")\n    public class Movie {\n    \n        @Id\n        @GeneratedValue(strategy = GenerationType.AUTO)\n        private long id;\n    \n        private String director;\n        private String title;\n        private int year;\n    \n        public Movie() {\n        }\n    \n        public Movie(String director, String title, int year) {\n            this.director = director;\n            this.title = title;\n            this.year = year;\n        }\n    \n        public String getDirector() {\n            return director;\n        }\n    \n        public void setDirector(String director) {\n            this.director = director;\n        }\n    \n        public String getTitle() {\n            return title;\n        }\n    \n        public void setTitle(String title) {\n            this.title = title;\n        }\n    \n        public int getYear() {\n            return year;\n        }\n    \n        public void setYear(int year) {\n            this.year = year;\n        }\n    \n    }\n\n## Movies\n\n    package org.superbiz.troubleshooting;\n    \n    import javax.ejb.Stateless;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    //START SNIPPET: code\n    @Stateless\n    public class Movies {\n    \n        @PersistenceContext(unitName = \"movie-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        public void addMovie(Movie movie) throws Exception {\n            entityManager.persist(movie);\n        }\n    \n        public void deleteMovie(Movie movie) throws Exception {\n            entityManager.remove(movie);\n        }\n    \n        public List<Movie> getMovies() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT m from Movie as m\");\n            return query.getResultList();\n        }\n    }\n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"movie-unit\">\n        <jta-data-source>movieDatabase</jta-data-source>\n        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        <class>org.superbiz.testinjection.MoviesTest.Movie</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      </persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package org.superbiz.troubleshooting;\n    \n    import junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    import javax.ejb.EJB;\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.transaction.UserTransaction;\n    import java.util.List;\n    import java.util.Properties;\n    \n    //START SNIPPET: code\n    public class MoviesTest extends TestCase {\n    \n        @EJB\n        private Movies movies;\n    \n        @Resource\n        private UserTransaction userTransaction;\n    \n        @PersistenceContext\n        private EntityManager entityManager;\n    \n        public void setUp() throws Exception {\n            Properties p = new Properties();\n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n    \n            // These two debug levels will get you the basic log information\n            // on the deployment of applications. Good first step in troubleshooting.\n            p.put(\"log4j.category.OpenEJB.startup\", \"debug\");\n            p.put(\"log4j.category.OpenEJB.startup.config\", \"debug\");\n    \n            // This log category is a good way to see what \"openejb.foo\" options\n            // and flags are available and what their default values are\n            p.put(\"log4j.category.OpenEJB.options\", \"debug\");\n    \n            // This will output the full configuration of all containers\n            // resources and other openejb.xml configurable items.  A good\n            // way to see what the final configuration looks like after all\n            // overriding has been applied.\n            p.put(\"log4j.category.OpenEJB.startup.service\", \"debug\");\n    \n            // Will output a generated ejb-jar.xml file that represents\n            // 100% of the annotations used in the code.  This is a great\n            // way to figure out how to do something in xml for overriding\n            // or just to \"see\" all your application meta-data in one place.\n            // Look for log lines like this \"Dumping Generated ejb-jar.xml to\"\n            p.put(\"openejb.descriptors.output\", \"true\");\n    \n            // Setting the validation output level to verbose results in\n            // validation messages that attempt to provide explanations\n            // and information on what steps can be taken to remedy failures.\n            // A great tool for those learning EJB.\n            p.put(\"openejb.validation.output.level\", \"verbose\");\n    \n            EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n        }\n    \n        public void test() throws Exception {\n    \n            userTransaction.begin();\n    \n            try {\n                entityManager.persist(new Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n                entityManager.persist(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n                entityManager.persist(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n    \n                List<Movie> list = movies.getMovies();\n                assertEquals(\"List.size()\", 3, list.size());\n            } finally {\n                userTransaction.commit();\n            }\n    \n            // Transaction was committed\n            List<Movie> list = movies.getMovies();\n            assertEquals(\"List.size()\", 3, list.size());\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.troubleshooting.MoviesTest\n    2011-10-29 11:50:19,482 - DEBUG - Using default 'openejb.nobanner=true'\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    2011-10-29 11:50:19,482 - INFO  - openejb.home = /Users/dblevins/examples/troubleshooting\n    2011-10-29 11:50:19,482 - INFO  - openejb.base = /Users/dblevins/examples/troubleshooting\n    2011-10-29 11:50:19,483 - DEBUG - Using default 'openejb.assembler=org.apache.openejb.assembler.classic.Assembler'\n    2011-10-29 11:50:19,483 - DEBUG - Instantiating assembler class org.apache.openejb.assembler.classic.Assembler\n    2011-10-29 11:50:19,517 - DEBUG - Using default 'openejb.jndiname.failoncollision=true'\n    2011-10-29 11:50:19,517 - INFO  - Using 'javax.ejb.embeddable.EJBContainer=true'\n    2011-10-29 11:50:19,520 - DEBUG - Using default 'openejb.configurator=org.apache.openejb.config.ConfigurationFactory'\n    2011-10-29 11:50:19,588 - DEBUG - Using default 'openejb.validation.skip=false'\n    2011-10-29 11:50:19,589 - DEBUG - Using default 'openejb.deploymentId.format={ejbName}'\n    2011-10-29 11:50:19,589 - DEBUG - Using default 'openejb.debuggable-vm-hackery=false'\n    2011-10-29 11:50:19,589 - DEBUG - Using default 'openejb.webservices.enabled=true'\n    2011-10-29 11:50:19,594 - DEBUG - Using default 'openejb.vendor.config=ALL'  Possible values are: geronimo, glassfish, jboss, weblogic or NONE or ALL\n    2011-10-29 11:50:19,612 - DEBUG - Using default 'openejb.provider.default=org.apache.openejb.embedded'\n    2011-10-29 11:50:19,658 - INFO  - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    2011-10-29 11:50:19,662 - INFO  - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    2011-10-29 11:50:19,665 - INFO  - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n    2011-10-29 11:50:19,665 - DEBUG - Override [JdbcDriver=org.hsqldb.jdbcDriver]\n    2011-10-29 11:50:19,666 - DEBUG - Using default 'openejb.deployments.classpath=false'\n    2011-10-29 11:50:19,666 - INFO  - Creating TransactionManager(id=Default Transaction Manager)\n    2011-10-29 11:50:19,676 - DEBUG - defaultTransactionTimeoutSeconds=600\n    2011-10-29 11:50:19,676 - DEBUG - TxRecovery=false\n    2011-10-29 11:50:19,676 - DEBUG - bufferSizeKb=32\n    2011-10-29 11:50:19,676 - DEBUG - checksumEnabled=true\n    2011-10-29 11:50:19,676 - DEBUG - adler32Checksum=true\n    2011-10-29 11:50:19,676 - DEBUG - flushSleepTimeMilliseconds=50\n    2011-10-29 11:50:19,676 - DEBUG - logFileDir=txlog\n    2011-10-29 11:50:19,676 - DEBUG - logFileExt=log\n    2011-10-29 11:50:19,676 - DEBUG - logFileName=howl\n    2011-10-29 11:50:19,676 - DEBUG - maxBlocksPerFile=-1\n    2011-10-29 11:50:19,677 - DEBUG - maxBuffers=0\n    2011-10-29 11:50:19,677 - DEBUG - maxLogFiles=2\n    2011-10-29 11:50:19,677 - DEBUG - minBuffers=4\n    2011-10-29 11:50:19,677 - DEBUG - threadsWaitingForceThreshold=-1\n    2011-10-29 11:50:19,724 - DEBUG - createService.success\n    2011-10-29 11:50:19,724 - INFO  - Creating SecurityService(id=Default Security Service)\n    2011-10-29 11:50:19,724 - DEBUG - DefaultUser=guest\n    2011-10-29 11:50:19,750 - DEBUG - createService.success\n    2011-10-29 11:50:19,750 - INFO  - Creating Resource(id=movieDatabase)\n    2011-10-29 11:50:19,750 - DEBUG - Definition=\n    2011-10-29 11:50:19,750 - DEBUG - JtaManaged=true\n    2011-10-29 11:50:19,750 - DEBUG - JdbcDriver=org.hsqldb.jdbcDriver\n    2011-10-29 11:50:19,750 - DEBUG - JdbcUrl=jdbc:hsqldb:mem:hsqldb\n    2011-10-29 11:50:19,750 - DEBUG - UserName=sa\n    2011-10-29 11:50:19,750 - DEBUG - Password=\n    2011-10-29 11:50:19,750 - DEBUG - PasswordCipher=PlainText\n    2011-10-29 11:50:19,750 - DEBUG - ConnectionProperties=\n    2011-10-29 11:50:19,750 - DEBUG - DefaultAutoCommit=true\n    2011-10-29 11:50:19,750 - DEBUG - InitialSize=0\n    2011-10-29 11:50:19,750 - DEBUG - MaxActive=20\n    2011-10-29 11:50:19,750 - DEBUG - MaxIdle=20\n    2011-10-29 11:50:19,751 - DEBUG - MinIdle=0\n    2011-10-29 11:50:19,751 - DEBUG - MaxWait=-1\n    2011-10-29 11:50:19,751 - DEBUG - TestOnBorrow=true\n    2011-10-29 11:50:19,751 - DEBUG - TestOnReturn=false\n    2011-10-29 11:50:19,751 - DEBUG - TestWhileIdle=false\n    2011-10-29 11:50:19,751 - DEBUG - TimeBetweenEvictionRunsMillis=-1\n    2011-10-29 11:50:19,751 - DEBUG - NumTestsPerEvictionRun=3\n    2011-10-29 11:50:19,751 - DEBUG - MinEvictableIdleTimeMillis=1800000\n    2011-10-29 11:50:19,751 - DEBUG - PoolPreparedStatements=false\n    2011-10-29 11:50:19,751 - DEBUG - MaxOpenPreparedStatements=0\n    2011-10-29 11:50:19,751 - DEBUG - AccessToUnderlyingConnectionAllowed=false\n    2011-10-29 11:50:19,781 - DEBUG - createService.success\n    2011-10-29 11:50:19,783 - DEBUG - Containers        : 0\n    2011-10-29 11:50:19,785 - DEBUG - Deployments       : 0\n    2011-10-29 11:50:19,785 - DEBUG - SecurityService   : org.apache.openejb.core.security.SecurityServiceImpl\n    2011-10-29 11:50:19,786 - DEBUG - TransactionManager: org.apache.geronimo.transaction.manager.GeronimoTransactionManager\n    2011-10-29 11:50:19,786 - DEBUG - OpenEJB Container System ready.\n    2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.validation.skip=false'\n    2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.deploymentId.format={ejbName}'\n    2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.debuggable-vm-hackery=false'\n    2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.webservices.enabled=true'\n    2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.vendor.config=ALL'  Possible values are: geronimo, glassfish, jboss, weblogic or NONE or ALL\n    2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.include=.*'\n    2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.exclude='\n    2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.require.descriptor=client'  Possible values are: ejb, client or NONE or ALL\n    2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.filter.descriptors=false'\n    2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.filter.systemapps=true'\n    2011-10-29 11:50:19,828 - DEBUG - Inspecting classpath for applications: 5 urls.\n    2011-10-29 11:50:19,846 - INFO  - Found EjbModule in classpath: /Users/dblevins/examples/troubleshooting/target/classes\n    2011-10-29 11:50:20,011 - DEBUG - URLs after filtering: 55\n    2011-10-29 11:50:20,011 - DEBUG - Annotations path: file:/Users/dblevins/examples/troubleshooting/target/classes/\n    2011-10-29 11:50:20,011 - DEBUG - Annotations path: jar:file:/Users/dblevins/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.2/surefire-api-2.7.2.jar!/\n    2011-10-29 11:50:20,011 - DEBUG - Annotations path: jar:file:/Users/dblevins/.m2/repository/org/apache/openejb/mbean-annotation-api/4.0.0-beta-1/mbean-annotation-api-4.0.0-beta-1.jar!/\n    2011-10-29 11:50:20,011 - DEBUG - Annotations path: jar:file:/Users/dblevins/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.2/surefire-booter-2.7.2.jar!/\n    2011-10-29 11:50:20,011 - DEBUG - Annotations path: file:/Users/dblevins/examples/troubleshooting/target/test-classes/\n    2011-10-29 11:50:20,011 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar!/\n    2011-10-29 11:50:20,011 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/bval/bval-core/0.3-incubating/bval-core-0.3-incubating.jar!/\n    2011-10-29 11:50:20,011 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-management_1.1_spec/1.0.1/geronimo-j2ee-management_1.1_spec-1.0.1.jar!/\n    2011-10-29 11:50:20,011 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/activemq-core/5.4.2/activemq-core-5.4.2.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-bundleutils/3.8/xbean-bundleutils-3.8.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/net/sf/scannotation/scannotation/1.0.2/scannotation-1.0.2.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openejb/javaee-api/6.0-2/javaee-api-6.0-2.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-beanutils/commons-beanutils-core/1.8.3/commons-beanutils-core-1.8.3.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-web/1.1.1/openwebbeans-web-1.1.1.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/com/ibm/icu/icu4j/4.0.1/icu4j-4.0.1.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-asm-shaded/3.8/xbean-asm-shaded-3.8.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-ee-common/1.1.1/openwebbeans-ee-common-1.1.1.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-pool/commons-pool/1.5.6/commons-pool-1.5.6.jar!/\n    2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-impl/1.1.1/openwebbeans-impl-1.1.1.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-finder-shaded/3.8/xbean-finder-shaded-3.8.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-connector_1.6_spec/1.0/geronimo-j2ee-connector_1.6_spec-1.0.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/kahadb/5.4.2/kahadb-5.4.2.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/hsqldb/hsqldb/1.8.0.10/hsqldb-1.8.0.10.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/components/geronimo-connector/3.1.1/geronimo-connector-3.1.1.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/activemq-ra/5.4.2/activemq-ra-5.4.2.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/net/sourceforge/serp/serp/1.13.1/serp-1.13.1.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar!/\n    2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/activeio-core/3.1.2/activeio-core-3.1.2.jar!/\n    2011-10-29 11:50:20,014 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/quartz-scheduler/quartz/1.8.5/quartz-1.8.5.jar!/\n    2011-10-29 11:50:20,014 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-ee/1.1.1/openwebbeans-ee-1.1.1.jar!/\n    2011-10-29 11:50:20,014 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar!/\n    2011-10-29 11:50:20,014 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-spi/1.1.1/openwebbeans-spi-1.1.1.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/codehaus/swizzle/swizzle-stream/1.0.2/swizzle-stream-1.0.2.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openjpa/openjpa/2.1.1/openjpa-2.1.1.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-naming/3.8/xbean-naming-3.8.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/components/geronimo-transaction/3.1.1/geronimo-transaction-3.1.1.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/javassist/javassist/3.12.0.GA/javassist-3.12.0.GA.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/objectweb/howl/howl/1.0.1-1/howl-1.0.1-1.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-reflect/3.8/xbean-reflect-3.8.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-ejb/1.1.1/openwebbeans-ejb-1.1.1.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar!/\n    2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-net/commons-net/2.0/commons-net-2.0.jar!/\n    2011-10-29 11:50:20,017 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/protobuf/activemq-protobuf/1.1/activemq-protobuf-1.1.jar!/\n    2011-10-29 11:50:20,017 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.jar!/\n    2011-10-29 11:50:20,017 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/javamail/geronimo-javamail_1.4_mail/1.8.2/geronimo-javamail_1.4_mail-1.8.2.jar!/\n    2011-10-29 11:50:20,017 - DEBUG - Searched 5 classpath urls in 80 milliseconds.  Average 16 milliseconds per url.\n    2011-10-29 11:50:20,023 - INFO  - Beginning load: /Users/dblevins/examples/troubleshooting/target/classes\n    2011-10-29 11:50:20,028 - DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL\n    2011-10-29 11:50:20,030 - DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL\n    2011-10-29 11:50:20,099 - INFO  - Configuring enterprise application: /Users/dblevins/examples/troubleshooting\n    2011-10-29 11:50:20,099 - DEBUG - No ejb-jar.xml found assuming annotated beans present: /Users/dblevins/examples/troubleshooting, module: troubleshooting\n    2011-10-29 11:50:20,213 - DEBUG - Searching for annotated application exceptions (see OPENEJB-980)\n    2011-10-29 11:50:20,214 - DEBUG - Searching for annotated application exceptions (see OPENEJB-980)\n    2011-10-29 11:50:20,248 - WARN  - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.\n    2011-10-29 11:50:20,249 - DEBUG - looking for annotated MBeans in \n    2011-10-29 11:50:20,249 - DEBUG - registered 0 annotated MBeans in \n    2011-10-29 11:50:20,278 - INFO  - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    2011-10-29 11:50:20,278 - INFO  - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)\n    2011-10-29 11:50:20,278 - INFO  - Creating Container(id=Default Stateless Container)\n    2011-10-29 11:50:20,279 - DEBUG - AccessTimeout=30 seconds\n    2011-10-29 11:50:20,279 - DEBUG - MaxSize=10\n    2011-10-29 11:50:20,279 - DEBUG - MinSize=0\n    2011-10-29 11:50:20,279 - DEBUG - StrictPooling=true\n    2011-10-29 11:50:20,279 - DEBUG - MaxAge=0 hours\n    2011-10-29 11:50:20,279 - DEBUG - ReplaceAged=true\n    2011-10-29 11:50:20,279 - DEBUG - ReplaceFlushed=false\n    2011-10-29 11:50:20,279 - DEBUG - MaxAgeOffset=-1\n    2011-10-29 11:50:20,279 - DEBUG - IdleTimeout=0 minutes\n    2011-10-29 11:50:20,279 - DEBUG - GarbageCollection=false\n    2011-10-29 11:50:20,279 - DEBUG - SweepInterval=5 minutes\n    2011-10-29 11:50:20,279 - DEBUG - CallbackThreads=5\n    2011-10-29 11:50:20,279 - DEBUG - CloseTimeout=5 minutes\n    2011-10-29 11:50:20,295 - DEBUG - createService.success\n    2011-10-29 11:50:20,296 - INFO  - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    2011-10-29 11:50:20,296 - INFO  - Auto-creating a container for bean org.superbiz.troubleshooting.MoviesTest: Container(type=MANAGED, id=Default Managed Container)\n    2011-10-29 11:50:20,296 - INFO  - Creating Container(id=Default Managed Container)\n    2011-10-29 11:50:20,310 - DEBUG - createService.success\n    2011-10-29 11:50:20,310 - INFO  - Configuring PersistenceUnit(name=movie-unit)\n    2011-10-29 11:50:20,310 - DEBUG - raw <jta-data-source>movieDatabase</jta-datasource>\n    2011-10-29 11:50:20,310 - DEBUG - raw <non-jta-data-source>movieDatabaseUnmanaged</non-jta-datasource>\n    2011-10-29 11:50:20,310 - DEBUG - normalized <jta-data-source>movieDatabase</jta-datasource>\n    2011-10-29 11:50:20,310 - DEBUG - normalized <non-jta-data-source>movieDatabaseUnmanaged</non-jta-datasource>\n    2011-10-29 11:50:20,310 - DEBUG - Available DataSources\n    2011-10-29 11:50:20,310 - DEBUG - DataSource(name=movieDatabase, JtaManaged=true)\n    2011-10-29 11:50:20,311 - INFO  - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    2011-10-29 11:50:20,311 - INFO  - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)\n    2011-10-29 11:50:20,311 - INFO  - Creating Resource(id=movieDatabaseNonJta)\n    2011-10-29 11:50:20,311 - DEBUG - Definition=\n    2011-10-29 11:50:20,312 - DEBUG - JtaManaged=false\n    2011-10-29 11:50:20,312 - DEBUG - JdbcDriver=org.hsqldb.jdbcDriver\n    2011-10-29 11:50:20,312 - DEBUG - JdbcUrl=jdbc:hsqldb:mem:hsqldb\n    2011-10-29 11:50:20,312 - DEBUG - UserName=sa\n    2011-10-29 11:50:20,312 - DEBUG - Password=\n    2011-10-29 11:50:20,312 - DEBUG - PasswordCipher=PlainText\n    2011-10-29 11:50:20,312 - DEBUG - ConnectionProperties=\n    2011-10-29 11:50:20,312 - DEBUG - DefaultAutoCommit=true\n    2011-10-29 11:50:20,312 - DEBUG - InitialSize=0\n    2011-10-29 11:50:20,312 - DEBUG - MaxActive=20\n    2011-10-29 11:50:20,312 - DEBUG - MaxIdle=20\n    2011-10-29 11:50:20,312 - DEBUG - MinIdle=0\n    2011-10-29 11:50:20,312 - DEBUG - MaxWait=-1\n    2011-10-29 11:50:20,312 - DEBUG - TestOnBorrow=true\n    2011-10-29 11:50:20,312 - DEBUG - TestOnReturn=false\n    2011-10-29 11:50:20,312 - DEBUG - TestWhileIdle=false\n    2011-10-29 11:50:20,312 - DEBUG - TimeBetweenEvictionRunsMillis=-1\n    2011-10-29 11:50:20,312 - DEBUG - NumTestsPerEvictionRun=3\n    2011-10-29 11:50:20,312 - DEBUG - MinEvictableIdleTimeMillis=1800000\n    2011-10-29 11:50:20,312 - DEBUG - PoolPreparedStatements=false\n    2011-10-29 11:50:20,312 - DEBUG - MaxOpenPreparedStatements=0\n    2011-10-29 11:50:20,312 - DEBUG - AccessToUnderlyingConnectionAllowed=false\n    2011-10-29 11:50:20,316 - DEBUG - createService.success\n    2011-10-29 11:50:20,316 - INFO  - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'\n    2011-10-29 11:50:20,317 - INFO  - Using 'openejb.descriptors.output=true'\n    2011-10-29 11:50:20,317 - INFO  - Using 'openejb.descriptors.output=true'\n    2011-10-29 11:50:20,642 - INFO  - Dumping Generated ejb-jar.xml to: /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T/ejb-jar-4107959830671443055troubleshooting.xml\n    2011-10-29 11:50:20,657 - INFO  - Dumping Generated openejb-jar.xml to: /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T/openejb-jar-5369342778223971127troubleshooting.xml\n    2011-10-29 11:50:20,657 - INFO  - Using 'openejb.descriptors.output=true'\n    2011-10-29 11:50:20,658 - INFO  - Dumping Generated ejb-jar.xml to: /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T/ejb-jar-5569422837673302173EjbModule837053032.xml\n    2011-10-29 11:50:20,659 - INFO  - Dumping Generated openejb-jar.xml to: /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T/openejb-jar-560959152015048895EjbModule837053032.xml\n    2011-10-29 11:50:20,665 - DEBUG - Adding persistence-unit movie-unit property openjpa.Log=log4j\n    2011-10-29 11:50:20,665 - DEBUG - Adjusting PersistenceUnit(name=movie-unit) property to openjpa.RuntimeUnenhancedClasses=supported\n    2011-10-29 11:50:20,674 - INFO  - Using 'openejb.validation.output.level=VERBOSE'\n    2011-10-29 11:50:20,674 - INFO  - Enterprise application \"/Users/dblevins/examples/troubleshooting\" loaded.\n    2011-10-29 11:50:20,674 - INFO  - Assembling app: /Users/dblevins/examples/troubleshooting\n    2011-10-29 11:50:20,678 - DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL\n    2011-10-29 11:50:20,757 - DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL\n    2011-10-29 11:50:21,137 - INFO  - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 407ms\n    2011-10-29 11:50:21,138 - DEBUG - openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)\n    2011-10-29 11:50:21,138 - DEBUG - openjpa.Log=log4j\n    2011-10-29 11:50:21,138 - DEBUG - openjpa.RuntimeUnenhancedClasses=supported\n    2011-10-29 11:50:21,262 - DEBUG - Using default 'openejb.jndiname.strategy.class=org.apache.openejb.assembler.classic.JndiBuilder$TemplatedStrategy'\n    2011-10-29 11:50:21,262 - DEBUG - Using default 'openejb.jndiname.format={deploymentId}{interfaceType.annotationName}'\n    2011-10-29 11:50:21,267 - DEBUG - Using default 'openejb.localcopy=true'\n    2011-10-29 11:50:21,270 - DEBUG - bound ejb at name: openejb/Deployment/Movies/org.superbiz.troubleshooting.Movies!LocalBean, ref: org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference@2569a1c5\n    2011-10-29 11:50:21,270 - DEBUG - bound ejb at name: openejb/Deployment/Movies/org.superbiz.troubleshooting.Movies!LocalBeanHome, ref: org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference@2569a1c5\n    2011-10-29 11:50:21,272 - INFO  - Jndi(name=\"java:global/troubleshooting/Movies!org.superbiz.troubleshooting.Movies\")\n    2011-10-29 11:50:21,272 - INFO  - Jndi(name=\"java:global/troubleshooting/Movies\")\n    2011-10-29 11:50:21,277 - DEBUG - Using default 'openejb.jndiname.strategy.class=org.apache.openejb.assembler.classic.JndiBuilder$TemplatedStrategy'\n    2011-10-29 11:50:21,277 - DEBUG - Using default 'openejb.jndiname.format={deploymentId}{interfaceType.annotationName}'\n    2011-10-29 11:50:21,277 - DEBUG - bound ejb at name: openejb/Deployment/org.superbiz.troubleshooting.MoviesTest/org.superbiz.troubleshooting.MoviesTest!LocalBean, ref: org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference@3f78e13f\n    2011-10-29 11:50:21,277 - DEBUG - bound ejb at name: openejb/Deployment/org.superbiz.troubleshooting.MoviesTest/org.superbiz.troubleshooting.MoviesTest!LocalBeanHome, ref: org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference@3f78e13f\n    2011-10-29 11:50:21,277 - INFO  - Jndi(name=\"java:global/EjbModule837053032/org.superbiz.troubleshooting.MoviesTest!org.superbiz.troubleshooting.MoviesTest\")\n    2011-10-29 11:50:21,277 - INFO  - Jndi(name=\"java:global/EjbModule837053032/org.superbiz.troubleshooting.MoviesTest\")\n    2011-10-29 11:50:21,291 - DEBUG - CDI Service not installed: org.apache.webbeans.spi.ConversationService\n    2011-10-29 11:50:21,399 - INFO  - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    2011-10-29 11:50:21,428 - INFO  - Created Ejb(deployment-id=org.superbiz.troubleshooting.MoviesTest, ejb-name=org.superbiz.troubleshooting.MoviesTest, container=Default Managed Container)\n    2011-10-29 11:50:21,463 - INFO  - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)\n    2011-10-29 11:50:21,463 - INFO  - Started Ejb(deployment-id=org.superbiz.troubleshooting.MoviesTest, ejb-name=org.superbiz.troubleshooting.MoviesTest, container=Default Managed Container)\n    2011-10-29 11:50:21,463 - INFO  - Deployed Application(path=/Users/dblevins/examples/troubleshooting)\n    2011-10-29 11:50:21,728 - WARN  - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@27a8c4e7; ignoring.\n    2011-10-29 11:50:21,834 - WARN  - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@27a8c4e7; ignoring.\n    2011-10-29 11:50:21,846 - WARN  - The class \"org.superbiz.testinjection.MoviesTest.Movie\" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@27a8c4e7; ignoring.\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.642 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/troubleshooting"
+      }
+    ],
+    "unit":[
+      {
+        "name":"reload-persistence-unit-properties",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/reload-persistence-unit-properties"
+      }
+    ],
+    "url":[
+      {
+        "name":"change-jaxws-url",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/change-jaxws-url"
+      }
+    ],
+    "validation":[
+      {
+        "name":"bean-validation-design-by-contract",
+        "readme":"# Bean Validation - Design By Contract\n\nBean Validation (aka JSR 303) contains an optional appendix dealing with method validation.\n\nSome implementions of this JSR implement this appendix (Apache bval, Hibernate validator for example).\n\nOpenEJB provides an interceptor which allows you to use this feature to do design by contract.\n\n# Design by contract\n\nThe goal is to be able to configure with a finer grain your contract. In the example you specify\nthe minimum centimeters a sport man should jump at pole vaulting:\n\n    @Local\n    public interface PoleVaultingManager {\n        int points(@Min(120) int centimeters);\n    }\n\n# Usage\n\nTomEE and OpenEJB do not provide anymore `BeanValidationAppendixInterceptor` since\nBean Validation 1.1 does it (with a slighly different usage but the exact same feature).\n\nSo basically you don't need to configure anything to use it.\n# Errors\n\nIf a parameter is not validated an exception is thrown, it is an EJBException wrapping a ConstraintViolationException:\n\n    try {\n        gamesManager.addSportMan(\"I lose\", \"EN\");\n        fail(\"no space should be in names\");\n    } catch (EJBException wrappingException) {\n        assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n        ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n        assertEquals(1, exception.getConstraintViolations().size());\n    }\n\n# Example\n\n## OlympicGamesManager\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Stateless;\n    import javax.validation.constraints.NotNull;\n    import javax.validation.constraints.Pattern;\n    import javax.validation.constraints.Size;\n\n    @Stateless\n    public class OlympicGamesManager {\n        public String addSportMan(@Pattern(regexp = \"^[A-Za-z]+$\") String name, @Size(min = 2, max = 4) String country) {\n            if (country.equals(\"USA\")) {\n                return null;\n            }\n            return new StringBuilder(name).append(\" [\").append(country).append(\"]\").toString();\n        }\n    }\n\n## PoleVaultingManager\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Local;\n    import javax.validation.constraints.Min;\n\n    @Local\n    public interface PoleVaultingManager {\n        int points(@Min(120) int centimeters);\n    }\n\n## PoleVaultingManagerBean\n\n    package org.superbiz.designbycontract;\n\n    import javax.ejb.Stateless;\n\n    @Stateless\n    public class PoleVaultingManagerBean implements PoleVaultingManager {\n        @Override\n        public int points(int centimeters) {\n            return centimeters - 120;\n        }\n    }\n\n## OlympicGamesTest\n\n    public class OlympicGamesTest {\n        private static Context context;\n\n        @EJB\n        private OlympicGamesManager gamesManager;\n\n        @EJB\n        private PoleVaultingManager poleVaultingManager;\n\n        @BeforeClass\n        public static void start() {\n            Properties properties = new Properties();\n            properties.setProperty(BeanContext.USER_INTERCEPTOR_KEY, BeanValidationAppendixInterceptor.class.getName());\n            context = EJBContainer.createEJBContainer(properties).getContext();\n        }\n\n        @Before\n        public void inject() throws Exception {\n            context.bind(\"inject\", this);\n        }\n\n        @AfterClass\n        public static void stop() throws Exception {\n            if (context != null) {\n                context.close();\n            }\n        }\n\n        @Test\n        public void sportMenOk() throws Exception {\n            assertEquals(\"IWin [FR]\", gamesManager.addSportMan(\"IWin\", \"FR\"));\n        }\n\n        @Test\n        public void sportMenKoBecauseOfName() throws Exception {\n            try {\n                gamesManager.addSportMan(\"I lose\", \"EN\");\n                fail(\"no space should be in names\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n\n        @Test\n        public void sportMenKoBecauseOfCountry() throws Exception {\n            try {\n                gamesManager.addSportMan(\"ILoseTwo\", \"TOO-LONG\");\n                fail(\"country should be between 2 and 4 characters\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n\n        @Test\n        public void polVaulting() throws Exception {\n            assertEquals(100, poleVaultingManager.points(220));\n        }\n\n        @Test\n        public void tooShortPolVaulting() throws Exception {\n            try {\n                poleVaultingManager.points(119);\n                fail(\"the jump is too short\");\n            } catch (EJBException wrappingException) {\n                assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);\n                ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());\n                assertEquals(1, exception.getConstraintViolations().size());\n            }\n        }\n    }\n\n# Running\n\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running OlympicGamesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - openejb.base = /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/bean-validation-design-by-contract/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/bean-validation-design-by-contract/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean PoleVaultingManagerBean: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean OlympicGamesTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/bean-validation-design-by-contract\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/bean-validation-design-by-contract\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/PoleVaultingManagerBean!org.superbiz.designbycontract.PoleVaultingManager\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/PoleVaultingManagerBean\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/OlympicGamesManager!org.superbiz.designbycontract.OlympicGamesManager\")\n    INFO - Jndi(name=\"java:global/bean-validation-design-by-contract/OlympicGamesManager\")\n    INFO - Jndi(name=\"java:global/EjbModule236054577/OlympicGamesTest!OlympicGamesTest\")\n    INFO - Jndi(name=\"java:global/EjbModule236054577/OlympicGamesTest\")\n    INFO - Created Ejb(deployment-id=OlympicGamesManager, ejb-name=OlympicGamesManager, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=PoleVaultingManagerBean, ejb-name=PoleVaultingManagerBean, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=OlympicGamesTest, ejb-name=OlympicGamesTest, container=Default Managed Container)\n    INFO - Started Ejb(deployment-id=OlympicGamesManager, ejb-name=OlympicGamesManager, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=PoleVaultingManagerBean, ejb-name=PoleVaultingManagerBean, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=OlympicGamesTest, ejb-name=OlympicGamesTest, container=Default Managed Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/bean-validation-design-by-contract)\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.245 sec\n\n    Results :\n\n    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/bean-validation-design-by-contract"
+      }
+    ],
+    "versioning":[
+      {
+        "name":"datasource-versioning",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/datasource-versioning"
+      }
+    ],
+    "webapp":[
+      {
+        "name":"resources-declared-in-webapp",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/resources-declared-in-webapp"
+      }
+    ],
+    "weblogic":[
+      {
+        "name":"helloworld-weblogic",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/helloworld-weblogic"
+      }
+    ],
+    "webservice":[
+      {
+        "name":"webservice-attachments",
+        "readme":"Title: Webservice Attachments\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AttachmentImpl\n\n    package org.superbiz.attachment;\n    \n    import javax.activation.DataHandler;\n    import javax.activation.DataSource;\n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    import javax.xml.ws.BindingType;\n    import javax.xml.ws.soap.SOAPBinding;\n    import java.io.IOException;\n    import java.io.InputStream;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has a single interface: {@link AttachmentWs} a webservice interface.\n     */\n    @Stateless\n    @WebService(\n            portName = \"AttachmentPort\",\n            serviceName = \"AttachmentWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.attachment.AttachmentWs\")\n    @BindingType(value = SOAPBinding.SOAP12HTTP_MTOM_BINDING)\n    public class AttachmentImpl implements AttachmentWs {\n    \n        public String stringFromBytes(byte[] data) {\n            return new String(data);\n        }\n    \n        public String stringFromDataSource(DataSource source) {\n    \n            try {\n                InputStream inStr = source.getInputStream();\n                int size = inStr.available();\n                byte[] data = new byte[size];\n                inStr.read(data);\n                inStr.close();\n                return new String(data);\n            } catch (IOException e) {\n                e.printStackTrace();\n            }\n            return \"\";\n        }\n    \n        public String stringFromDataHandler(DataHandler handler) {\n    \n            try {\n                return (String) handler.getContent();\n            } catch (IOException e) {\n                e.printStackTrace();\n            }\n            return \"\";\n        }\n    }\n\n## AttachmentWs\n\n    package org.superbiz.attachment;\n    \n    import javax.activation.DataHandler;\n    import javax.jws.WebService;\n    \n    /**\n     * This is an EJB 3 webservice interface to send attachments throughout SAOP.\n     */\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    public interface AttachmentWs {\n    \n        public String stringFromBytes(byte[] data);\n    \n        // Not working at the moment with SUN saaj provider and CXF\n        //public String stringFromDataSource(DataSource source);\n    \n        public String stringFromDataHandler(DataHandler handler);\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n\n## AttachmentTest\n\n    package org.superbiz.attachment;\n    \n    import junit.framework.TestCase;\n    \n    import javax.activation.DataHandler;\n    import javax.activation.DataSource;\n    import javax.mail.util.ByteArrayDataSource;\n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.BindingProvider;\n    import javax.xml.ws.Service;\n    import javax.xml.ws.soap.SOAPBinding;\n    import java.net.URL;\n    import java.util.Properties;\n    \n    public class AttachmentTest extends TestCase {\n    \n        //START SNIPPET: setup\t\n        private InitialContext initialContext;\n    \n        protected void setUp() throws Exception {\n    \n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            initialContext = new InitialContext(properties);\n        }\n        //END SNIPPET: setup    \n    \n        /**\n         * Create a webservice client using wsdl url\n         *\n         * @throws Exception\n         */\n        //START SNIPPET: webservice\n        public void testAttachmentViaWsInterface() throws Exception {\n            Service service = Service.create(\n                    new URL(\"http://127.0.0.1:4204/AttachmentImpl?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"AttachmentWsService\"));\n            assertNotNull(service);\n    \n            AttachmentWs ws = service.getPort(AttachmentWs.class);\n    \n            // retrieve the SOAPBinding\n            SOAPBinding binding = (SOAPBinding) ((BindingProvider) ws).getBinding();\n            binding.setMTOMEnabled(true);\n    \n            String request = \"tsztelak@gmail.com\";\n    \n            // Byte array\n            String response = ws.stringFromBytes(request.getBytes());\n            assertEquals(request, response);\n    \n            // Data Source\n            DataSource source = new ByteArrayDataSource(request.getBytes(), \"text/plain; charset=UTF-8\");\n    \n            // not yet supported !\n    //        response = ws.stringFromDataSource(source);\n    //        assertEquals(request, response);\n    \n            // Data Handler\n            response = ws.stringFromDataHandler(new DataHandler(source));\n            assertEquals(request, response);\n        }\n        //END SNIPPET: webservice\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.attachment.AttachmentTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-attachments\n    INFO - openejb.base = /Users/dblevins/examples/webservice-attachments\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-attachments/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-attachments/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-attachments/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean AttachmentImpl: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-attachments/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-attachments/classpath.ear\n    INFO - Created Ejb(deployment-id=AttachmentImpl, ejb-name=AttachmentImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=AttachmentImpl, ejb-name=AttachmentImpl, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-attachments/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.034 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-attachments"
+      },
+      {
+        "name":"webservice-holder",
+        "readme":"Title: @WebService OUT params via javax.xml.ws.Holder\n\nWith SOAP it is possible to return multiple values in a single request.  This is impossible in Java as a method can only return one object.\n\nJAX-WS solves this problem with the concept of Holders.  A `javax.xml.ws.Holder` is a simple wrapper object that can be passed into the `@WebService` method as a parameter.  The application sets the value of the holder during the request and the server will send the value back as an OUT parameter.\n\n## Using @WebParam and javax.xml.ws.Holder\n\nThe `@WebParam` annotation allows us to declare the `sum` and `multiply` Holders as `WebParam.Mode.OUT` parameters.  As mentioned, these holders are simply empty buckets the application can fill in with data to have sent to the client.  The server will pass them in uninitialized.\n\n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.ws.out.CalculatorWs\")\n    public class Calculator implements CalculatorWs {\n\n        public void sumAndMultiply(int a, int b,\n                                   @WebParam(name = \"sum\", mode = WebParam.Mode.OUT) Holder<Integer> sum,\n                                   @WebParam(name = \"multiply\", mode = WebParam.Mode.OUT) Holder<Integer> multiply) {\n            sum.value = a + b;\n            multiply.value = a * b;\n        }\n    }\n\nIf the Holders were specified as `WebParam.Mode.INOUT` params, then the client could use them to send data and the application as well.  The `Holder` instances would then be initialized with the data from the client request.  The application could check the data before eventually overriting it with the response values.\n\n## The WSDL\n\nThe above JAX-WS `@WebService` component results in the folliwing WSDL that will be created automatically.  Note the `sumAndMultiplyResponse` complext type returns two elements.  These match the `@WebParam` declarations and our two `Holder<Integer>` params.\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                      name=\"CalculatorService\"\n                      targetNamespace=\"http://superbiz.org/wsdl\"\n                      xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                      xmlns:tns=\"http://superbiz.org/wsdl\"\n                      xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n      <wsdl:types>\n        <xsd:schema attributeFormDefault=\"unqualified\" elementFormDefault=\"unqualified\"\n                    targetNamespace=\"http://superbiz.org/wsdl\"\n                    xmlns:tns=\"http://superbiz.org/wsdl\"\n                    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n          <xsd:element name=\"sumAndMultiply\" type=\"tns:sumAndMultiply\"/>\n          <xsd:complexType name=\"sumAndMultiply\">\n            <xsd:sequence>\n              <xsd:element name=\"arg0\" type=\"xsd:int\"/>\n              <xsd:element name=\"arg1\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"sumAndMultiplyResponse\" type=\"tns:sumAndMultiplyResponse\"/>\n          <xsd:complexType name=\"sumAndMultiplyResponse\">\n            <xsd:sequence>\n              <xsd:element minOccurs=\"0\" name=\"sum\" type=\"xsd:int\"/>\n              <xsd:element minOccurs=\"0\" name=\"multiply\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n        </xsd:schema>\n      </wsdl:types>\n      <wsdl:message name=\"sumAndMultiplyResponse\">\n        <wsdl:part element=\"tns:sumAndMultiplyResponse\" name=\"parameters\"/>\n      </wsdl:message>\n      <wsdl:message name=\"sumAndMultiply\">\n        <wsdl:part element=\"tns:sumAndMultiply\" name=\"parameters\"/>\n      </wsdl:message>\n      <wsdl:portType name=\"CalculatorWs\">\n        <wsdl:operation name=\"sumAndMultiply\">\n          <wsdl:input message=\"tns:sumAndMultiply\" name=\"sumAndMultiply\"/>\n          <wsdl:output message=\"tns:sumAndMultiplyResponse\" name=\"sumAndMultiplyResponse\"/>\n        </wsdl:operation>\n      </wsdl:portType>\n      <wsdl:binding name=\"CalculatorServiceSoapBinding\" type=\"tns:CalculatorWs\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"sumAndMultiply\">\n          <soap:operation soapAction=\"\" style=\"document\"/>\n          <wsdl:input name=\"sumAndMultiply\">\n            <soap:body use=\"literal\"/>\n          </wsdl:input>\n          <wsdl:output name=\"sumAndMultiplyResponse\">\n            <soap:body use=\"literal\"/>\n          </wsdl:output>\n        </wsdl:operation>\n      </wsdl:binding>\n      <wsdl:service name=\"CalculatorService\">\n        <wsdl:port binding=\"tns:CalculatorServiceSoapBinding\" name=\"CalculatorPort\">\n          <soap:address location=\"http://127.0.0.1:4204/Calculator?wsdl\"/>\n        </wsdl:port>\n      </wsdl:service>\n    </wsdl:definitions>\n\n## Testing the OUT params\n\nHere we see a JAX-WS client executing the `sumAndMultiply` operation.  Two empty `Holder` instances are created and passed in as parameters.  The data from the `sumAndMultiplyResponse` is placed in the `Holder` instances and is then available to the client after the operation completes.\n\nThe holders themselves are not actually sent in the request unless they are configured as INOUT params via WebParam.Mode.INOUT on `@WebParam`\n\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n\n    import javax.ejb.embeddable.EJBContainer;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.Holder;\n    import javax.xml.ws.Service;\n    import java.net.URL;\n    import java.util.Properties;\n\n    import static org.junit.Assert.assertEquals;\n    import static org.junit.Assert.assertNotNull;\n\n    public class CalculatorTest {\n\n        @BeforeClass\n        public static void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n            //properties.setProperty(\"httpejbd.print\", \"true\");\n            //properties.setProperty(\"httpejbd.indent.xml\", \"true\");\n            EJBContainer.createEJBContainer(properties);\n        }\n\n        @Test\n        public void outParams() throws Exception {\n            final Service calculatorService = Service.create(\n                    new URL(\"http://127.0.0.1:4204/Calculator?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorService\"));\n\n            assertNotNull(calculatorService);\n\n            final CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);\n\n            final Holder<Integer> sum = new Holder<Integer>();\n            final Holder<Integer> multiply = new Holder<Integer>();\n\n            calculator.sumAndMultiply(4, 6, sum, multiply);\n\n            assertEquals(10, (int) sum.value);\n            assertEquals(24, (int) multiply.value);\n        }\n    }\n\n\n## Inspecting the messages\n\nThe above execution results in the following SOAP message.\n\n### SOAP sumAndMultiply <small>client request</small>\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sumAndMultiply xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <arg0>4</arg0>\n          <arg1>6</arg1>\n        </ns1:sumAndMultiply>\n      </soap:Body>\n    </soap:Envelope>\n\n### SOAP sumAndMultiplyResponse <small>server response</small>\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sumAndMultiplyResponse xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <sum>10</sum>\n          <multiply>24</multiply>\n        </ns1:sumAndMultiplyResponse>\n      </soap:Body>\n    </soap:Envelope>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-holder"
+      },
+      {
+        "name":"webservice-handlerchain",
+        "readme":"Title: @WebService handlers with @HandlerChain\n\nIn this example we see a basic JAX-WS `@WebService` component use a handler chain to alter incoming and outgoing SOAP messages.  SOAP Handlers are similar to Servlet Filters or EJB/CDI Interceptors.\n\nAt high level, the steps involved are:\n\n 1. Create handler(s) implementing `javax.xml.ws.handler.soap.SOAPHandler`\n 1. Declare and order them in an xml file via `<handler-chain>`\n 1. Associate the xml file with an `@WebService` component via `@HandlerChain`\n\n## The @HandlerChain\n\nFirst we'll start with our plain `@WebService` bean, called `Calculator`, which is annotated with `@HandlerChain`\n\n    @Singleton\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.calculator.wsh.CalculatorWs\")\n    @HandlerChain(file = \"handlers.xml\")\n    public class Calculator implements CalculatorWs {\n\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n\n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\nHere we see `@HandlerChain` pointing to a file called `handlers.xml`.  This file could be called anything, but it must be in the same jar and java package as our `Calculator` component.\n\n## The &lt;handler-chains> file\n\nOur `Calculator` service is in the package `org.superbiz.calculator.wsh`, which means our handler chain xml file must be at `org/superbiz/calculator/wsh/handlers.xml` in our application's classpath or the file will not be found and no handlers will be used.\n\nIn maven we achieve this by putting our handlers.xml in `src/main/resources` like so:\n\n - `src/main/resources/org/superbiz/calculator/wsh/handlers.xml`\n\nWith this file we declare and **order** our handler chain.\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <handler-chains xmlns=\"http://java.sun.com/xml/ns/javaee\">\n      <handler-chain>\n        <handler>\n          <handler-name>org.superbiz.calculator.wsh.Inflate</handler-name>\n          <handler-class>org.superbiz.calculator.wsh.Inflate</handler-class>\n        </handler>\n        <handler>\n          <handler-name>org.superbiz.calculator.wsh.Increment</handler-name>\n          <handler-class>org.superbiz.calculator.wsh.Increment</handler-class>\n        </handler>\n      </handler-chain>\n    </handler-chains>\n\nThe order as you might suspect is:\n\n - `Inflate`\n - `Increment`\n\n## The SOAPHandler implementation\n\nOur `Inflate` handler has the job of monitoring *responses* to the `sum` and `multiply` operations and making them 1000 times better.  Manipulation of the message is done by walking the `SOAPBody` and editing the nodes.  The `handleMessage` method is invoked for both requests and responses, so it is important to check the `SOAPBody` before attempting to naviage the nodes.\n\n    import org.w3c.dom.Node;\n    import javax.xml.namespace.QName;\n    import javax.xml.soap.SOAPBody;\n    import javax.xml.soap.SOAPException;\n    import javax.xml.soap.SOAPMessage;\n    import javax.xml.ws.handler.MessageContext;\n    import javax.xml.ws.handler.soap.SOAPHandler;\n    import javax.xml.ws.handler.soap.SOAPMessageContext;\n    import java.util.Collections;\n    import java.util.Set;\n\n    public class Inflate implements SOAPHandler<SOAPMessageContext> {\n\n        public boolean handleMessage(SOAPMessageContext mc) {\n            try {\n                final SOAPMessage message = mc.getMessage();\n                final SOAPBody body = message.getSOAPBody();\n                final String localName = body.getFirstChild().getLocalName();\n\n                if (\"sumResponse\".equals(localName) || \"multiplyResponse\".equals(localName)) {\n                    final Node responseNode = body.getFirstChild();\n                    final Node returnNode = responseNode.getFirstChild();\n                    final Node intNode = returnNode.getFirstChild();\n\n                    final int value = new Integer(intNode.getNodeValue());\n                    intNode.setNodeValue(Integer.toString(value * 1000));\n                }\n\n                return true;\n            } catch (SOAPException e) {\n                return false;\n            }\n        }\n\n        public Set<QName> getHeaders() {\n            return Collections.emptySet();\n        }\n\n        public void close(MessageContext mc) {\n        }\n\n        public boolean handleFault(SOAPMessageContext mc) {\n            return true;\n        }\n    }\n\nThe `Increment` handler is identical in code and therefore not shown.  Instead of multiplying by 1000, it simply adds 1.\n\n## The TestCase\n\nWe use the JAX-WS API to create a Java client for our `Calculator` web service and use it to invoke both the `sum` and `multiply` operations.  Note the clever use of math to assert both the existence and order of our handlers.  If `Inflate` and `Increment` were reversed, the responses would be 11000 and 13000 respectively.\n\n    public class CalculatorTest {\n\n        @BeforeClass\n        public static void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n            EJBContainer.createEJBContainer(properties);\n        }\n\n        @Test\n        public void testCalculatorViaWsInterface() throws Exception {\n            final Service calculatorService = Service.create(\n                    new URL(\"http://127.0.0.1:4204/Calculator?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorService\"));\n\n            assertNotNull(calculatorService);\n\n            final CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);\n\n            // we expect our answers to come back 1000 times better, plus one!\n            assertEquals(10001, calculator.sum(4, 6));\n            assertEquals(12001, calculator.multiply(3, 4));\n        }\n    }\n\n## Running the example\n\nSimply run `mvn clean install` and you should see output similar to the following:\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.wsh.CalculatorTest\n    INFO - openejb.home = /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\n    INFO - openejb.base = /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Beginning load: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers/target/test-classes\n    INFO - Beginning load: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\n    INFO - Auto-deploying ejb Calculator: EjbDeployment(deployment-id=Calculator)\n    INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)\n    INFO - Auto-creating a container for bean Calculator: Container(type=SINGLETON, id=Default Singleton Container)\n    INFO - Creating Container(id=Default Singleton Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.calculator.wsh.CalculatorTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Enterprise application \"/Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\" loaded.\n    INFO - Assembling app: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers\n    INFO - Created Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Singleton Container)\n    INFO - Started Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Singleton Container)\n    INFO - Deployed Application(path=/Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n    INFO -   ** Starting Services **\n    INFO -   NAME                 IP              PORT\n    INFO -   httpejbd             127.0.0.1       4204\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from class org.superbiz.calculator.wsh.CalculatorWs\n    INFO - Setting the server's publish address to be http://nopath:80\n    INFO - Webservice(wsdl=http://127.0.0.1:4204/Calculator, qname={http://superbiz.org/wsdl}CalculatorService) --> Ejb(id=Calculator)\n    INFO -   admin thread         127.0.0.1       4200\n    INFO -   ejbd                 127.0.0.1       4201\n    INFO -   ejbd                 127.0.0.1       4203\n    INFO - -------\n    INFO - Ready!\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl\n    INFO - Default SAAJ universe not set\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.783 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n## Inspecting the messages\n\nThe above would generate the following messages.\n\n### Calculator wsdl\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                      name=\"CalculatorService\" targetNamespace=\"http://superbiz.org/wsdl\"\n                      xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                      xmlns:tns=\"http://superbiz.org/wsdl\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n      <wsdl:types>\n        <xsd:schema attributeFormDefault=\"unqualified\" elementFormDefault=\"unqualified\"\n                    targetNamespace=\"http://superbiz.org/wsdl\" xmlns:tns=\"http://superbiz.org/wsdl\"\n                    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n          <xsd:element name=\"multiply\" type=\"tns:multiply\"/>\n          <xsd:complexType name=\"multiply\">\n            <xsd:sequence>\n              <xsd:element name=\"arg0\" type=\"xsd:int\"/>\n              <xsd:element name=\"arg1\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"multiplyResponse\" type=\"tns:multiplyResponse\"/>\n          <xsd:complexType name=\"multiplyResponse\">\n            <xsd:sequence>\n              <xsd:element name=\"return\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"sum\" type=\"tns:sum\"/>\n          <xsd:complexType name=\"sum\">\n            <xsd:sequence>\n              <xsd:element name=\"arg0\" type=\"xsd:int\"/>\n              <xsd:element name=\"arg1\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"sumResponse\" type=\"tns:sumResponse\"/>\n          <xsd:complexType name=\"sumResponse\">\n            <xsd:sequence>\n              <xsd:element name=\"return\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n        </xsd:schema>\n      </wsdl:types>\n      <wsdl:message name=\"multiplyResponse\">\n        <wsdl:part element=\"tns:multiplyResponse\" name=\"parameters\">\n        </wsdl:part>\n      </wsdl:message>\n      <wsdl:message name=\"sumResponse\">\n        <wsdl:part element=\"tns:sumResponse\" name=\"parameters\">\n        </wsdl:part>\n      </wsdl:message>\n      <wsdl:message name=\"sum\">\n        <wsdl:part element=\"tns:sum\" name=\"parameters\">\n        </wsdl:part>\n      </wsdl:message>\n      <wsdl:message name=\"multiply\">\n        <wsdl:part element=\"tns:multiply\" name=\"parameters\">\n        </wsdl:part>\n      </wsdl:message>\n      <wsdl:portType name=\"CalculatorWs\">\n        <wsdl:operation name=\"multiply\">\n          <wsdl:input message=\"tns:multiply\" name=\"multiply\">\n          </wsdl:input>\n          <wsdl:output message=\"tns:multiplyResponse\" name=\"multiplyResponse\">\n          </wsdl:output>\n        </wsdl:operation>\n        <wsdl:operation name=\"sum\">\n          <wsdl:input message=\"tns:sum\" name=\"sum\">\n          </wsdl:input>\n          <wsdl:output message=\"tns:sumResponse\" name=\"sumResponse\">\n          </wsdl:output>\n        </wsdl:operation>\n      </wsdl:portType>\n      <wsdl:binding name=\"CalculatorServiceSoapBinding\" type=\"tns:CalculatorWs\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"multiply\">\n          <soap:operation soapAction=\"\" style=\"document\"/>\n          <wsdl:input name=\"multiply\">\n            <soap:body use=\"literal\"/>\n          </wsdl:input>\n          <wsdl:output name=\"multiplyResponse\">\n            <soap:body use=\"literal\"/>\n          </wsdl:output>\n        </wsdl:operation>\n        <wsdl:operation name=\"sum\">\n          <soap:operation soapAction=\"\" style=\"document\"/>\n          <wsdl:input name=\"sum\">\n            <soap:body use=\"literal\"/>\n          </wsdl:input>\n          <wsdl:output name=\"sumResponse\">\n            <soap:body use=\"literal\"/>\n          </wsdl:output>\n        </wsdl:operation>\n      </wsdl:binding>\n      <wsdl:service name=\"CalculatorService\">\n        <wsdl:port binding=\"tns:CalculatorServiceSoapBinding\" name=\"CalculatorPort\">\n          <soap:address location=\"http://127.0.0.1:4204/Calculator?wsdl\"/>\n        </wsdl:port>\n      </wsdl:service>\n    </wsdl:definitions>\n\n### SOAP sum and sumResponse\n\nRequest:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sum xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <arg0>4</arg0>\n          <arg1>6</arg1>\n        </ns1:sum>\n      </soap:Body>\n    </soap:Envelope>\n\nResponse:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sumResponse xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <return>10001</return>\n        </ns1:sumResponse>\n      </soap:Body>\n    </soap:Envelope>\n\n### SOAP multiply and multiplyResponse\n\nRequest:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:multiply xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <arg0>3</arg0>\n          <arg1>4</arg1>\n        </ns1:multiply>\n      </soap:Body>\n    </soap:Envelope>\n\nResponse:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:multiplyResponse xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <return>12001</return>\n        </ns1:multiplyResponse>\n      </soap:Body>\n    </soap:Envelope>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-handlerchain"
+      },
+      {
+        "name":"webservice-inheritance",
+        "readme":"Title: Webservice Inheritance\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Item\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    import javax.persistence.GenerationType;\n    import javax.persistence.Id;\n    import javax.persistence.Inheritance;\n    import javax.persistence.InheritanceType;\n    import java.io.Serializable;\n    \n    @Entity\n    @Inheritance(strategy = InheritanceType.JOINED)\n    public class Item implements Serializable {\n        @Id\n        @GeneratedValue(strategy = GenerationType.AUTO)\n        private Long id;\n        private String brand;\n        private String itemName;\n        private double price;\n    \n        public Long getId() {\n            return id;\n        }\n    \n        public void setId(Long id) {\n            this.id = id;\n        }\n    \n        public String getBrand() {\n            return brand;\n        }\n    \n        public void setBrand(String brand) {\n            this.brand = brand;\n        }\n    \n        public String getItemName() {\n            return itemName;\n        }\n    \n        public void setItemName(String itemName) {\n            this.itemName = itemName;\n        }\n    \n        public double getPrice() {\n            return price;\n        }\n    \n        public void setPrice(double price) {\n            this.price = price;\n        }\n    }\n\n## Tower\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Tower extends Item {\n        private Fit fit;\n        private String tubing;\n    \n        public static enum Fit {\n            Custom, Exact, Universal\n        }\n    \n        public Fit getFit() {\n            return fit;\n        }\n    \n        public void setFit(Fit fit) {\n            this.fit = fit;\n        }\n    \n        public String getTubing() {\n            return tubing;\n        }\n    \n        public void setTubing(String tubing) {\n            this.tubing = tubing;\n        }\n    \n        ;\n    }\n\n## Wakeboard\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class Wakeboard extends Wearable {\n    }\n\n## WakeboardBinding\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.Entity;\n    \n    @Entity\n    public class WakeboardBinding extends Wearable {\n    }\n\n## WakeRiderImpl\n\n    package org.superbiz.inheritance;\n    \n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    import javax.persistence.EntityManager;\n    import javax.persistence.PersistenceContext;\n    import javax.persistence.PersistenceContextType;\n    import javax.persistence.Query;\n    import java.util.List;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean Every stateless session\n     * bean implementation must be annotated using the annotation @Stateless This\n     * EJB has a single interface: {@link WakeRiderWs} a webservice interface.\n     */\n    @Stateless\n    @WebService(\n            portName = \"InheritancePort\",\n            serviceName = \"InheritanceWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.inheritance.WakeRiderWs\")\n    public class WakeRiderImpl implements WakeRiderWs {\n    \n        @PersistenceContext(unitName = \"wakeboard-unit\", type = PersistenceContextType.TRANSACTION)\n        private EntityManager entityManager;\n    \n        public void addItem(Item item) throws Exception {\n            entityManager.persist(item);\n        }\n    \n        public void deleteMovie(Item item) throws Exception {\n            entityManager.remove(item);\n        }\n    \n        public List<Item> getItems() throws Exception {\n            Query query = entityManager.createQuery(\"SELECT i FROM Item i\");\n            List<Item> items = query.getResultList();\n            return items;\n        }\n    }\n\n## WakeRiderWs\n\n    package org.superbiz.inheritance;\n    \n    import javax.jws.WebService;\n    import javax.xml.bind.annotation.XmlSeeAlso;\n    import java.util.List;\n    \n    /**\n     * This is an EJB 3 webservice interface that uses inheritance.\n     */\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    @XmlSeeAlso({Wakeboard.class, WakeboardBinding.class, Tower.class})\n    public interface WakeRiderWs {\n        public void addItem(Item item) throws Exception;\n    \n        public void deleteMovie(Item item) throws Exception;\n    \n        public List<Item> getItems() throws Exception;\n    }\n\n## Wearable\n\n    package org.superbiz.inheritance;\n    \n    import javax.persistence.MappedSuperclass;\n    \n    @MappedSuperclass\n    public abstract class Wearable extends Item {\n        protected String size;\n    \n        public String getSize() {\n            return size;\n        }\n    \n        public void setSize(String size) {\n            this.size = size;\n        }\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n    \n\n## persistence.xml\n\n    <persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" version=\"1.0\">\n    \n      <persistence-unit name=\"wakeboard-unit\">\n    \n        <jta-data-source>wakeBoardDatabase</jta-data-source>\n        <non-jta-data-source>wakeBoardDatabaseUnmanaged</non-jta-data-source>\n    \n        <class>org.superbiz.inheritance.Item</class>\n        <class>org.superbiz.inheritance.Tower</class>\n        <class>org.superbiz.inheritance.Wakeboard</class>\n        <class>org.superbiz.inheritance.WakeboardBinding</class>\n        <class>org.superbiz.inheritance.Wearable</class>\n    \n        <properties>\n          <property name=\"openjpa.jdbc.SynchronizeMappings\" value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n    \n      </persistence-unit>\n    </persistence>\n\n## InheritanceTest\n\n    package org.superbiz.inheritance;\n    \n    import junit.framework.TestCase;\n    import org.superbiz.inheritance.Tower.Fit;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.Service;\n    import java.net.URL;\n    import java.util.List;\n    import java.util.Properties;\n    \n    public class InheritanceTest extends TestCase {\n    \n        //START SNIPPET: setup\t\n        private InitialContext initialContext;\n    \n        protected void setUp() throws Exception {\n    \n            Properties p = new Properties();\n            p.put(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            p.put(\"wakeBoardDatabase\", \"new://Resource?type=DataSource\");\n            p.put(\"wakeBoardDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"wakeBoardDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:wakeBoarddb\");\n    \n            p.put(\"wakeBoardDatabaseUnmanaged\", \"new://Resource?type=DataSource\");\n            p.put(\"wakeBoardDatabaseUnmanaged.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            p.put(\"wakeBoardDatabaseUnmanaged.JdbcUrl\", \"jdbc:hsqldb:mem:wakeBoarddb\");\n            p.put(\"wakeBoardDatabaseUnmanaged.JtaManaged\", \"false\");\n    \n            p.put(\"openejb.embedded.remotable\", \"true\");\n    \n            initialContext = new InitialContext(p);\n        }\n        //END SNIPPET: setup    \n    \n        /**\n         * Create a webservice client using wsdl url\n         *\n         * @throws Exception\n         */\n        //START SNIPPET: webservice\n        public void testInheritanceViaWsInterface() throws Exception {\n            Service service = Service.create(\n                    new URL(\"http://127.0.0.1:4204/WakeRiderImpl?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"InheritanceWsService\"));\n            assertNotNull(service);\n    \n            WakeRiderWs ws = service.getPort(WakeRiderWs.class);\n    \n            Tower tower = createTower();\n            Item item = createItem();\n            Wakeboard wakeBoard = createWakeBoard();\n            WakeboardBinding wakeBoardbinding = createWakeboardBinding();\n    \n            ws.addItem(tower);\n            ws.addItem(item);\n            ws.addItem(wakeBoard);\n            ws.addItem(wakeBoardbinding);\n    \n    \n            List<Item> returnedItems = ws.getItems();\n    \n            assertEquals(\"testInheritanceViaWsInterface, nb Items\", 4, returnedItems.size());\n    \n            //check tower\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", returnedItems.get(0).getClass(), Tower.class);\n            tower = (Tower) returnedItems.get(0);\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getBrand(), \"Tower brand\");\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getFit().ordinal(), Fit.Custom.ordinal());\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getItemName(), \"Tower item name\");\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getPrice(), 1.0d);\n            assertEquals(\"testInheritanceViaWsInterface, first Item\", tower.getTubing(), \"Tower tubing\");\n    \n            //check item\n            assertEquals(\"testInheritanceViaWsInterface, second Item\", returnedItems.get(1).getClass(), Item.class);\n            item = (Item) returnedItems.get(1);\n            assertEquals(\"testInheritanceViaWsInterface, second Item\", item.getBrand(), \"Item brand\");\n            assertEquals(\"testInheritanceViaWsInterface, second Item\", item.getItemName(), \"Item name\");\n            assertEquals(\"testInheritanceViaWsInterface, second Item\", item.getPrice(), 2.0d);\n    \n            //check wakeboard\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", returnedItems.get(2).getClass(), Wakeboard.class);\n            wakeBoard = (Wakeboard) returnedItems.get(2);\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", wakeBoard.getBrand(), \"Wakeboard brand\");\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", wakeBoard.getItemName(), \"Wakeboard item name\");\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", wakeBoard.getPrice(), 3.0d);\n            assertEquals(\"testInheritanceViaWsInterface, third Item\", wakeBoard.getSize(), \"WakeBoard size\");\n    \n            //check wakeboardbinding\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", returnedItems.get(3).getClass(), WakeboardBinding.class);\n            wakeBoardbinding = (WakeboardBinding) returnedItems.get(3);\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", wakeBoardbinding.getBrand(), \"Wakeboardbinding brand\");\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", wakeBoardbinding.getItemName(), \"Wakeboardbinding item name\");\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", wakeBoardbinding.getPrice(), 4.0d);\n            assertEquals(\"testInheritanceViaWsInterface, fourth Item\", wakeBoardbinding.getSize(), \"WakeBoardbinding size\");\n        }\n        //END SNIPPET: webservice\n    \n        private Tower createTower() {\n            Tower tower = new Tower();\n            tower.setBrand(\"Tower brand\");\n            tower.setFit(Fit.Custom);\n            tower.setItemName(\"Tower item name\");\n            tower.setPrice(1.0f);\n            tower.setTubing(\"Tower tubing\");\n            return tower;\n        }\n    \n        private Item createItem() {\n            Item item = new Item();\n            item.setBrand(\"Item brand\");\n            item.setItemName(\"Item name\");\n            item.setPrice(2.0f);\n            return item;\n        }\n    \n        private Wakeboard createWakeBoard() {\n            Wakeboard wakeBoard = new Wakeboard();\n            wakeBoard.setBrand(\"Wakeboard brand\");\n            wakeBoard.setItemName(\"Wakeboard item name\");\n            wakeBoard.setPrice(3.0f);\n            wakeBoard.setSize(\"WakeBoard size\");\n            return wakeBoard;\n        }\n    \n        private WakeboardBinding createWakeboardBinding() {\n            WakeboardBinding wakeBoardBinding = new WakeboardBinding();\n            wakeBoardBinding.setBrand(\"Wakeboardbinding brand\");\n            wakeBoardBinding.setItemName(\"Wakeboardbinding item name\");\n            wakeBoardBinding.setPrice(4.0f);\n            wakeBoardBinding.setSize(\"WakeBoardbinding size\");\n            return wakeBoardBinding;\n        }\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.inheritance.InheritanceTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-inheritance\n    INFO - openejb.base = /Users/dblevins/examples/webservice-inheritance\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Configuring Service(id=wakeBoardDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database)\n    INFO - Configuring Service(id=wakeBoardDatabase, type=Resource, provider-id=Default JDBC Database)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-inheritance/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-inheritance/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-inheritance/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean WakeRiderImpl: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Configuring PersistenceUnit(name=wakeboard-unit)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-inheritance/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-inheritance/classpath.ear\n    INFO - PersistenceUnit(name=wakeboard-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 396ms\n    INFO - Created Ejb(deployment-id=WakeRiderImpl, ejb-name=WakeRiderImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=WakeRiderImpl, ejb-name=WakeRiderImpl, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-inheritance/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    WARN - Found no persistent property in \"org.superbiz.inheritance.WakeboardBinding\"\n    WARN - Found no persistent property in \"org.superbiz.inheritance.Wakeboard\"\n    WARN - Found no persistent property in \"org.superbiz.inheritance.WakeboardBinding\"\n    WARN - Found no persistent property in \"org.superbiz.inheritance.Wakeboard\"\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.442 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-inheritance"
+      },
+      {
+        "name":"webservice-security",
+        "readme":"Title: Webservice Security\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## CalculatorImpl\n\n    package org.superbiz.calculator;\n    \n    import javax.annotation.security.DeclareRoles;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has a single interface: CalculatorWs a webservice interface.\n     */\n    //START SNIPPET: code\n    @DeclareRoles(value = {\"Administrator\"})\n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.calculator.CalculatorWs\")\n    public class CalculatorImpl implements CalculatorWs, CalculatorRemote {\n    \n        @RolesAllowed(value = {\"Administrator\"})\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        @RolesAllowed(value = {\"Administrator\"})\n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## CalculatorRemote\n\n    package org.superbiz.calculator;\n    \n    import javax.ejb.Remote;\n    \n    @Remote\n    public interface CalculatorRemote {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## CalculatorWs\n\n    package org.superbiz.calculator;\n    \n    import javax.jws.WebService;\n    \n    //END SNIPPET: code\n    \n    /**\n     * This is an EJB 3 webservice interface\n     * A webservice interface must be annotated with the @Local\n     * annotation.\n     */\n    //START SNIPPET: code\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    public interface CalculatorWs {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n\n## openejb-jar.xml\n\n    <openejb-jar xmlns=\"http://tomee.apache.org/xml/ns/openejb-jar-2.2\">\n      <enterprise-beans>\n        <session>\n          <ejb-name>CalculatorImpl</ejb-name>\n          <web-service-security>\n            <security-realm-name/>\n            <transport-guarantee>NONE</transport-guarantee>\n            <auth-method>BASIC</auth-method>\n          </web-service-security>\n        </session>\n      </enterprise-beans>\n    </openejb-jar>\n\n## CalculatorTest\n\n    package org.superbiz.calculator;\n    \n    import junit.framework.TestCase;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.BindingProvider;\n    import javax.xml.ws.Service;\n    import java.net.URL;\n    import java.util.Properties;\n    \n    public class CalculatorTest extends TestCase {\n    \n        //START SNIPPET: setup\n        private InitialContext initialContext;\n    \n        protected void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            initialContext = new InitialContext(properties);\n        }\n        //END SNIPPET: setup\n    \n        /**\n         * Create a webservice client using wsdl url\n         *\n         * @throws Exception\n         */\n        //START SNIPPET: webservice\n        public void testCalculatorViaWsInterface() throws Exception {\n            URL url = new URL(\"http://127.0.0.1:4204/CalculatorImpl?wsdl\");\n            QName calcServiceQName = new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\");\n            Service calcService = Service.create(url, calcServiceQName);\n            assertNotNull(calcService);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n            ((BindingProvider) calc).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, \"jane\");\n            ((BindingProvider) calc).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, \"waterfall\");\n            assertEquals(10, calc.sum(4, 6));\n            assertEquals(12, calc.multiply(3, 4));\n        }\n        //END SNIPPET: webservice\n    }\n\n# Running\n\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.CalculatorTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-security\n    INFO - openejb.base = /Users/dblevins/examples/webservice-security\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-security/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-security/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-security/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean CalculatorImpl: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-security/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-security/classpath.ear\n    INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/webservice-security/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/webservice-security/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-security/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.481 sec\n    \n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-security"
+      },
+      {
+        "name":"simple-webservice-without-interface",
+        "readme":"Title: Simple Webservice Without Interface\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Calculator\n\n    package org.superbiz.calculator;\n    \n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    \n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\")\n    public class Calculator {\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n\n## CalculatorTest\n\n    package org.superbiz.calculator;\n    \n    import org.apache.commons.io.IOUtils;\n    import org.junit.AfterClass;\n    import org.junit.Before;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.NamingException;\n    import java.net.URL;\n    import java.util.Properties;\n    \n    import static org.junit.Assert.assertTrue;\n    \n    public class CalculatorTest {\n        private static EJBContainer container;\n    \n        @BeforeClass\n        public static void setUp() throws Exception {\n            final Properties properties = new Properties();\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            container = EJBContainer.createEJBContainer(properties);\n        }\n    \n        @Before\n        public void inject() throws NamingException {\n            if (container != null) {\n                container.getContext().bind(\"inject\", this);\n            }\n        }\n    \n        @AfterClass\n        public static void close() {\n            if (container != null) {\n                container.close();\n            }\n        }\n    \n        @Test\n        public void wsdlExists() throws Exception {\n            final URL url = new URL(\"http://127.0.0.1:4204/Calculator?wsdl\");\n            assertTrue(IOUtils.readLines(url.openStream()).size() > 0);\n            assertTrue(IOUtils.readLines(url.openStream()).toString().contains(\"CalculatorWsService\"));\n        }\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-webservice-without-interface"
+      },
+      {
+        "name":"webservice-ws-security",
+        "readme":"Title: Webservice Ws Security\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## CalculatorImpl\n\n    package org.superbiz.calculator;\n    \n    import javax.annotation.security.DeclareRoles;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has a single interface: CalculatorWs a webservice interface.\n     */\n    //START SNIPPET: code\n    @DeclareRoles(value = {\"Administrator\"})\n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.calculator.CalculatorWs\")\n    public class CalculatorImpl implements CalculatorWs, CalculatorRemote {\n    \n        @RolesAllowed(value = {\"Administrator\"})\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## CalculatorRemote\n\n    package org.superbiz.calculator;\n    \n    import javax.ejb.Remote;\n    \n    @Remote\n    public interface CalculatorRemote {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## CalculatorWs\n\n    package org.superbiz.calculator;\n    \n    import javax.jws.WebService;\n    \n    //END SNIPPET: code\n    \n    /**\n     * This is an EJB 3 webservice interface\n     * A webservice interface must be annotated with the @Local\n     * annotation.\n     */\n    //START SNIPPET: code\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    public interface CalculatorWs {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n             version=\"3.0\" id=\"simple\" metadata-complete=\"false\">\n    \n      <enterprise-beans>\n    \n        <session>\n          <ejb-name>CalculatorImplTimestamp1way</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplTimestamp2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenPlainPassword</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenHashedPassword</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplSign</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplEncrypt2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplSign2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplEncryptAndSign2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n      </enterprise-beans>\n    \n    </ejb-jar>\n    \n\n## openejb-jar.xml\n\n    <openejb-jar xmlns=\"http://www.openejb.org/openejb-jar/1.1\">\n    \n      <ejb-deployment ejb-name=\"CalculatorImpl\">\n        <properties>\n          # webservice.security.realm\n          # webservice.security.securityRealm\n          # webservice.security.transportGarantee = NONE\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass = org.superbiz.calculator.CustomPasswordHandler\n    \n          # automatically added\n          wss4j.in.validator.{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken = org.apache.openejb.server.cxf.OpenEJBLoginValidator\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplTimestamp1way\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Timestamp\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplTimestamp2ways\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Timestamp\n          wss4j.out.action = Timestamp\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenPlainPassword\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenHashedPassword\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordDigest\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenPlainPasswordEncrypt\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken Encrypt\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n          wss4j.in.decryptionPropFile = META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-server.properties\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplSign\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Signature\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n          wss4j.in.signaturePropFile = META-INF/CalculatorImplSign-server.properties\n        </properties>\n      </ejb-deployment>\n    \n    </openejb-jar>\n    \n\n## webservices.xml\n\n    <webservices xmlns=\"http://java.sun.com/xml/ns/j2ee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\n    http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd\"\n                 xmlns:ger=\"http://ciaows.org/wsdl\" version=\"1.1\">\n    \n      <webservice-description>\n        <webservice-description-name>CalculatorWsService</webservice-description-name>\n        <port-component>\n          <port-component-name>CalculatorImplTimestamp1way</port-component-name>\n          <wsdl-port>CalculatorImplTimestamp1way</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplTimestamp1way</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplTimestamp2ways</port-component-name>\n          <wsdl-port>CalculatorImplTimestamp2ways</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplTimestamp2ways</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenPlainPassword</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenPlainPassword</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenPlainPassword</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenHashedPassword</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenHashedPassword</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenHashedPassword</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenPlainPasswordEncrypt</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-link>\n          </service-impl-bean>\n        </port-component>\n      </webservice-description>\n    \n    </webservices>\n    \n\n## CalculatorTest\n\n    package org.superbiz.calculator;\n    \n    import junit.framework.TestCase;\n    import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;\n    import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;\n    import org.apache.cxf.endpoint.Client;\n    import org.apache.cxf.endpoint.Endpoint;\n    import org.apache.cxf.frontend.ClientProxy;\n    import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;\n    import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;\n    import org.apache.ws.security.WSConstants;\n    import org.apache.ws.security.WSPasswordCallback;\n    import org.apache.ws.security.handler.WSHandlerConstants;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.security.auth.callback.Callback;\n    import javax.security.auth.callback.CallbackHandler;\n    import javax.security.auth.callback.UnsupportedCallbackException;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.Service;\n    import javax.xml.ws.soap.SOAPBinding;\n    import java.io.IOException;\n    import java.net.URL;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.Properties;\n    \n    public class CalculatorTest extends TestCase {\n    \n        //START SNIPPET: setup\n        protected void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            new InitialContext(properties);\n        }\n        //END SNIPPET: setup\n    \n        //START SNIPPET: webservice\n        public void testCalculatorViaWsInterface() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImpl?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithTimestamp1way() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplTimestamp1way?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplTimestamp1way\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\t\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(12, calc.multiply(3, 4));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithTimestamp2ways() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplTimestamp2ways?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplTimestamp2ways\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\t\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n            endpoint.getInInterceptors().add(new SAAJInInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            Map<String, Object> inProps = new HashMap<String, Object>();\n            inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);\n            endpoint.getInInterceptors().add(wssIn);\n    \n            assertEquals(12, calc.multiply(3, 4));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPassword() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPassword?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPassword\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenHashedPassword() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenHashedPassword?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenHashedPassword\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPasswordEncrypt() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPasswordEncrypt?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPasswordEncrypt\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN\n                    + \" \" + WSHandlerConstants.ENCRYPT);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n            outProps.put(WSHandlerConstants.ENC_PROP_FILE, \"META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-client.properties\");\n            outProps.put(WSHandlerConstants.ENCRYPTION_USER, \"serveralias\");\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithSign() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplSign?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplSign\");\n    \n    //      CalculatorWs calc = calcService.getPort(\n    //\tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE);\n            outProps.put(WSHandlerConstants.USER, \"clientalias\");\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"clientPassword\");\n                }\n            });\n            outProps.put(WSHandlerConstants.SIG_PROP_FILE, \"META-INF/CalculatorImplSign-client.properties\");\n            outProps.put(WSHandlerConstants.SIG_KEY_ID, \"IssuerSerial\");\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(24, calc.multiply(4, 6));\n        }\n        //END SNIPPET: webservice\n    }\n\n## CustomPasswordHandler\n\n    package org.superbiz.calculator;\n    \n    import org.apache.ws.security.WSPasswordCallback;\n    \n    import javax.security.auth.callback.Callback;\n    import javax.security.auth.callback.CallbackHandler;\n    import javax.security.auth.callback.UnsupportedCallbackException;\n    import java.io.IOException;\n    \n    public class CustomPasswordHandler implements CallbackHandler {\n        @Override\n        public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n            WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n    \n            if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN) {\n                // TODO get the password from the users.properties if possible\n                pc.setPassword(\"waterfall\");\n            } else if (pc.getUsage() == WSPasswordCallback.DECRYPT) {\n                pc.setPassword(\"serverPassword\");\n            } else if (pc.getUsage() == WSPasswordCallback.SIGNATURE) {\n                pc.setPassword(\"serverPassword\");\n            }\n        }\n    }\n\n# Running\n\n    \n    generate keys:\n    \n    do.sun.jdk:\n         [echo] *** Running on a Sun JDK ***\n         [echo] generate server keys\n         [java] Certificate stored in file </Users/dblevins/examples/webservice-ws-security/target/classes/META-INF/serverKey.rsa>\n         [echo] generate client keys\n         [java] Certificate stored in file </Users/dblevins/examples/webservice-ws-security/target/test-classes/META-INF/clientKey.rsa>\n         [echo] import client/server public keys in client/server keystores\n         [java] Certificate was added to keystore\n         [java] Certificate was added to keystore\n    \n    do.ibm.jdk:\n    \n    run:\n         [echo] Running JDK specific keystore creation target\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.CalculatorTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-ws-security\n    INFO - openejb.base = /Users/dblevins/examples/webservice-ws-security\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-ws-security/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-ws-security/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-ws-security/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean CalculatorImplTimestamp1way: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-ws-security/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-ws-security/classpath.ear\n    INFO - Jndi(name=CalculatorImplTimestamp1wayRemote) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=CalculatorImplTimestamp2waysRemote) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=CalculatorImplUsernameTokenHashedPasswordRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordEncryptRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=CalculatorImplSignRemote) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=CalculatorImplEncrypt2waysRemote) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=CalculatorImplSign2waysRemote) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=CalculatorImplEncryptAndSign2waysRemote) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplSign, ejb-name=CalculatorImplSign, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplTimestamp1way, ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplSign2ways, ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplEncrypt2ways, ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplTimestamp2ways, ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplSign, ejb-name=CalculatorImplSign, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplTimestamp1way, ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplSign2ways, ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplEncrypt2ways, ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplTimestamp2ways, ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-ws-security/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.582 sec\n    \n    Results :\n    \n    Tests run: 7, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-ws-security"
+      },
+      {
+        "name":"simple-webservice",
+        "readme":"Title: JAX-WS @WebService example\n\nCreating Web Services with JAX-WS is quite easy.  Little has to be done aside from annotating a class with `@WebService`.  For\nthe purposes of this example we will also annotate our component with `@Stateless` which takes some of the configuration out of\nthe process and gives us some nice options such as transactions and security.\n\n## @WebService\n\nThe following is all that is required.  No external xml files are needed.  This class placed in a jar or war and deployed into a compliant Java EE server like TomEE is enough to have the Calculator class discovered and deployed and the webservice online.\n\n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n\n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.calculator.ws.CalculatorWs\")\n    public class Calculator implements CalculatorWs {\n\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n\n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## @WebService Endpoint Interface\n\nHaving an endpoint interface is not required, but it can make testing and using the web service from other Java clients far easier.\n\n    import javax.jws.WebService;\n    \n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    public interface CalculatorWs {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## Calculator WSDL\n\nThe wsdl for our service is autmatically created for us and available at `http://127.0.0.1:4204/Calculator?wsdl`.  In TomEE or Tomcat this would be at `http://127.0.0.1:8080/simple-webservice/Calculator?wsdl`\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" name=\"CalculatorService\"\n                      targetNamespace=\"http://superbiz.org/wsdl\"\n                      xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                      xmlns:tns=\"http://superbiz.org/wsdl\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n      <wsdl:types>\n        <xsd:schema attributeFormDefault=\"unqualified\" elementFormDefault=\"unqualified\"\n                    targetNamespace=\"http://superbiz.org/wsdl\" xmlns:tns=\"http://superbiz.org/wsdl\"\n                    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n          <xsd:element name=\"multiply\" type=\"tns:multiply\"/>\n          <xsd:complexType name=\"multiply\">\n            <xsd:sequence>\n              <xsd:element name=\"arg0\" type=\"xsd:int\"/>\n              <xsd:element name=\"arg1\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"multiplyResponse\" type=\"tns:multiplyResponse\"/>\n          <xsd:complexType name=\"multiplyResponse\">\n            <xsd:sequence>\n              <xsd:element name=\"return\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"sum\" type=\"tns:sum\"/>\n          <xsd:complexType name=\"sum\">\n            <xsd:sequence>\n              <xsd:element name=\"arg0\" type=\"xsd:int\"/>\n              <xsd:element name=\"arg1\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n          <xsd:element name=\"sumResponse\" type=\"tns:sumResponse\"/>\n          <xsd:complexType name=\"sumResponse\">\n            <xsd:sequence>\n              <xsd:element name=\"return\" type=\"xsd:int\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n        </xsd:schema>\n      </wsdl:types>\n      <wsdl:message name=\"multiplyResponse\">\n        <wsdl:part element=\"tns:multiplyResponse\" name=\"parameters\"/>\n      </wsdl:message>\n      <wsdl:message name=\"sumResponse\">\n        <wsdl:part element=\"tns:sumResponse\" name=\"parameters\"/>\n      </wsdl:message>\n      <wsdl:message name=\"sum\">\n        <wsdl:part element=\"tns:sum\" name=\"parameters\"/>\n      </wsdl:message>\n      <wsdl:message name=\"multiply\">\n        <wsdl:part element=\"tns:multiply\" name=\"parameters\"/>\n      </wsdl:message>\n      <wsdl:portType name=\"CalculatorWs\">\n        <wsdl:operation name=\"multiply\">\n          <wsdl:input message=\"tns:multiply\" name=\"multiply\"/>\n          <wsdl:output message=\"tns:multiplyResponse\" name=\"multiplyResponse\"/>\n        </wsdl:operation>\n        <wsdl:operation name=\"sum\">\n          <wsdl:input message=\"tns:sum\" name=\"sum\"/>\n          <wsdl:output message=\"tns:sumResponse\" name=\"sumResponse\"/>\n        </wsdl:operation>\n      </wsdl:portType>\n      <wsdl:binding name=\"CalculatorServiceSoapBinding\" type=\"tns:CalculatorWs\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"multiply\">\n          <soap:operation soapAction=\"\" style=\"document\"/>\n          <wsdl:input name=\"multiply\">\n            <soap:body use=\"literal\"/>\n          </wsdl:input>\n          <wsdl:output name=\"multiplyResponse\">\n            <soap:body use=\"literal\"/>\n          </wsdl:output>\n        </wsdl:operation>\n        <wsdl:operation name=\"sum\">\n          <soap:operation soapAction=\"\" style=\"document\"/>\n          <wsdl:input name=\"sum\">\n            <soap:body use=\"literal\"/>\n          </wsdl:input>\n          <wsdl:output name=\"sumResponse\">\n            <soap:body use=\"literal\"/>\n          </wsdl:output>\n        </wsdl:operation>\n      </wsdl:binding>\n      <wsdl:service name=\"CalculatorService\">\n        <wsdl:port binding=\"tns:CalculatorServiceSoapBinding\" name=\"CalculatorPort\">\n          <soap:address location=\"http://127.0.0.1:4204/Calculator?wsdl\"/>\n        </wsdl:port>\n      </wsdl:service>\n    </wsdl:definitions>\n\n## Accessing the @WebService with javax.xml.ws.Service\n\nIn our testcase we see how to create a client for our `Calculator` service via the `javax.xml.ws.Service` class and leveraging our `CalculatorWs` endpoint interface.\n\nWith this we can get an implementation of the interfacce generated dynamically for us that can be used to send compliant SOAP messages to our service.\n\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.Service;\n    import java.net.URL;\n    import java.util.Properties;\n    \n    import static org.junit.Assert.assertEquals;\n    import static org.junit.Assert.assertNotNull;\n    \n    public class CalculatorTest {\n    \n        @BeforeClass\n        public static void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n            //properties.setProperty(\"httpejbd.print\", \"true\");\n            //properties.setProperty(\"httpejbd.indent.xml\", \"true\");\n            EJBContainer.createEJBContainer(properties);\n        }\n    \n        @Test\n        public void test() throws Exception {\n            Service calculatorService = Service.create(\n                    new URL(\"http://127.0.0.1:4204/Calculator?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorService\"));\n    \n            assertNotNull(calculatorService);\n    \n            CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);\n            assertEquals(10, calculator.sum(4, 6));\n            assertEquals(12, calculator.multiply(3, 4));\n        }\n    }\n\nFor easy testing we'll use the Embeddable EJBContainer API part of EJB 3.1 to boot CXF in our testcase.  This will deploy our application in the embedded container and bring the web service online so we can invoke it.\n\n# Running\n\nRunning the example can be done from maven with a simple 'mvn clean install' command run from the 'simple-webservice' directory.\n\nWhen run you should see output similar to the following.\n\n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.ws.CalculatorTest\n    INFO - ********************************************************************************\n    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Sat Feb 18 19:11:50 PST 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.\n    INFO - Version: 4.0.0-beta-3\n    INFO - Build date: 20120218\n    INFO - Build time: 03:32\n    INFO - ********************************************************************************\n    INFO - openejb.home = /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice\n    INFO - openejb.base = /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice\n    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@16bdb503\n    INFO - succeeded in installing singleton service\n    INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Creating TransactionManager(id=Default Transaction Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    INFO - Beginning load: /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice/target/classes\n    INFO - Using 'openejb.embedded=true'\n    INFO - Configuring enterprise application: /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice\n    INFO - Auto-deploying ejb Calculator: EjbDeployment(deployment-id=Calculator)\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean Calculator: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Creating Container(id=Default Stateless Container)\n    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)\n    INFO - Auto-creating a container for bean org.superbiz.calculator.ws.CalculatorTest: Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating Container(id=Default Managed Container)\n    INFO - Using directory /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T for stateful session passivation\n    INFO - Enterprise application \"/Users/dblevins/work/all/trunk/openejb/examples/simple-webservice\" loaded.\n    INFO - Assembling app: /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice\n    INFO - ignoreXmlConfiguration == true\n    INFO - ignoreXmlConfiguration == true\n    INFO - existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@16bdb503\n    INFO - OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]\n    INFO - All injection points were validated successfully.\n    INFO - OpenWebBeans Container has started, it took [62] ms.\n    INFO - Created Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/work/all/trunk/openejb/examples/simple-webservice)\n    INFO - Initializing network services\n    INFO - can't find log4j MDC class\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n    INFO -   ** Starting Services **\n    INFO -   NAME                 IP              PORT\n    INFO -   httpejbd             127.0.0.1       4204\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from class org.superbiz.calculator.ws.CalculatorWs\n    INFO - Setting the server's publish address to be http://nopath:80\n    INFO - Webservice(wsdl=http://127.0.0.1:4204/Calculator, qname={http://superbiz.org/wsdl}CalculatorService) --> Ejb(id=Calculator)\n    INFO -   admin thread         127.0.0.1       4200\n    INFO -   ejbd                 127.0.0.1       4201\n    INFO -   ejbd                 127.0.0.1       4203\n    INFO - -------\n    INFO - Ready!\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl\n    INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl\n    INFO - Default SAAJ universe not set\n    INFO - TX NotSupported: Suspended transaction null\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.584 sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n## Inspecting the messages\n\nThe above test case will result in the following SOAP messages being sent between the clien and server.\n\n### sum(int, int)\n\nRequest SOAP message:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sum xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <arg0>4</arg0>\n          <arg1>6</arg1>\n        </ns1:sum>\n      </soap:Body>\n    </soap:Envelope>\n\nResponse SOAP message:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:sumResponse xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <return>10</return>\n        </ns1:sumResponse>\n      </soap:Body>\n    </soap:Envelope>\n\n### multiply(int, int)\n\nRequest SOAP message:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:multiply xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <arg0>3</arg0>\n          <arg1>4</arg1>\n        </ns1:multiply>\n      </soap:Body>\n    </soap:Envelope>\n\nResponse SOAP message:\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n      <soap:Body>\n        <ns1:multiplyResponse xmlns:ns1=\"http://superbiz.org/wsdl\">\n          <return>12</return>\n        </ns1:multiplyResponse>\n      </soap:Body>\n    </soap:Envelope>\n\n## Inside the jar\n\nWith so much going on it can make things look more complex than they are.  It can be hard to believe that so much can happen with such little code.  That's the benefit of having an app server.\n\nIf we look at the jar built by maven, we'll see the application itself is quite small:\n\n    $ jar tvf target/simple-webservice-1.1.0-SNAPSHOT.jar\n         0 Sat Feb 18 19:17:06 PST 2012 META-INF/\n       127 Sat Feb 18 19:17:04 PST 2012 META-INF/MANIFEST.MF\n         0 Sat Feb 18 19:17:02 PST 2012 org/\n         0 Sat Feb 18 19:17:02 PST 2012 org/superbiz/\n         0 Sat Feb 18 19:17:02 PST 2012 org/superbiz/calculator/\n         0 Sat Feb 18 19:17:02 PST 2012 org/superbiz/calculator/ws/\n       855 Sat Feb 18 19:17:02 PST 2012 org/superbiz/calculator/ws/Calculator.class\n       288 Sat Feb 18 19:17:02 PST 2012 org/superbiz/calculator/ws/CalculatorWs.class\n\nThis single jar could be deployed any any compliant Java EE implementation.  In TomEE you'd simply place it in the `tomee.home/webapps/` directory.  No war file necessary.  If you did want to create a war, you'd simply place the jar in the `WEB-INF/lib/` directory of the war.\n\nThe server already contains the right libraries to run the code, such as Apache CXF, so no need to include anything extra beyond your own application code.\n\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-webservice"
+      },
+      {
+        "name":"ejb-webservice",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/ejb-webservice"
+      },
+      {
+        "name":"webservice-ws-with-resources-config",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-ws-with-resources-config"
+      },
+      {
+        "name":"pojo-webservice",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/pojo-webservice"
+      }
+    ],
+    "without":[
+      {
+        "name":"simple-webservice-without-interface",
+        "readme":"Title: Simple Webservice Without Interface\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## Calculator\n\n    package org.superbiz.calculator;\n    \n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    \n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\")\n    public class Calculator {\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n\n## CalculatorTest\n\n    package org.superbiz.calculator;\n    \n    import org.apache.commons.io.IOUtils;\n    import org.junit.AfterClass;\n    import org.junit.Before;\n    import org.junit.BeforeClass;\n    import org.junit.Test;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import javax.naming.NamingException;\n    import java.net.URL;\n    import java.util.Properties;\n    \n    import static org.junit.Assert.assertTrue;\n    \n    public class CalculatorTest {\n        private static EJBContainer container;\n    \n        @BeforeClass\n        public static void setUp() throws Exception {\n            final Properties properties = new Properties();\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            container = EJBContainer.createEJBContainer(properties);\n        }\n    \n        @Before\n        public void inject() throws NamingException {\n            if (container != null) {\n                container.getContext().bind(\"inject\", this);\n            }\n        }\n    \n        @AfterClass\n        public static void close() {\n            if (container != null) {\n                container.close();\n            }\n        }\n    \n        @Test\n        public void wsdlExists() throws Exception {\n            final URL url = new URL(\"http://127.0.0.1:4204/Calculator?wsdl\");\n            assertTrue(IOUtils.readLines(url.openStream()).size() > 0);\n            assertTrue(IOUtils.readLines(url.openStream()).toString().contains(\"CalculatorWsService\"));\n        }\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar/>\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/simple-webservice-without-interface"
+      }
+    ],
+    "ws":[
+      {
+        "name":"webservice-ws-security",
+        "readme":"Title: Webservice Ws Security\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## CalculatorImpl\n\n    package org.superbiz.calculator;\n    \n    import javax.annotation.security.DeclareRoles;\n    import javax.annotation.security.RolesAllowed;\n    import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    \n    /**\n     * This is an EJB 3 style pojo stateless session bean\n     * Every stateless session bean implementation must be annotated\n     * using the annotation @Stateless\n     * This EJB has a single interface: CalculatorWs a webservice interface.\n     */\n    //START SNIPPET: code\n    @DeclareRoles(value = {\"Administrator\"})\n    @Stateless\n    @WebService(\n            portName = \"CalculatorPort\",\n            serviceName = \"CalculatorWsService\",\n            targetNamespace = \"http://superbiz.org/wsdl\",\n            endpointInterface = \"org.superbiz.calculator.CalculatorWs\")\n    public class CalculatorImpl implements CalculatorWs, CalculatorRemote {\n    \n        @RolesAllowed(value = {\"Administrator\"})\n        public int sum(int add1, int add2) {\n            return add1 + add2;\n        }\n    \n        public int multiply(int mul1, int mul2) {\n            return mul1 * mul2;\n        }\n    }\n\n## CalculatorRemote\n\n    package org.superbiz.calculator;\n    \n    import javax.ejb.Remote;\n    \n    @Remote\n    public interface CalculatorRemote {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## CalculatorWs\n\n    package org.superbiz.calculator;\n    \n    import javax.jws.WebService;\n    \n    //END SNIPPET: code\n    \n    /**\n     * This is an EJB 3 webservice interface\n     * A webservice interface must be annotated with the @Local\n     * annotation.\n     */\n    //START SNIPPET: code\n    @WebService(targetNamespace = \"http://superbiz.org/wsdl\")\n    public interface CalculatorWs {\n    \n        public int sum(int add1, int add2);\n    \n        public int multiply(int mul1, int mul2);\n    }\n\n## ejb-jar.xml\n\n    <ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n             version=\"3.0\" id=\"simple\" metadata-complete=\"false\">\n    \n      <enterprise-beans>\n    \n        <session>\n          <ejb-name>CalculatorImplTimestamp1way</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplTimestamp2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenPlainPassword</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenHashedPassword</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplSign</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplEncrypt2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplSign2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n        <session>\n          <ejb-name>CalculatorImplEncryptAndSign2ways</ejb-name>\n          <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>\n          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>\n          <session-type>Stateless</session-type>\n          <transaction-type>Container</transaction-type>\n        </session>\n    \n      </enterprise-beans>\n    \n    </ejb-jar>\n    \n\n## openejb-jar.xml\n\n    <openejb-jar xmlns=\"http://www.openejb.org/openejb-jar/1.1\">\n    \n      <ejb-deployment ejb-name=\"CalculatorImpl\">\n        <properties>\n          # webservice.security.realm\n          # webservice.security.securityRealm\n          # webservice.security.transportGarantee = NONE\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass = org.superbiz.calculator.CustomPasswordHandler\n    \n          # automatically added\n          wss4j.in.validator.{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken = org.apache.openejb.server.cxf.OpenEJBLoginValidator\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplTimestamp1way\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Timestamp\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplTimestamp2ways\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Timestamp\n          wss4j.out.action = Timestamp\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenPlainPassword\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenHashedPassword\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken\n          wss4j.in.passwordType = PasswordDigest\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplUsernameTokenPlainPasswordEncrypt\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = UsernameToken Encrypt\n          wss4j.in.passwordType = PasswordText\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n          wss4j.in.decryptionPropFile = META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-server.properties\n        </properties>\n      </ejb-deployment>\n      <ejb-deployment ejb-name=\"CalculatorImplSign\">\n        <properties>\n          webservice.security.authMethod = WS-SECURITY\n          wss4j.in.action = Signature\n          wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler\n          wss4j.in.signaturePropFile = META-INF/CalculatorImplSign-server.properties\n        </properties>\n      </ejb-deployment>\n    \n    </openejb-jar>\n    \n\n## webservices.xml\n\n    <webservices xmlns=\"http://java.sun.com/xml/ns/j2ee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\n    http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd\"\n                 xmlns:ger=\"http://ciaows.org/wsdl\" version=\"1.1\">\n    \n      <webservice-description>\n        <webservice-description-name>CalculatorWsService</webservice-description-name>\n        <port-component>\n          <port-component-name>CalculatorImplTimestamp1way</port-component-name>\n          <wsdl-port>CalculatorImplTimestamp1way</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplTimestamp1way</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplTimestamp2ways</port-component-name>\n          <wsdl-port>CalculatorImplTimestamp2ways</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplTimestamp2ways</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenPlainPassword</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenPlainPassword</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenPlainPassword</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenHashedPassword</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenHashedPassword</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenHashedPassword</ejb-link>\n          </service-impl-bean>\n        </port-component>\n        <port-component>\n          <port-component-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</port-component-name>\n          <wsdl-port>CalculatorImplUsernameTokenPlainPasswordEncrypt</wsdl-port>\n          <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>\n          <service-impl-bean>\n            <ejb-link>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-link>\n          </service-impl-bean>\n        </port-component>\n      </webservice-description>\n    \n    </webservices>\n    \n\n## CalculatorTest\n\n    package org.superbiz.calculator;\n    \n    import junit.framework.TestCase;\n    import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;\n    import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;\n    import org.apache.cxf.endpoint.Client;\n    import org.apache.cxf.endpoint.Endpoint;\n    import org.apache.cxf.frontend.ClientProxy;\n    import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;\n    import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;\n    import org.apache.ws.security.WSConstants;\n    import org.apache.ws.security.WSPasswordCallback;\n    import org.apache.ws.security.handler.WSHandlerConstants;\n    \n    import javax.naming.Context;\n    import javax.naming.InitialContext;\n    import javax.security.auth.callback.Callback;\n    import javax.security.auth.callback.CallbackHandler;\n    import javax.security.auth.callback.UnsupportedCallbackException;\n    import javax.xml.namespace.QName;\n    import javax.xml.ws.Service;\n    import javax.xml.ws.soap.SOAPBinding;\n    import java.io.IOException;\n    import java.net.URL;\n    import java.util.HashMap;\n    import java.util.Map;\n    import java.util.Properties;\n    \n    public class CalculatorTest extends TestCase {\n    \n        //START SNIPPET: setup\n        protected void setUp() throws Exception {\n            Properties properties = new Properties();\n            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, \"org.apache.openejb.core.LocalInitialContextFactory\");\n            properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n            new InitialContext(properties);\n        }\n        //END SNIPPET: setup\n    \n        //START SNIPPET: webservice\n        public void testCalculatorViaWsInterface() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImpl?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithTimestamp1way() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplTimestamp1way?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplTimestamp1way\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\t\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(12, calc.multiply(3, 4));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithTimestamp2ways() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplTimestamp2ways?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplTimestamp2ways\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\t\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n            endpoint.getInInterceptors().add(new SAAJInInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            Map<String, Object> inProps = new HashMap<String, Object>();\n            inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);\n            WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);\n            endpoint.getInInterceptors().add(wssIn);\n    \n            assertEquals(12, calc.multiply(3, 4));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPassword() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPassword?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPassword\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenHashedPassword() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenHashedPassword?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenHashedPassword\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPasswordEncrypt() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPasswordEncrypt?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPasswordEncrypt\");\n    \n    //        CalculatorWs calc = calcService.getPort(\n    //        \tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //        \tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN\n                    + \" \" + WSHandlerConstants.ENCRYPT);\n            outProps.put(WSHandlerConstants.USER, \"jane\");\n            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"waterfall\");\n                }\n            });\n            outProps.put(WSHandlerConstants.ENC_PROP_FILE, \"META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-client.properties\");\n            outProps.put(WSHandlerConstants.ENCRYPTION_USER, \"serveralias\");\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(10, calc.sum(4, 6));\n        }\n    \n        public void testCalculatorViaWsInterfaceWithSign() throws Exception {\n            Service calcService = Service.create(new URL(\"http://127.0.0.1:4204/CalculatorImplSign?wsdl\"),\n                    new QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService\"));\n            assertNotNull(calcService);\n    \n            // for debugging (ie. TCPMon)\n            calcService.addPort(new QName(\"http://superbiz.org/wsdl\",\n                    \"CalculatorWsService2\"), SOAPBinding.SOAP12HTTP_BINDING,\n                    \"http://127.0.0.1:8204/CalculatorImplSign\");\n    \n    //      CalculatorWs calc = calcService.getPort(\n    //\tnew QName(\"http://superbiz.org/wsdl\", \"CalculatorWsService2\"),\n    //\tCalculatorWs.class);\n    \n            CalculatorWs calc = calcService.getPort(CalculatorWs.class);\n    \n            Client client = ClientProxy.getClient(calc);\n            Endpoint endpoint = client.getEndpoint();\n            endpoint.getOutInterceptors().add(new SAAJOutInterceptor());\n    \n            Map<String, Object> outProps = new HashMap<String, Object>();\n            outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE);\n            outProps.put(WSHandlerConstants.USER, \"clientalias\");\n            outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {\n    \n                @Override\n                public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n                    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n                    pc.setPassword(\"clientPassword\");\n                }\n            });\n            outProps.put(WSHandlerConstants.SIG_PROP_FILE, \"META-INF/CalculatorImplSign-client.properties\");\n            outProps.put(WSHandlerConstants.SIG_KEY_ID, \"IssuerSerial\");\n    \n            WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);\n            endpoint.getOutInterceptors().add(wssOut);\n    \n            assertEquals(24, calc.multiply(4, 6));\n        }\n        //END SNIPPET: webservice\n    }\n\n## CustomPasswordHandler\n\n    package org.superbiz.calculator;\n    \n    import org.apache.ws.security.WSPasswordCallback;\n    \n    import javax.security.auth.callback.Callback;\n    import javax.security.auth.callback.CallbackHandler;\n    import javax.security.auth.callback.UnsupportedCallbackException;\n    import java.io.IOException;\n    \n    public class CustomPasswordHandler implements CallbackHandler {\n        @Override\n        public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {\n            WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];\n    \n            if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN) {\n                // TODO get the password from the users.properties if possible\n                pc.setPassword(\"waterfall\");\n            } else if (pc.getUsage() == WSPasswordCallback.DECRYPT) {\n                pc.setPassword(\"serverPassword\");\n            } else if (pc.getUsage() == WSPasswordCallback.SIGNATURE) {\n                pc.setPassword(\"serverPassword\");\n            }\n        }\n    }\n\n# Running\n\n    \n    generate keys:\n    \n    do.sun.jdk:\n         [echo] *** Running on a Sun JDK ***\n         [echo] generate server keys\n         [java] Certificate stored in file </Users/dblevins/examples/webservice-ws-security/target/classes/META-INF/serverKey.rsa>\n         [echo] generate client keys\n         [java] Certificate stored in file </Users/dblevins/examples/webservice-ws-security/target/test-classes/META-INF/clientKey.rsa>\n         [echo] import client/server public keys in client/server keystores\n         [java] Certificate was added to keystore\n         [java] Certificate was added to keystore\n    \n    do.ibm.jdk:\n    \n    run:\n         [echo] Running JDK specific keystore creation target\n    \n    -------------------------------------------------------\n     T E S T S\n    -------------------------------------------------------\n    Running org.superbiz.calculator.CalculatorTest\n    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = /Users/dblevins/examples/webservice-ws-security\n    INFO - openejb.base = /Users/dblevins/examples/webservice-ws-security\n    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)\n    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-ws-security/target/classes\n    INFO - Beginning load: /Users/dblevins/examples/webservice-ws-security/target/classes\n    INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-ws-security/classpath.ear\n    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)\n    INFO - Auto-creating a container for bean CalculatorImplTimestamp1way: Container(type=STATELESS, id=Default Stateless Container)\n    INFO - Enterprise application \"/Users/dblevins/examples/webservice-ws-security/classpath.ear\" loaded.\n    INFO - Assembling app: /Users/dblevins/examples/webservice-ws-security/classpath.ear\n    INFO - Jndi(name=CalculatorImplTimestamp1wayRemote) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way) --> Ejb(deployment-id=CalculatorImplTimestamp1way)\n    INFO - Jndi(name=CalculatorImplTimestamp2waysRemote) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)\n    INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)\n    INFO - Jndi(name=CalculatorImplUsernameTokenHashedPasswordRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)\n    INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordEncryptRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)\n    INFO - Jndi(name=CalculatorImplSignRemote) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign) --> Ejb(deployment-id=CalculatorImplSign)\n    INFO - Jndi(name=CalculatorImplEncrypt2waysRemote) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)\n    INFO - Jndi(name=CalculatorImplSign2waysRemote) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways) --> Ejb(deployment-id=CalculatorImplSign2ways)\n    INFO - Jndi(name=CalculatorImplEncryptAndSign2waysRemote) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)\n    INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplSign, ejb-name=CalculatorImplSign, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplTimestamp1way, ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplSign2ways, ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplEncrypt2ways, ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplTimestamp2ways, ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)\n    INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplSign, ejb-name=CalculatorImplSign, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplTimestamp1way, ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplSign2ways, ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplEncrypt2ways, ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplTimestamp2ways, ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)\n    INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default Stateless Container)\n    INFO - Deployed Application(path=/Users/dblevins/examples/webservice-ws-security/classpath.ear)\n    INFO - Initializing network services\n    INFO - Creating ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO - Creating ServerService(id=admin)\n    INFO - Creating ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - Initializing network services\n      ** Starting Services **\n      NAME                 IP              PORT  \n      httpejbd             127.0.0.1       4204  \n      admin thread         127.0.0.1       4200  \n      ejbd                 127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  \n    -------\n    Ready!\n    Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.582 sec\n    \n    Results :\n    \n    Tests run: 7, Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-ws-security"
+      },
+      {
+        "name":"webservice-ws-with-resources-config",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/webservice-ws-with-resources-config"
+      }
+    ],
+    "xml":[
+      {
+        "name":"rest-xml-json",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-xml-json"
+      }
+    ]
+  },
+  "total":276
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100755
index 0000000..a479edc
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>site</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <name>Apache TomEE :: WebSite NG</name>
+
+  <properties>
+    <tomee.version>7.0.3</tomee.version>
+    <jbake.http>false</jbake.http>
+    <jbake.pdf>false</jbake.pdf>
+
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.asciidoctor</groupId>
+      <artifactId>asciidoctorj-pdf</artifactId>
+      <version>1.5.0-alpha.11</version>
+    </dependency>
+    <dependency>
+      <groupId>org.asciidoctor</groupId>
+      <artifactId>asciidoctorj</artifactId>
+      <version>1.5.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.projectlombok</groupId>
+      <artifactId>lombok</artifactId>
+      <version>1.16.12</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-json_1.0_spec</artifactId>
+      <version>1.0-alpha-1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.johnzon</groupId>
+      <artifactId>johnzon-jaxrs</artifactId>
+      <version>0.9.5</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-client</artifactId>
+      <version>3.1.8</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomee</groupId>
+      <artifactId>javaee-api</artifactId>
+      <version>7.0-1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomee</groupId>
+      <artifactId>tomee-embedded</artifactId>
+      <version>${tomee.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jbake</groupId>
+      <artifactId>jbake-core</artifactId>
+      <version>2.4.0</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>jul-to-slf4j</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.groovy</groupId>
+      <artifactId>groovy</artifactId>
+      <version>2.3.11</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.groovy</groupId>
+      <artifactId>groovy-templates</artifactId>
+      <version>2.3.11</version>
+    </dependency>
+    <dependency>
+      <groupId>org.pegdown</groupId>
+      <artifactId>pegdown</artifactId>
+      <version>1.6.0</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.5.1</version>
+        <configuration>
+          <source>1.8</source>
+          <target>1.8</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <version>1.5.0</version>
+        <executions>
+          <execution>
+            <id>tomee-site</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>java</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <includeProjectDependencies>true</includeProjectDependencies>
+          <mainClass>org.apache.tomee.website.JBake</mainClass>
+          <arguments>
+            <argument>${project.basedir}/src/main/jbake/</argument>
+            <argument>${project.build.directory}/${project.build.finalName}</argument>
+            <argument>${jbake.http}</argument>
+            <argument>${jbake.pdf}</argument>
+          </arguments>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/src/main/java/org/apache/tomee/website/Contributors.java b/src/main/java/org/apache/tomee/website/Contributors.java
new file mode 100755
index 0000000..fb4d0bf
--- /dev/null
+++ b/src/main/java/org/apache/tomee/website/Contributors.java
@@ -0,0 +1,222 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.website;
+
+import lombok.Builder;
+import lombok.Data;
+import org.apache.johnzon.jaxrs.JohnzonProvider;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Stream;
+
+import static java.util.Collections.emptyList;
+import static java.util.Optional.ofNullable;
+import static java.util.stream.Collectors.toList;
+
+public class Contributors {
+    private static final String GRAVATAR_BASE = "http://fr.gravatar.com/";
+
+    private Contributors() {
+        // no-op
+    }
+
+    public static Contributor singleLoad(final WebTarget target, final String input) throws IOException {
+        try {
+            return ofNullable(loadGravatar(target, input)).orElse(loadStatic(input));
+        } catch (Exception e) {
+            e.printStackTrace();
+            return loadStatic(input);
+        }
+    }
+
+    public static Contributor loadStatic(final String input) {
+        final String[] strings = input.split(" *\\| *");
+        final String mail = strings[0].replaceAll("\\*$", "");
+        final boolean committer = strings[0].endsWith("*");
+        final String name = strings.length > 1 ? strings[1] : mail.replaceAll("@.*", "");
+        final String picture = strings.length > 2 ? strings[2] : "../img/noimg.png";
+        return Contributor.builder()
+                .name(name)
+                .id(mail)
+                .committer(committer)
+                .gravatar(picture)
+                .build();
+    }
+
+    public static Contributor loadGravatar(final WebTarget target, final String input) throws IOException {
+        final String[] strings = input.split(" *\\| *");
+        final boolean committer = strings[0].endsWith("*");
+        final String mail = committer ? strings[0].substring(0, strings[0].length() - 1) : strings[0];
+        final String hash = gravatarHash(mail);
+        final Response gravatar = target.path(hash + ".json").request(MediaType.APPLICATION_JSON_TYPE).get();
+        if (gravatar.getStatus() != HttpsURLConnection.HTTP_OK) {
+            System.err.println("[ERROR] No gravatar for " + mail);
+            return null;
+        }
+        final Contributor contributor = ofNullable(gravatar.readEntity(Gravatar.class).getEntry())
+                .map(e -> e[0])
+                .map(e -> Contributor.builder()
+                        .id(e.getId())
+                        .name(
+                                ofNullable(e.getName())
+                                        .map(n -> ofNullable(n.getFormatted()).orElse(ofNullable(n.getGivenName()).orElse("") + ofNullable(n.getFamilyName()).orElse("")))
+                                        .orElseGet(() -> ofNullable(e.getDisplayName()).orElse(ofNullable(e.getPreferredUsername()).orElse(mail))))
+                        .description(e.getAboutMe())
+                        .link(
+                                Stream.concat(
+                                        ofNullable(e.getAccounts())
+                                                .map(a -> Stream.of(a).map(l -> Link.builder().name(l.getShortname()).url(l.getUrl()).build()).collect(toList()))
+                                                .orElse(emptyList()).stream(),
+                                        ofNullable(e.getUrls())
+                                                .map(a -> Stream.of(a).map(l -> Link.builder().name(l.getTitle()).url(l.getValue()).build()).collect(toList()))
+                                                .orElse(emptyList()).stream())
+                                        .collect(toList()))
+                        .gravatar("http://www.gravatar.com/avatar/" + hash + "?s=140")
+                        .build())
+                .orElse(Contributor.builder().name(mail).id(mail).build());
+        contributor.setCommitter(committer);
+        ofNullable(contributor.getLink()).ifPresent(l -> Collections.sort(l, (o1, o2) -> o1.getName().compareTo(o2.getName())));
+        return contributor;
+    }
+
+    public static Collection<Contributor> load(final String contributorsList) throws IOException { // used in page.gsp
+        final WebTarget target = ClientBuilder.newClient().register(new JohnzonProvider()).target(GRAVATAR_BASE);
+        final List<Contributor> contributors = new ArrayList<>();
+        final ExecutorService es = Executors.newFixedThreadPool(16);
+        final String rawList = contributorsList.substring(contributorsList.indexOf("<pre>") + "<pre>".length(), contributorsList.indexOf("</pre>"));
+        try (final BufferedReader reader = new BufferedReader(new StringReader(rawList))) {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                line = line.trim();
+                if (line.isEmpty() || line.startsWith("#")) {
+                    continue;
+                }
+                final String mail = line;
+                es.submit(() -> {
+                    Contributor contributor = null;
+                    try {
+                        contributor = singleLoad(target, mail);
+                    } catch (final IOException e) {
+                        throw new IllegalStateException(e);
+                    }
+                    if (contributor != null) {
+                        synchronized (contributors) {
+                            contributors.add(contributor);
+                        }
+                    }
+                });
+            }
+        }
+        es.shutdown();
+        try {
+            es.awaitTermination(30, TimeUnit.MINUTES);
+        } catch (final InterruptedException e) {
+            Thread.interrupted();
+            return Collections.emptyList();
+        }
+        Collections.sort(contributors, (o1, o2) -> o1.name.compareTo(o2.id));
+        return contributors;
+    }
+
+    private static String gravatarHash(final String mail) {
+        try {
+            final MessageDigest md = MessageDigest.getInstance("MD5");
+            byte[] cp1252s = md.digest(mail.getBytes("CP1252"));
+            final StringBuilder sb = new StringBuilder();
+            for (final byte anArray : cp1252s) {
+                sb.append(Integer.toHexString((anArray & 0xFF) | 0x100).substring(1, 3));
+            }
+            return sb.toString();
+        } catch (final NoSuchAlgorithmException | UnsupportedEncodingException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    @Data
+    @Builder
+    public static class Link {
+        private String name;
+        private String url;
+    }
+
+    @Data
+    @Builder
+    public static class Contributor {
+        private String id;
+        private boolean committer;
+        private String name;
+        private String description;
+        private String gravatar;
+        private List<Link> link;
+    }
+
+    @Data
+    public static class GravatarName {
+        private String formatted;
+        private String givenName;
+        private String familyName;
+    }
+
+    @Data
+    public static class GravatarUrl {
+        private String value;
+        private String title;
+    }
+
+    @Data
+    public static class GravatarAccount {
+        private String shortname;
+        private String url;
+    }
+
+    @Data
+    public static class Gravatar {
+        private GravatarEntry[] entry;
+    }
+
+    @Data
+    public static class GravatarEntry {
+        private String id;
+        private String hash;
+        private String aboutMe;
+        private String requestHash;
+        private String profileUrl;
+        private String preferredUsername;
+        private String thumbnailUrl;
+        private GravatarName name;
+        private GravatarUrl[] urls;
+        private GravatarAccount[] accounts;
+        private String displayName;
+    }
+}
diff --git a/src/main/java/org/apache/tomee/website/Downloads.java b/src/main/java/org/apache/tomee/website/Downloads.java
new file mode 100755
index 0000000..cbb6e73
--- /dev/null
+++ b/src/main/java/org/apache/tomee/website/Downloads.java
@@ -0,0 +1,247 @@
+package org.apache.tomee.website;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.text.WordUtils;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Stream;
+
+import static java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME;
+import static java.util.Arrays.asList;
+import static java.util.Optional.ofNullable;
+import static java.util.stream.Collectors.toList;
+import static lombok.AccessLevel.PRIVATE;
+
+// regenerate when needed only, useless to do it for any site update
+@RequiredArgsConstructor(access = PRIVATE)
+public class Downloads {
+    private static final SAXParserFactory FACTORY = SAXParserFactory.newInstance();
+    private static final String MVN_BASE = "http://repo.maven.apache.org/maven2/";
+    private static final long MEGA_RATIO = 1024 * 1024;
+
+    static {
+        FACTORY.setNamespaceAware(false);
+        FACTORY.setValidating(false);
+    }
+
+    public static void main(final String[] args) {
+        System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "512");
+        Stream.of(
+                Stream.of("org/apache/openejb/openejb", "org/apache/tomee/tomee-project")
+                        .flatMap(Downloads::toVersions)
+                        .map(v -> v.extensions("zip"))
+                        .map(v -> v.classifiers("source-release")),
+                versionStream("apache-tomee")
+                        .map(v -> v.version.startsWith("1.") ?
+                                v.classifiers("plus", "plume", "webprofile", "jaxrs") : v.classifiers("plus", "plume", "webprofile"))
+                        .map(v -> v.extensions("tar.gz", "zip")),
+                versionStream("openejb-standalone")
+                        .map(v -> v.extensions("tar.gz", "zip")),
+                versionStream("tomee-webapp")
+                        .map(v -> v.extensions("war")),
+                versionStream("tomee-plus-webapp")
+                        .map(v -> v.extensions("war")),
+                versionStream("tomee-plume-webapp")
+                        .map(v -> v.extensions("war")))
+                .flatMap(s -> s)
+                .flatMap(Downloads::toDownloadable)
+                .parallel()
+                .map(Downloads::fillDownloadable)
+                .filter(Objects::nonNull /* skipped */)
+                .sorted((o1, o2) -> {
+                    final int nameComp = o1.name.compareTo(o2.name);
+                    if (nameComp != 0) {
+                        return nameComp;
+                    }
+
+                    final int versionComp = o2.version.compareTo(o1.version);
+                    if (versionComp != 0) {
+                        if (o2.version.startsWith(o1.version) && o2.version.contains("-M")) { // milestone
+                            return -1;
+                        }
+                        if (o1.version.startsWith(o2.version) && o1.version.contains("-M")) { // milestone
+                            return 1;
+                        }
+                        return versionComp;
+                    }
+
+                    final long dateComp = LocalDateTime.parse(o2.date, RFC_1123_DATE_TIME).toInstant(ZoneOffset.UTC).toEpochMilli()
+                            - LocalDateTime.parse(o1.date, RFC_1123_DATE_TIME).toInstant(ZoneOffset.UTC).toEpochMilli();
+                    if (dateComp != 0) {
+                        return (int) dateComp;
+                    }
+
+                    return o1.url.compareTo(o2.url);
+                })
+                .collect(toList())
+                .forEach(d ->
+                        System.out.println("" +
+                                "|" + d.name + (d.classifier.isEmpty() ? "" : (" " + d.classifier)) +
+                                "|" + d.version +
+                                "|" + d.date +
+                                "|" + d.size + " MB " +
+                                "|" + d.format +
+                                "| " + d.url + "[icon:download[] " + d.format + "] " + d.sha1 + "[icon:download[] sha1] " + d.md5 + "[icon:download[] md5] " + d.asc + "[icon:download[] asc]"));
+    }
+
+    private static Download fillDownloadable(final Download download) {
+        try {
+            final URL url = new URL(download.url);
+            final HttpURLConnection connection = HttpURLConnection.class.cast(url.openConnection());
+            connection.setConnectTimeout((int) TimeUnit.SECONDS.toMillis(30));
+            final int responseCode = connection.getResponseCode();
+            if (responseCode != HttpURLConnection.HTTP_OK) {
+                if (HttpURLConnection.HTTP_NOT_FOUND != responseCode) {
+                    System.err.println("Got " + responseCode + " for " + download.url);
+                }
+                return null;
+            }
+
+            download.setDate(connection.getHeaderField("Last-Modified").replaceAll(" +", " "));
+            download.setSize(toMega(ofNullable(connection.getHeaderField("Content-Length")).map(Long::parseLong).orElse(0L), ofNullable(connection.getHeaderField("Accept-Ranges")).orElse("bytes")));
+
+            connection.getInputStream().close();
+        } catch (final IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+        return download;
+    }
+
+    private static long toMega(final long length, final String bytes) {
+        if (!"bytes".equalsIgnoreCase(bytes)) {
+            throw new IllegalArgumentException("Not handled unit: " + bytes);
+        }
+        return length / MEGA_RATIO;
+    }
+
+    private static Stream<Version> versionStream(final String artifactId) {
+        return Stream.of(artifactId)
+                .flatMap(s -> Stream.of("org/apache/tomee/" + s, "org/apache/openejb/" + s))
+                .flatMap(Downloads::toVersions);
+    }
+
+    private static Stream<Download> toDownloadable(final Version version) {
+        final String base = version.base;
+        final String artifactId = base.substring(base.lastIndexOf('/') + 1, base.length());
+        final String artifactBase = version.base + "/" + version.version + "/" + artifactId + "-" + version.version;
+        return version.extensions.stream()
+                .flatMap(e -> (version.classifiers.isEmpty() ? Stream.of(new ArtifactDescription("", e)) : version.classifiers.stream().map(c -> new ArtifactDescription(c, e))))
+                .map(a -> toDownload(artifactId, a.classifier, version.version, a.extension, artifactBase + (a.classifier.isEmpty() ? '.' + a.extension : ('-' + a.classifier + '.' + a.extension))));
+    }
+
+    private static Download toDownload(final String artifactId, final String classifier, final String version, final String format, final String url) {
+        return new Download(
+                WordUtils.capitalize(artifactId.replace('-', ' ')).replace("Openejb", "OpenEJB").replace("Tomee", "TomEE"),
+                classifier,
+                version,
+                format,
+                url,
+                url + ".md5",
+                url + ".sha1",
+                url + ".asc");
+    }
+
+    private static Stream<Version> toVersions(final String baseUrl) {
+        final QuickMvnMetadataParser handler = new QuickMvnMetadataParser();
+        final String base = MVN_BASE + baseUrl;
+        try (final InputStream stream = new URL(base + "/maven-metadata.xml").openStream()) {
+            final SAXParser parser = FACTORY.newSAXParser();
+            parser.parse(stream, handler);
+            return handler.foundVersions.stream().map(v -> new Version(base, v)).parallel();
+        } catch (final Exception e) {
+            e.printStackTrace();
+            return Stream.empty();
+        }
+    }
+
+    @AllArgsConstructor
+    public static class Version {
+        private final String base;
+        private final String version;
+        private final Collection<String> classifiers = new ArrayList<>();
+        private final Collection<String> extensions = new ArrayList<>();
+
+        private Version extensions(final String... values) {
+            extensions.addAll(asList(values));
+            return this;
+        }
+
+        private Version classifiers(final String... values) {
+            classifiers.addAll(asList(values));
+            return this;
+        }
+    }
+
+    @Data
+    public static class ArtifactDescription {
+        private final String classifier;
+        private final String extension;
+    }
+
+    @Data
+    public static class Download {
+        private final String name;
+        private final String classifier;
+        private final String version;
+        private final String format;
+        private final String url;
+        private final String md5;
+        private final String sha1;
+        private final String asc;
+        private String date;
+        private long size;
+    }
+
+    private static class QuickMvnMetadataParser extends DefaultHandler {
+        private boolean versioning = false;
+        private boolean versions = false;
+        private StringBuilder version;
+        private final Collection<String> foundVersions = new ArrayList<>();
+
+        @Override
+        public void startElement(final String uri, final String localName,
+                                 final String name, final Attributes attributes) throws SAXException {
+            if ("versioning".equalsIgnoreCase(name)) {
+                versioning = true;
+            } else if ("versions".equalsIgnoreCase(name)) {
+                versions = true;
+            } else if (versioning && versions && "version".equalsIgnoreCase(name)) {
+                version = new StringBuilder();
+            }
+        }
+
+        @Override
+        public void characters(final char[] ch, final int start, final int length) throws SAXException {
+            if (version != null) {
+                version.append(new String(ch, start, length));
+            }
+        }
+
+        public void endElement(final String uri, final String localName, final String name) throws SAXException {
+            if ("versioning".equalsIgnoreCase(name)) {
+                versioning = false;
+            } else if ("versions".equalsIgnoreCase(name)) {
+                versions = false;
+            } else if ("version".equalsIgnoreCase(name)) {
+                foundVersions.add(version.toString());
+            }
+        }
+    }
+}
diff --git a/src/main/java/org/apache/tomee/website/Examples.java b/src/main/java/org/apache/tomee/website/Examples.java
new file mode 100755
index 0000000..efab3d5
--- /dev/null
+++ b/src/main/java/org/apache/tomee/website/Examples.java
@@ -0,0 +1,319 @@
+package org.apache.tomee.website;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.johnzon.jaxrs.JohnzonProvider;
+import org.apache.johnzon.mapper.JohnzonProperty;
+import org.apache.johnzon.mapper.MapperBuilder;
+
+import javax.ws.rs.ForbiddenException;
+import javax.ws.rs.NotFoundException;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Stream;
+
+import static java.util.Arrays.asList;
+import static java.util.Optional.ofNullable;
+import static java.util.stream.Collectors.toList;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE;
+import static lombok.AccessLevel.PRIVATE;
+import static org.apache.commons.codec.binary.Base64.decodeBase64;
+
+@NoArgsConstructor(access = PRIVATE)
+public class Examples {
+    private static final String DEFAULT_README = "No README.md yet, be the first to contribute one!";
+
+    // don't load it for each page, would be pretty inefficient
+    private static final Map<String, Collection<Example>> CACHE = new TreeMap<>();
+    private static final String CACHE_FILE = "examples.cache";
+    private static final Collection<String> EXCLUDED_KEYWORDS = new HashSet<>(asList(
+            "with", "jvm", "preview", "demo", "to", "a", "access", "and", "app", "application", "auto", "basic", "bean", "by", "change", "complete",
+            "composer", "custom", "declared", "example", "handling", "in", "by", "change", "simple", "interface"));
+
+    public static void populateTree() {
+        final String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+        load();
+        CACHE.forEach((tag, examples) -> examples.forEach(e -> {
+            try (final Writer w = new FileWriter("src/main/jbake/content/examples/" + e.getName() + ".adoc")) {
+                w.write("= " + findTitle(e.getName(), e.getReadme()) + "\n" +
+                        ":jbake-date: " + date + "\n" +
+                        ":jbake-type: page\n" +
+                        ":jbake-tomeepdf:\n" +
+                        ":jbake-status: published\n\n" +
+                        "Example " + e.getName() + " can be browsed at " + e.getUrl() + "\n\n" +
+                        mdToAdoc(e.getReadme()));
+            } catch (final IOException ioe) {
+                throw new IllegalStateException(ioe);
+            }
+        }));
+    }
+
+    public static ExampleWrapper loadAll() {
+        load();
+        return new ExampleWrapper(CACHE, CACHE.values().stream().mapToInt(Collection::size).sum());
+    }
+
+    public static void load() {
+        if (!CACHE.isEmpty()) {
+            return;
+        }
+
+        final File cache = new File(CACHE_FILE);
+        if (cache.isFile()) {
+            System.out.println("Reading examples from cache, delete " + CACHE_FILE + " if you want to reload them");
+            try (final InputStream is = new FileInputStream(cache)) {
+                final ExampleWrapper wrapper = new MapperBuilder().build().readObject(is, ExampleWrapper.class);
+                CACHE.putAll(wrapper.getAll());
+            } catch (IOException e) {
+                throw new IllegalArgumentException(e);
+            }
+            return;
+        }
+
+        final Client client = ClientBuilder.newClient().register(new JohnzonProvider<>());
+        try {
+            final WebTarget github = client.target("https://api.github.com");
+            final Invocation.Builder request = github.path("repos/apache/tomee/contents/examples").request(APPLICATION_JSON_TYPE);
+            final String auth = System.getProperty("github.auth");
+            if (auth != null) {
+                request.header("Authorization", auth);
+            }
+            request
+                    .get(new GenericType<Collection<GithubContentItem>>() {
+                    }).stream().filter(i -> "dir".equals(i.getType()))
+                    .parallel()
+                    .sorted((i1, i2) -> i1.getName().compareTo(i2.getName()))
+                    .map(i -> new Example(i.getName(), i.getHtmlUrl(), loadReadme(auth, github, i)))
+                    .forEach(example -> {
+                        final Collection<String> split = Stream.of(example.getName()
+                                .replace("application-composer", "applicationcomposer")
+                                .replace("configproperty", "config")
+                                .replace("descriptors", "descriptor")
+                                .replace("ejbs", "ejb")
+                                .replace("env-entry", "enventry")
+                                .replace("events", "event")
+                                .replace("interceptors", "interceptor")
+                                .split("-"))
+                                .filter(s -> !EXCLUDED_KEYWORDS.contains(s))
+                                .filter(s -> {
+                                    try {
+                                        Integer.parseInt(s);
+                                        return false;
+                                    } catch (final NumberFormatException nfe) {
+                                        return true;
+                                    }
+                                })
+                                .collect(toList());
+                        if (split.isEmpty()) {
+                            CACHE.computeIfAbsent("Unclassified", k -> new ArrayList<>()).add(example);
+                        } else {
+                            for (final String keyword : split) {
+                                CACHE.computeIfAbsent(keyword, k -> new ArrayList<>()).add(example);
+                            }
+                        }
+                    });
+
+            // debug stats
+            final int totalExamples = CACHE.size();
+            final long exampleMissingReadme = CACHE.values().stream().flatMap(Collection::stream).filter(e -> DEFAULT_README.equals(e.getReadme())).count();
+            System.out.println(exampleMissingReadme + "/" + totalExamples + " miss a README.md");
+            CACHE.values().stream().flatMap(Collection::stream).filter(e -> DEFAULT_README.equals(e.getReadme())).forEach(e -> System.out.println("  - " + e.getName()));
+
+            try (final OutputStream os = new FileOutputStream(CACHE_FILE)) {
+                new MapperBuilder().setPretty(true).build().writeObject(loadAll(), os);
+            } catch (final IOException e) {
+                throw new IllegalArgumentException(e);
+            }
+        } finally {
+            client.close();
+        }
+    }
+
+    private static String loadReadme(final String auth, final WebTarget github, final GithubContentItem i) {
+        try {
+            final Invocation.Builder request = github.path("repos/apache/tomee/contents/examples/{name}/README.md")
+                    .resolveTemplate("name", i.getName()).request(APPLICATION_JSON_TYPE);
+            if (auth != null) {
+                request.header("Authorization", auth);
+            }
+            return ofNullable(request
+                    .get(GithubContentItem.class)
+                    .getContent())
+                    .map(c -> new String(decodeBase64(c), StandardCharsets.UTF_8))
+                    .orElse(DEFAULT_README);
+        } catch (final NotFoundException wae) {
+            System.err.println(wae.getMessage() + " for the README.md of " + i.getName());
+            return DEFAULT_README;
+        } catch (final ForbiddenException wae) {
+            System.err.println("Can't retrieve examples, set -Dgithub.auth=.... to get a higher rate limit");
+            return DEFAULT_README;
+        }
+    }
+
+    private static String findTitle(final String name, final String readme) {
+        try (final BufferedReader reader = new BufferedReader(new StringReader(readme))) {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                if (line.startsWith("Title: ")) {
+                    return line.substring("Title: ".length());
+                }
+            }
+        } catch (final IOException e) {
+            throw new IllegalStateException(e);
+        }
+        return name;
+    }
+
+    // quick cleanup of markdown syntax to adoc one used there
+    private static String mdToAdoc(final String s) {
+        final Pattern link = Pattern.compile("(.*)\\[([^\\]]*)\\]\\(([^\\)]*)\\)(.*)");
+
+        try (final StringWriter writer = new StringWriter();
+             final BufferedReader reader = new BufferedReader(new StringReader(s))) {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                if (line.startsWith("Title: ")) {
+                    continue;
+                }
+                if (line.startsWith("#")) {
+                    for (int i = 0; i < line.length(); i++) {
+                        if (line.charAt(i) == '#') {
+                            writer.append('=');
+                        } else {
+                            writer.append(" ").append(line.substring(i));
+                            break;
+                        }
+                    }
+                } else if (line.startsWith("    package") || line.startsWith("    import") || line.startsWith("    public ") || line.startsWith("    @")) { // java code
+                    writer.append("\n[source,java]\n----\n");
+                    writer.append(line.replaceFirst("    ", "")).append('\n');
+                    while ((line = reader.readLine()) != null) {
+                        writer.append(line.replaceFirst("    ", "")).append('\n');
+                        if ("    }".equals(line)) {
+                            writer.append("----\n");
+                            break;
+                        }
+                    }
+                } else if (line.startsWith("    <")) { // xml code
+                    writer.append("\n[source,xml]\n----\n");
+                    if (line.startsWith("    <?")) { // prolog
+                        writer.append(line.replaceFirst("    ", "")).append('\n');
+                        line = reader.readLine();
+                    }
+                    while (line != null && line.trim().isEmpty()) {
+                        line = reader.readLine();
+                    }
+                    if (line.trim().startsWith("<!--")) {
+                        if (line.contains("-->")) {
+                            writer.append(line.replaceFirst("    ", "")).append('\n');
+                        } else {
+                            do {
+                                writer.append(line.replaceFirst("    ", "")).append('\n');
+                            } while ((line = reader.readLine()) != null && !line.trim().equals("-->"));
+                            writer.append(line.replaceFirst("    ", "")).append('\n');
+                        }
+                        line = reader.readLine();
+                        while (line != null && line.trim().isEmpty()) {
+                            line = reader.readLine();
+                        }
+                    }
+
+                    if (line.trim().endsWith("/>")) {
+                        writer.append(line.replaceFirst("    ", "")).append('\n');
+                        writer.append("----\n");
+                    } else {
+                        final int space = line.indexOf(' ', 5);
+                        final String end = "</" + line.substring(5, space < 0 ? line.indexOf('>') : space) + ">";
+                        writer.append(line.replaceFirst("    ", "")).append('\n');
+                        while ((line = reader.readLine()) != null) {
+                            writer.append(line.replaceFirst("    ", "")).append('\n');
+                            if (end.equals(line.trim())) {
+                                writer.append("----\n");
+                                break;
+                            }
+                        }
+                    }
+                } else if (line.startsWith("    -------------------------------------------------------")) { // run output
+                    writer.append("\n[source]\n----\n");
+                    writer.append(line.replaceFirst("    ", "")).append('\n');
+                    while ((line = reader.readLine()) != null) {
+                        writer.append(line.replaceFirst("    ", "")).append('\n');
+                        if (line.startsWith("    Tests run:") && !line.contains("Time elapsed:")) {
+                            writer.append("----\n");
+                            break;
+                        }
+                    }
+                } else if (line.startsWith(">")) {
+                    writer.append("\nNOTE: ").append(line.substring(1)).append("\n");
+                } else {
+                    final Matcher matcher = link.matcher(line);
+                    if (matcher.matches()) {
+                        String l = matcher.group(3);
+                        if (l.startsWith("../") && l.endsWith("README.html")) { // hack for old relative links
+                            l = l.substring("../".length(), l.length() - "/README.html".length()) + ".html";
+                        }
+                        writer.append(matcher.group(1)).append("link:").append(l).append('[').append(matcher.group(2)).append(']').append(matcher.group(4));
+                    } else {
+                        writer.append(line);
+                    }
+                }
+                writer.append('\n');
+            }
+            return writer.toString();
+        } catch (final IOException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    public static void main(final String[] args) {
+        populateTree();
+    }
+
+    @Data
+    public static class ExampleWrapper {
+        private final Map<String, Collection<Example>> all;
+        private final int total;
+    }
+
+    @Data
+    public static class Example {
+        private final String name;
+        private final String url;
+        private final String readme;
+    }
+
+    @Data
+    public static class GithubContentItem {
+        private String name;
+        private String path;
+        private String type;
+        private String content;
+
+        @JohnzonProperty("html_url")
+        private String htmlUrl;
+    }
+}
diff --git a/src/main/java/org/apache/tomee/website/JBake.java b/src/main/java/org/apache/tomee/website/JBake.java
new file mode 100755
index 0000000..e4b288d
--- /dev/null
+++ b/src/main/java/org/apache/tomee/website/JBake.java
@@ -0,0 +1,181 @@
+package org.apache.tomee.website;
+
+import com.orientechnologies.orient.core.Orient;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.configuration.CompositeConfiguration;
+import org.apache.tomee.embedded.Configuration;
+import org.apache.tomee.embedded.Container;
+import org.jbake.app.ConfigUtil;
+import org.jbake.app.Oven;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.ClosedWatchServiceException;
+import java.nio.file.Path;
+import java.nio.file.WatchEvent;
+import java.nio.file.WatchKey;
+import java.nio.file.WatchService;
+import java.util.Scanner;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Stream;
+
+import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
+import static java.nio.file.StandardWatchEventKinds.ENTRY_DELETE;
+import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY;
+import static lombok.AccessLevel.PRIVATE;
+
+@RequiredArgsConstructor(access = PRIVATE)
+public class JBake {
+    public static void main(final String[] args) throws Exception {
+        System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "64"); // try to have parallelStream better than default
+
+        final File source = args == null || args.length < 1 ? new File("src/main/jbake") : new File(args[0]);
+        final File pdfSource = new File(source, "content");
+        final File destination = args == null || args.length < 2 ? new File("target/site-tmp") : new File(args[1]);
+        final boolean startHttp = args == null || args.length < 2 || Boolean.parseBoolean(args[2]); // by default we dev
+        final boolean skipPdf = args == null || args.length < 3 || Boolean.parseBoolean(args[3]); // by default...too slow sorry
+
+        final Runnable build = () -> {
+            System.out.println("Building TomEE website in " + destination);
+            final Orient orient = Orient.instance();
+            try {
+                orient.startup();
+
+                final Oven oven = new Oven(source, destination, new CompositeConfiguration() {{
+                    addConfiguration(ConfigUtil.load(source));
+                }}, true);
+                oven.setupPaths();
+
+                System.out.println("  > baking");
+                oven.bake();
+
+                if (!skipPdf) {
+                    System.out.println("  > pdfifying");
+                    PDFify.generatePdf(pdfSource, destination);
+                }
+
+                System.out.println("  > done :)");
+            } catch (final Exception e) {
+                e.printStackTrace();
+            } finally {
+                orient.shutdown();
+            }
+        };
+
+        build.run();
+        if (startHttp) {
+            final Path watched = source.toPath();
+            final WatchService watchService = watched.getFileSystem().newWatchService();
+            watched.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
+            final AtomicBoolean run = new AtomicBoolean(true);
+            final AtomicLong render = new AtomicLong(-1);
+            final Thread renderingThread = new Thread() {
+                {
+                    setName("jbake-renderer");
+                }
+
+                @Override
+                public void run() {
+                    long last = System.currentTimeMillis();
+                    while (run.get()) {
+                        if (render.get() > last) {
+                            last = System.currentTimeMillis();
+                            try {
+                                build.run();
+                            } catch (final Throwable oops) {
+                                oops.printStackTrace();
+                            }
+                        }
+                        try {
+                            sleep(TimeUnit.SECONDS.toMillis(1));
+                        } catch (final InterruptedException e) {
+                            Thread.interrupted();
+                            break;
+                        }
+                    }
+                }
+            };
+            final Thread watcherThread = new Thread() {
+                {
+                    setName("jbake-file-watcher");
+                }
+
+                @Override
+                public void run() {
+                    while (run.get()) {
+                        try {
+                            final WatchKey key = watchService.poll(1, TimeUnit.SECONDS);
+                            if (key == null) {
+                                continue;
+                            }
+
+                            for (final WatchEvent<?> event : key.pollEvents()) {
+                                final WatchEvent.Kind<?> kind = event.kind();
+                                if (kind != ENTRY_CREATE && kind != ENTRY_DELETE && kind != ENTRY_MODIFY) {
+                                    continue; // unlikely but better to protect ourself
+                                }
+
+                                final Path updatedPath = Path.class.cast(event.context());
+                                if (kind == ENTRY_DELETE || updatedPath.toFile().isFile()) {
+                                    final String path = updatedPath.toString();
+                                    if (!path.contains("___jb") && !path.endsWith("~")) {
+                                        render.set(System.currentTimeMillis());
+                                    }
+                                }
+                            }
+                            key.reset();
+                        } catch (final InterruptedException e) {
+                            Thread.interrupted();
+                            run.compareAndSet(true, false);
+                        } catch (final ClosedWatchServiceException cwse) {
+                            if (!run.get()) {
+                                throw new IllegalStateException(cwse);
+                            }
+                        }
+                    }
+                }
+            };
+
+            renderingThread.start();
+            watcherThread.start();
+
+            final Runnable onQuit = () -> {
+                run.compareAndSet(true, false);
+                Stream.of(watcherThread, renderingThread).forEach(thread -> {
+                    try {
+                        thread.join();
+                    } catch (final InterruptedException e) {
+                        Thread.interrupted();
+                    }
+                });
+                try {
+                    watchService.close();
+                } catch (final IOException ioe) {
+                    // not important
+                }
+            };
+
+            try (final Container container = new Container(new Configuration() {{
+                setWebResourceCached(false);
+                property("openejb.additional.exclude", "logback,jbake");
+            }}).deployClasspathAsWebApp(null, destination)) {
+                System.out.println("Started on http://localhost:" + container.getConfiguration().getHttpPort());
+
+                final Scanner console = new Scanner(System.in);
+                String cmd;
+                while (((cmd = console.nextLine())) != null) {
+                    if ("quit".equals(cmd)) {
+                        return;
+                    } else if ("r".equals(cmd) || "rebuild".equals(cmd) || "build".equals(cmd) || "b".equals(cmd)) {
+                        render.set(System.currentTimeMillis());
+                    } else {
+                        System.err.println("Ignoring " + cmd + ", please use 'build' or 'quit'");
+                    }
+                }
+            }
+            onQuit.run();
+        }
+    }
+}
diff --git a/src/main/java/org/apache/tomee/website/PDFify.java b/src/main/java/org/apache/tomee/website/PDFify.java
new file mode 100755
index 0000000..b0a2a41
--- /dev/null
+++ b/src/main/java/org/apache/tomee/website/PDFify.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.website;
+
+import lombok.RequiredArgsConstructor;
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.AttributesBuilder;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import static lombok.AccessLevel.PRIVATE;
+import static org.asciidoctor.OptionsBuilder.options;
+
+@RequiredArgsConstructor(access = PRIVATE)
+public class PDFify {
+    public static void generatePdf(final File from, final File targetBase) throws IOException {
+        final Path sourceBase = from.toPath();
+        final Asciidoctor asciidoctor = Asciidoctor.Factory.create();
+        final ExecutorService pool = Executors.newFixedThreadPool(16);
+        Files.walkFileTree(sourceBase, new SimpleFileVisitor<Path>() {
+            @Override
+            public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException {
+                final String fileName = file.getFileName().toString();
+                if (fileName.endsWith(".adoc")) {
+                    pool.submit(() -> {
+                        final String path = sourceBase.relativize(file).toString();
+                        final File target = new File(targetBase, path.substring(0, path.length() - "adoc".length()) + "pdf");
+                        final File asFile = file.toFile();
+                        final Map<String, Object> attributes = asciidoctor.readDocumentHeader(asFile).getAttributes();
+                        // if we generate the PDF link we need to create the PDF excepted if it is expected to be manual
+                        if (attributes.containsKey("jbake-tomeepdf") && !attributes.containsKey("jbake-tomeepdf-manual")) {
+                            asciidoctor.convertFile(
+                                    asFile,
+                                    options().docType("article")
+                                            .backend
+                                            ("pdf")
+                                    .attributes(AttributesBuilder.attributes().attribute("source-highlighter", "coderay")).toFile(target).get());
+                            System.out.println("Generated " + target);
+                        }
+                    });
+                }
+                return super.visitFile(file, attrs);
+            }
+        });
+        pool.shutdown();
+        try {
+            pool.awaitTermination(1, TimeUnit.HOURS);
+        } catch (final InterruptedException e) {
+            Thread.interrupted();
+        }
+    }
+}
diff --git a/src/main/java/org/apache/tomee/website/ServiceJarHelper.java b/src/main/java/org/apache/tomee/website/ServiceJarHelper.java
new file mode 100755
index 0000000..135d803
--- /dev/null
+++ b/src/main/java/org/apache/tomee/website/ServiceJarHelper.java
@@ -0,0 +1,192 @@
+package org.apache.tomee.website;
+
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.config.sys.JaxbOpenejb;
+import org.apache.openejb.config.sys.ServiceProvider;
+import org.apache.openejb.config.sys.ServicesJar;
+import org.apache.openejb.util.SuperProperties;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+// will stdout some doc from service-jar.xml
+// we could generate it in a template but will likely be manually updated
+// so using it as a kick off only
+public class ServiceJarHelper {
+    public static void main(final String[] args) throws Exception { // based on org.apache.openejb.config.sys.WikiGenerator
+        System.out.println();
+        System.out.println();
+        System.out.println("WARNING");
+        System.out.println("WARNING");
+        System.out.println("WARNING");
+        System.out.println("WARNING these generated contents are generally modified manually to enrich them");
+        System.out.println("WARNING don't overwrite the pages without checking you are losing or not any information");
+        System.out.println("WARNING");
+        System.out.println("WARNING");
+        System.out.println("WARNING");
+        System.out.println();
+        System.out.println();
+        new ServiceJarHelper("org.apache.openejb", new PrintWriter(System.out), true).generate();
+    }
+
+    private final ServicesJar servicesJar;
+    private final PrintWriter out;
+    private final boolean resources;
+
+    public ServiceJarHelper(final String providerName, final PrintWriter printWriter, final boolean resources) throws OpenEJBException {
+        this.servicesJar = JaxbOpenejb.readServicesJar(providerName);
+        this.out = printWriter;
+        this.resources = resources;
+    }
+
+    public void generate() throws Exception {
+        // generate containers
+        final List<ServiceProvider> serviceProvider = servicesJar.getServiceProvider();
+        if (!resources) {
+            Collections.sort(serviceProvider, new Comparator<ServiceProvider>() {
+                @Override
+                public int compare(final ServiceProvider o1, final ServiceProvider o2) {
+                    return grade(o2) - grade(o1);
+                }
+
+                private int grade(final ServiceProvider i) {
+                    final String name = i.getClassName();
+                    if (name.contains("stateless")) {
+                        return 10;
+                    }
+                    if (name.contains("stateful")) {
+                        return 9;
+                    }
+                    if (name.contains("singleton")) {
+                        return 8;
+                    }
+                    if (name.contains("mdb")) {
+                        return 7;
+                    }
+                    if (name.contains("managed")) {
+                        return 6;
+                    }
+                    return 0;
+                }
+            });
+
+            for (final ServiceProvider provider : serviceProvider) {
+                if ("Container".equals(provider.getService())) {
+                    generateService(provider);
+                }
+            }
+        } else {
+
+            final List<String> seen = new ArrayList<>();
+            for (final ServiceProvider provider : servicesJar.getServiceProvider()) {
+                if ("Resource".equals(provider.getService())) {
+
+                    if (seen.containsAll(provider.getTypes())) {
+                        continue;
+                    }
+
+                    generateService(provider);
+
+                    seen.addAll(provider.getTypes());
+                }
+            }
+        }
+        out.println();
+        out.flush();
+    }
+
+    private void generateService(final ServiceProvider provider) {
+        final Map<String, String> defaults = new LinkedHashMap<>();
+        final Map<String, String> comments = new LinkedHashMap<>();
+
+        final SuperProperties properties = (SuperProperties) provider.getProperties();
+        if (!properties.isEmpty()) {
+            for (final Object key : properties.keySet()) {
+                if (key instanceof String) {
+                    final String name = (String) key;
+                    if ("SkipImplicitAttributes".equals(name)) {
+                        continue;
+                    }
+
+                    final Map<String, String> attributes = properties.getAttributes(name);
+
+                    if (attributes.containsKey("hidden")) {
+                        continue;
+                    }
+
+                    final String value = properties.getProperty(name);
+
+                    String comment = properties.getComment(name);
+                    comment = scrubText(comment);
+                    if (comment.isEmpty()) {
+                        comment = "FIXME";
+                    }
+
+                    defaults.put(name, String.valueOf(value));
+                    comments.put(name, comment);
+                }
+            }
+        }
+
+        final String type = provider.getTypes().get(0);
+        out.println("=== " + type);
+        out.println();
+        out.println("Declarable in tomee.xml via");
+        out.println();
+        out.println("[source,xml]");
+        out.println("----");
+        out.print("<" + provider.getService() + " id=\"Foo\" type=\"" + type + "\"");
+        if (defaults.isEmpty()) {
+            out.println(" />");
+        } else {
+            out.println(">");
+            for (final Map.Entry<String, String> entry : defaults.entrySet()) {
+                out.print("    ");
+                out.print(entry.getKey());
+                out.print(" = ");
+                out.println(entry.getValue());
+            }
+            out.println("</" + provider.getService() + ">");
+        }
+        out.println("----");
+        out.println();
+        out.println("Declarable in properties via");
+        out.println();
+        out.println("[source,properties]");
+        out.println("----");
+        out.println("Foo = new://" + provider.getService() + "?type=" + type);
+        for (final Map.Entry<String, String> entry : defaults.entrySet()) {
+            out.print("Foo.");
+            out.print(entry.getKey());
+            out.print(" = ");
+            out.println(entry.getValue());
+        }
+        out.println("----");
+        out.println();
+
+        if (!properties.isEmpty()) {
+            out.println("==== Configuration");
+            out.println();
+            for (final Map.Entry<String, String> entry : comments.entrySet()) {
+                out.println("===== " + entry.getKey());
+                out.println();
+                out.println(entry.getValue());
+                out.println();
+            }
+        }
+
+        out.println();
+    }
+
+    private String scrubText(String text) {
+        if (text == null) {
+            text = "";
+        }
+        return text;
+    }
+}
diff --git a/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java b/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java
new file mode 100755
index 0000000..03b8ead
--- /dev/null
+++ b/src/main/java/org/slf4j/bridge/SLF4JBridgeHandler.java
@@ -0,0 +1,7 @@
+package org.slf4j.bridge;
+
+// dep of org.jbake.app.Oven but we don't want the bridge there
+public class SLF4JBridgeHandler {
+    public static void removeHandlersForRootLogger(){}
+    public static void install() {}
+}
diff --git a/src/main/jbake/assets/bash b/src/main/jbake/assets/bash
new file mode 100755
index 0000000..084b07c
--- /dev/null
+++ b/src/main/jbake/assets/bash
@@ -0,0 +1,147 @@
+#! /bin/bash
+
+#
+# This script will download and install tomee
+# in the user home executing the command
+#
+
+# "exposed" variables
+INSTALL_DIR=~/apache-tomee
+TOMEE_VERSION=7.0.0-M3
+TOMEE_CLASSIFIER=webprofile
+
+set -e
+set -u
+
+# a single stream is enough
+exec 1>&2
+
+# Find Java
+if type -p java; then
+    _java=java
+elif [ -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ];  then   
+    _java="$JAVA_HOME/bin/java"
+else
+    echo "Java not found . Please install java. Aborting"
+    exit 1
+fi
+
+# Targets JavaEE 7 so java 7 at least
+if [ "$_java" ]; then
+    version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}')
+    if [ "$version" \< "1.7" ]; then           
+        echo "JDK Version is less than 1.7 . TomEE $TOMEE_VERSION requires JDK 7+ . Aborting."
+        exit 1
+    fi
+fi
+
+TMP_DIR="$INSTALL_DIR/install"
+TMP_CONF_DIR="$INSTALL_DIR/install_conf"
+TMP_WEBAPPS_DIR="$INSTALL_DIR/install_webapps"
+TMP_APPS_DIR="$INSTALL_DIR/install_apps"
+
+# save existing configuration
+if [ -d "$INSTALL_DIR" ]; then
+    echo "Saving previous installation state."
+
+    rm -rf "$TMP_CONF_DIR" "$TMP_WEBAPPS_DIR" "$TMP_APPS_DIR"
+    mkdir -p "$TMP_CONF_DIR" "$TMP_WEBAPPS_DIR" "$TMP_APPS_DIR"
+
+    tomee_base="$INSTALL_DIR/apache-tomee-$TOMEE_CLASSIFIER-$TOMEE_VERSION"
+    cp -r "$tomee_base/conf/." "$TMP_CONF_DIR"
+    cp -r "$tomee_base/webapps/." "$TMP_WEBAPPS_DIR"
+    if [ -d "$tomee_base/apps" ]; then
+        cp -r "$tomee_base/apps/." "$TMP_APPS_DIR"
+    fi
+
+    # remove distribution webapp to use new ones
+    rm -rf "$TMP_WEBAPPS_DIR/ROOT" "$TMP_WEBAPPS_DIR/docs" "$TMP_WEBAPPS_DIR/manager" "$TMP_WEBAPPS_DIR/host-manager"
+fi
+
+# get the new binaries
+rm -rf "$INSTALL_DIR" "$TMP_DIR"
+mkdir -p "$INSTALL_DIR" "$TMP_DIR"
+
+DOWNLOAD_LINK="http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/$TOMEE_VERSION/apache-tomee-$TOMEE_VERSION-$TOMEE_CLASSIFIER.zip"
+DOWNLOAD_ZIP="$TMP_DIR/tomee.zip"
+echo "Downloading TomEE $TOMEE_VERSION from $DOWNLOAD_LINK"
+curl --location --fail --progress-bar $DOWNLOAD_LINK > "$DOWNLOAD_ZIP"
+
+test -f "$DOWNLOAD_ZIP"
+
+echo "Extracting TomEE $TOMEE_VERSION"
+unzip "$DOWNLOAD_ZIP" -d "$INSTALL_DIR"
+TOMEE_BASE="$INSTALL_DIR/apache-tomee-$TOMEE_CLASSIFIER-$TOMEE_VERSION"
+test -x "$TOMEE_BASE"
+
+# restore configuration
+if [ -d "$TMP_CONF_DIR" ]; then
+    echo "Restoring previous installation state."
+    cp -r "$TMP_CONF_DIR" "$TOMEE_BASE/conf"
+    cp -r "$TMP_WEBAPPS_DIR" "$TOMEE_BASE/webapps"
+    cp -r "$TMP_APPS_DIR" "$TOMEE_BASE/apps"
+    rm -rf "$TMP_CONF_DIR" "$TMP_WEBAPPS_DIR" "$TMP_APPS_DIR"
+else
+    echo "No state to restore"
+fi
+rm -rf "$TMP_DIR"
+
+echo "TomEE $TOMEE_VERSION is now installed in directory $TOMEE_BASE."
+
+# create the profile script (vars)
+TOMEE_PROFILE=~/.tomee.profile
+if [ -f "$TOMEE_PROFILE" ]; then
+    rm -rf "$TOMEE_PROFILE"
+fi
+touch "$TOMEE_PROFILE"
+echo "export CATALINA_HOME="$TOMEE_BASE"" >> "$TOMEE_PROFILE"
+echo "export CATALINA_BASE="$TOMEE_BASE"" >> "$TOMEE_PROFILE"
+echo "# To add tomcat scripts to the path uncomment next line" >> "$TOMEE_PROFILE"
+echo "# export PATH="\$PATH:\$CATALINA_HOME/bin"" >> "$TOMEE_PROFILE"
+# some alternative commands, mainly to limit side effects of cygwin (wrong paths)
+echo "alias tomee-base='cd $TOMEE_BASE'" >> "$TOMEE_PROFILE"
+echo "alias tomee-run='cd $TOMEE_BASE && ./bin/catalina.sh run && cd -'" >> "$TOMEE_PROFILE"
+echo "alias tomee-start='cd $TOMEE_BASE && ./bin/catalina.sh start && cd -'" >> "$TOMEE_PROFILE"
+echo "alias tomee-stop='cd $TOMEE_BASE && ./bin/catalina.sh stop && cd -'" >> "$TOMEE_PROFILE"
+
+# make it immediate
+source "$TOMEE_PROFILE"
+
+# add it to the profile file whatever it is,
+# if they source themself it would reload env variable which is ok
+for f in ".bash_profile" ".bashrc" ".profile"; do
+    if [ -f ~/$f ];then
+        if grep "$TOMEE_PROFILE" ~/$f > /dev/null; then
+           echo "$TOMEE_PROFILE already sourced in $f"
+        else
+            echo source "$TOMEE_PROFILE" >> ~/$f
+        fi
+    fi
+done
+
+# Finally dump a small getting started
+echo ""
+echo ""
+echo "Get started:"
+echo "------------"
+echo ""
+echo ""
+echo "start in blocking mode TomEE - located in $TOMEE_BASE"
+echo "me@local:~ $ tomee-run"
+echo "..."
+echo "Ctrl+C"
+echo ""
+echo "start and forget - located in $TOMEE_BASE"
+echo "me@local:~ $ tomee-start"
+echo ""
+echo "..."
+echo "And stop it"
+echo "me@local:~ $ tomee-stop"
+echo ""
+echo " To deploy quickly an application drop it in $TOMEE_BASE/webapps and restart."
+echo "You can configure TomEE in $TOMEE_BASE/conf/ folder or in ~/.openejb/system.properties."
+echo ""
+echo "You can use tomee-base command to directly go in $TOMEE_BASE"
+echo ""
+echo "Learn more on http://tomee.apache.org"
+echo ""
diff --git a/src/main/jbake/assets/css/animate.css b/src/main/jbake/assets/css/animate.css
new file mode 100755
index 0000000..e1a54e2
--- /dev/null
+++ b/src/main/jbake/assets/css/animate.css
@@ -0,0 +1,3391 @@
+@charset "UTF-8";
+
+/*!
+Animate.css - http://daneden.me/animate
+Licensed under the MIT license - http://opensource.org/licenses/MIT
+
+Copyright (c) 2015 Daniel Eden
+*/
+
+.animated {
+  -webkit-animation-duration: .3s;
+  animation-duration: .3s;
+  -webkit-animation-fill-mode: both;
+  animation-fill-mode: both;
+}
+
+.animated.infinite {
+  -webkit-animation-iteration-count: infinite;
+  -webkit-animation-duration: 1s;
+  animation-duration: 1s;
+  animation-iteration-count: infinite;
+}
+
+.animated.hinge {
+  -webkit-animation-duration: 2s;
+  animation-duration: 2s;
+}
+
+@-webkit-keyframes bounce {
+  0%, 20%, 53%, 80%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    -webkit-transform: translate3d(0,0,0);
+    transform: translate3d(0,0,0);
+  }
+
+  40%, 43% {
+    -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+    transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+    -webkit-transform: translate3d(0, -30px, 0);
+    transform: translate3d(0, -30px, 0);
+  }
+
+  70% {
+    -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+    transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+    -webkit-transform: translate3d(0, -15px, 0);
+    transform: translate3d(0, -15px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0,-4px,0);
+    transform: translate3d(0,-4px,0);
+  }
+}
+
+@keyframes bounce {
+  0%, 20%, 53%, 80%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    -webkit-transform: translate3d(0,0,0);
+    -ms-transform: translate3d(0,0,0);
+    transform: translate3d(0,0,0);
+  }
+
+  40%, 43% {
+    -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+    transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+    -webkit-transform: translate3d(0, -30px, 0);
+    -ms-transform: translate3d(0, -30px, 0);
+    transform: translate3d(0, -30px, 0);
+  }
+
+  70% {
+    -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+    transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
+    -webkit-transform: translate3d(0, -15px, 0);
+    -ms-transform: translate3d(0, -15px, 0);
+    transform: translate3d(0, -15px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0,-4px,0);
+    -ms-transform: translate3d(0,-4px,0);
+    transform: translate3d(0,-4px,0);
+  }
+}
+
+.bounce {
+  -webkit-animation-name: bounce;
+  animation-name: bounce;
+  -webkit-transform-origin: center bottom;
+  -ms-transform-origin: center bottom;
+  transform-origin: center bottom;
+}
+
+@-webkit-keyframes flash {
+  0%, 100% {
+    opacity: 1;
+  }
+
+  50% {
+    opacity: 0;
+  }
+}
+
+@keyframes flash {
+  0%, 100% {
+    opacity: 1;
+  }
+
+  50% {
+    opacity: 0;
+  }
+}
+
+.flash {
+  -webkit-animation-name: flash;
+  animation-name: flash;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes pulse {
+  0% {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  50% {
+    -webkit-transform: scale3d(1.05, 1.05, 1.05);
+    transform: scale3d(1.05, 1.05, 1.05);
+  }
+
+  100% {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+@keyframes pulse {
+  0% {
+    -webkit-transform: scale3d(1, 1, 1);
+    -ms-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  50% {
+    -webkit-transform: scale3d(1.05, 1.05, 1.05);
+    -ms-transform: scale3d(1.05, 1.05, 1.05);
+    transform: scale3d(1.05, 1.05, 1.05);
+  }
+
+  100% {
+    -webkit-transform: scale3d(1, 1, 1);
+    -ms-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+.pulse {
+  -webkit-animation-name: pulse;
+  animation-name: pulse;
+}
+
+@-webkit-keyframes rubberBand {
+  0% {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  30% {
+    -webkit-transform: scale3d(1.25, 0.75, 1);
+    transform: scale3d(1.25, 0.75, 1);
+  }
+
+  40% {
+    -webkit-transform: scale3d(0.75, 1.25, 1);
+    transform: scale3d(0.75, 1.25, 1);
+  }
+
+  50% {
+    -webkit-transform: scale3d(1.15, 0.85, 1);
+    transform: scale3d(1.15, 0.85, 1);
+  }
+
+  65% {
+    -webkit-transform: scale3d(.95, 1.05, 1);
+    transform: scale3d(.95, 1.05, 1);
+  }
+
+  75% {
+    -webkit-transform: scale3d(1.05, .95, 1);
+    transform: scale3d(1.05, .95, 1);
+  }
+
+  100% {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+@keyframes rubberBand {
+  0% {
+    -webkit-transform: scale3d(1, 1, 1);
+    -ms-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  30% {
+    -webkit-transform: scale3d(1.25, 0.75, 1);
+    -ms-transform: scale3d(1.25, 0.75, 1);
+    transform: scale3d(1.25, 0.75, 1);
+  }
+
+  40% {
+    -webkit-transform: scale3d(0.75, 1.25, 1);
+    -ms-transform: scale3d(0.75, 1.25, 1);
+    transform: scale3d(0.75, 1.25, 1);
+  }
+
+  50% {
+    -webkit-transform: scale3d(1.15, 0.85, 1);
+    -ms-transform: scale3d(1.15, 0.85, 1);
+    transform: scale3d(1.15, 0.85, 1);
+  }
+
+  65% {
+    -webkit-transform: scale3d(.95, 1.05, 1);
+    -ms-transform: scale3d(.95, 1.05, 1);
+    transform: scale3d(.95, 1.05, 1);
+  }
+
+  75% {
+    -webkit-transform: scale3d(1.05, .95, 1);
+    -ms-transform: scale3d(1.05, .95, 1);
+    transform: scale3d(1.05, .95, 1);
+  }
+
+  100% {
+    -webkit-transform: scale3d(1, 1, 1);
+    -ms-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+.rubberBand {
+  -webkit-animation-name: rubberBand;
+  animation-name: rubberBand;
+}
+
+@-webkit-keyframes shake {
+  0%, 100% {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  10%, 30%, 50%, 70%, 90% {
+    -webkit-transform: translate3d(-10px, 0, 0);
+    transform: translate3d(-10px, 0, 0);
+  }
+
+  20%, 40%, 60%, 80% {
+    -webkit-transform: translate3d(10px, 0, 0);
+    transform: translate3d(10px, 0, 0);
+  }
+}
+
+@keyframes shake {
+  0%, 100% {
+    -webkit-transform: translate3d(0, 0, 0);
+    -ms-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  10%, 30%, 50%, 70%, 90% {
+    -webkit-transform: translate3d(-10px, 0, 0);
+    -ms-transform: translate3d(-10px, 0, 0);
+    transform: translate3d(-10px, 0, 0);
+  }
+
+  20%, 40%, 60%, 80% {
+    -webkit-transform: translate3d(10px, 0, 0);
+    -ms-transform: translate3d(10px, 0, 0);
+    transform: translate3d(10px, 0, 0);
+  }
+}
+
+.shake {
+  -webkit-animation-name: shake;
+  animation-name: shake;
+}
+
+@-webkit-keyframes swing {
+  20% {
+    -webkit-transform: rotate3d(0, 0, 1, 15deg);
+    transform: rotate3d(0, 0, 1, 15deg);
+  }
+
+  40% {
+    -webkit-transform: rotate3d(0, 0, 1, -10deg);
+    transform: rotate3d(0, 0, 1, -10deg);
+  }
+
+  60% {
+    -webkit-transform: rotate3d(0, 0, 1, 5deg);
+    transform: rotate3d(0, 0, 1, 5deg);
+  }
+
+  80% {
+    -webkit-transform: rotate3d(0, 0, 1, -5deg);
+    transform: rotate3d(0, 0, 1, -5deg);
+  }
+
+  100% {
+    -webkit-transform: rotate3d(0, 0, 1, 0deg);
+    transform: rotate3d(0, 0, 1, 0deg);
+  }
+}
+
+@keyframes swing {
+  20% {
+    -webkit-transform: rotate3d(0, 0, 1, 15deg);
+    -ms-transform: rotate3d(0, 0, 1, 15deg);
+    transform: rotate3d(0, 0, 1, 15deg);
+  }
+
+  40% {
+    -webkit-transform: rotate3d(0, 0, 1, -10deg);
+    -ms-transform: rotate3d(0, 0, 1, -10deg);
+    transform: rotate3d(0, 0, 1, -10deg);
+  }
+
+  60% {
+    -webkit-transform: rotate3d(0, 0, 1, 5deg);
+    -ms-transform: rotate3d(0, 0, 1, 5deg);
+    transform: rotate3d(0, 0, 1, 5deg);
+  }
+
+  80% {
+    -webkit-transform: rotate3d(0, 0, 1, -5deg);
+    -ms-transform: rotate3d(0, 0, 1, -5deg);
+    transform: rotate3d(0, 0, 1, -5deg);
+  }
+
+  100% {
+    -webkit-transform: rotate3d(0, 0, 1, 0deg);
+    -ms-transform: rotate3d(0, 0, 1, 0deg);
+    transform: rotate3d(0, 0, 1, 0deg);
+  }
+}
+
+.swing {
+  -webkit-transform-origin: top center;
+  -ms-transform-origin: top center;
+  transform-origin: top center;
+  -webkit-animation-name: swing;
+  animation-name: swing;
+}
+
+@-webkit-keyframes tada {
+  0% {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  10%, 20% {
+    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+  }
+
+  30%, 50%, 70%, 90% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+  }
+
+  40%, 60%, 80% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+  }
+
+  100% {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+@keyframes tada {
+  0% {
+    -webkit-transform: scale3d(1, 1, 1);
+    -ms-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  10%, 20% {
+    -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+    -ms-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+    transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
+  }
+
+  30%, 50%, 70%, 90% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+    -ms-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+  }
+
+  40%, 60%, 80% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+    -ms-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+  }
+
+  100% {
+    -webkit-transform: scale3d(1, 1, 1);
+    -ms-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+.tada {
+  -webkit-animation-name: tada;
+  animation-name: tada;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes wobble {
+  0% {
+    -webkit-transform: none;
+    transform: none;
+  }
+
+  15% {
+    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+  }
+
+  30% {
+    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+  }
+
+  45% {
+    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+  }
+
+  60% {
+    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+  }
+
+  75% {
+    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+  }
+
+  100% {
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes wobble {
+  0% {
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+
+  15% {
+    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+    -ms-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+  }
+
+  30% {
+    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+    -ms-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+  }
+
+  45% {
+    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+    -ms-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+  }
+
+  60% {
+    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+    -ms-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+  }
+
+  75% {
+    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+    -ms-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+  }
+
+  100% {
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.wobble {
+  -webkit-animation-name: wobble;
+  animation-name: wobble;
+}
+
+@-webkit-keyframes bounceIn {
+  0%, 20%, 40%, 60%, 80%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.3, .3, .3);
+    transform: scale3d(.3, .3, .3);
+  }
+
+  20% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+    transform: scale3d(1.1, 1.1, 1.1);
+  }
+
+  40% {
+    -webkit-transform: scale3d(.9, .9, .9);
+    transform: scale3d(.9, .9, .9);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(1.03, 1.03, 1.03);
+    transform: scale3d(1.03, 1.03, 1.03);
+  }
+
+  80% {
+    -webkit-transform: scale3d(.97, .97, .97);
+    transform: scale3d(.97, .97, .97);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+@keyframes bounceIn {
+  0%, 20%, 40%, 60%, 80%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.3, .3, .3);
+    -ms-transform: scale3d(.3, .3, .3);
+    transform: scale3d(.3, .3, .3);
+  }
+
+  20% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+    -ms-transform: scale3d(1.1, 1.1, 1.1);
+    transform: scale3d(1.1, 1.1, 1.1);
+  }
+
+  40% {
+    -webkit-transform: scale3d(.9, .9, .9);
+    -ms-transform: scale3d(.9, .9, .9);
+    transform: scale3d(.9, .9, .9);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(1.03, 1.03, 1.03);
+    -ms-transform: scale3d(1.03, 1.03, 1.03);
+    transform: scale3d(1.03, 1.03, 1.03);
+  }
+
+  80% {
+    -webkit-transform: scale3d(.97, .97, .97);
+    -ms-transform: scale3d(.97, .97, .97);
+    transform: scale3d(.97, .97, .97);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: scale3d(1, 1, 1);
+    -ms-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+.bounceIn {
+  -webkit-animation-name: bounceIn;
+  animation-name: bounceIn;
+  -webkit-animation-duration: .75s;
+  animation-duration: .75s;
+}
+
+@-webkit-keyframes bounceInDown {
+  0%, 60%, 75%, 90%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -3000px, 0);
+    transform: translate3d(0, -3000px, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 25px, 0);
+    transform: translate3d(0, 25px, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(0, -10px, 0);
+    transform: translate3d(0, -10px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, 5px, 0);
+    transform: translate3d(0, 5px, 0);
+  }
+
+  100% {
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes bounceInDown {
+  0%, 60%, 75%, 90%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -3000px, 0);
+    -ms-transform: translate3d(0, -3000px, 0);
+    transform: translate3d(0, -3000px, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 25px, 0);
+    -ms-transform: translate3d(0, 25px, 0);
+    transform: translate3d(0, 25px, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(0, -10px, 0);
+    -ms-transform: translate3d(0, -10px, 0);
+    transform: translate3d(0, -10px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, 5px, 0);
+    -ms-transform: translate3d(0, 5px, 0);
+    transform: translate3d(0, 5px, 0);
+  }
+
+  100% {
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.bounceInDown {
+  -webkit-animation-name: bounceInDown;
+  animation-name: bounceInDown;
+}
+
+@-webkit-keyframes bounceInLeft {
+  0%, 60%, 75%, 90%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-3000px, 0, 0);
+    transform: translate3d(-3000px, 0, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(25px, 0, 0);
+    transform: translate3d(25px, 0, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(-10px, 0, 0);
+    transform: translate3d(-10px, 0, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(5px, 0, 0);
+    transform: translate3d(5px, 0, 0);
+  }
+
+  100% {
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes bounceInLeft {
+  0%, 60%, 75%, 90%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-3000px, 0, 0);
+    -ms-transform: translate3d(-3000px, 0, 0);
+    transform: translate3d(-3000px, 0, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(25px, 0, 0);
+    -ms-transform: translate3d(25px, 0, 0);
+    transform: translate3d(25px, 0, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(-10px, 0, 0);
+    -ms-transform: translate3d(-10px, 0, 0);
+    transform: translate3d(-10px, 0, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(5px, 0, 0);
+    -ms-transform: translate3d(5px, 0, 0);
+    transform: translate3d(5px, 0, 0);
+  }
+
+  100% {
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.bounceInLeft {
+  -webkit-animation-name: bounceInLeft;
+  animation-name: bounceInLeft;
+}
+
+@-webkit-keyframes bounceInRight {
+  0%, 60%, 75%, 90%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(3000px, 0, 0);
+    transform: translate3d(3000px, 0, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(-25px, 0, 0);
+    transform: translate3d(-25px, 0, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(10px, 0, 0);
+    transform: translate3d(10px, 0, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(-5px, 0, 0);
+    transform: translate3d(-5px, 0, 0);
+  }
+
+  100% {
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes bounceInRight {
+  0%, 60%, 75%, 90%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(3000px, 0, 0);
+    -ms-transform: translate3d(3000px, 0, 0);
+    transform: translate3d(3000px, 0, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(-25px, 0, 0);
+    -ms-transform: translate3d(-25px, 0, 0);
+    transform: translate3d(-25px, 0, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(10px, 0, 0);
+    -ms-transform: translate3d(10px, 0, 0);
+    transform: translate3d(10px, 0, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(-5px, 0, 0);
+    -ms-transform: translate3d(-5px, 0, 0);
+    transform: translate3d(-5px, 0, 0);
+  }
+
+  100% {
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.bounceInRight {
+  -webkit-animation-name: bounceInRight;
+  animation-name: bounceInRight;
+}
+
+@-webkit-keyframes bounceInUp {
+  0%, 60%, 75%, 90%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 3000px, 0);
+    transform: translate3d(0, 3000px, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, -20px, 0);
+    transform: translate3d(0, -20px, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, -5px, 0);
+    transform: translate3d(0, -5px, 0);
+  }
+
+  100% {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes bounceInUp {
+  0%, 60%, 75%, 90%, 100% {
+    -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+    transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 3000px, 0);
+    -ms-transform: translate3d(0, 3000px, 0);
+    transform: translate3d(0, 3000px, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, -20px, 0);
+    -ms-transform: translate3d(0, -20px, 0);
+    transform: translate3d(0, -20px, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    -ms-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, -5px, 0);
+    -ms-transform: translate3d(0, -5px, 0);
+    transform: translate3d(0, -5px, 0);
+  }
+
+  100% {
+    -webkit-transform: translate3d(0, 0, 0);
+    -ms-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.bounceInUp {
+  -webkit-animation-name: bounceInUp;
+  animation-name: bounceInUp;
+}
+
+@-webkit-keyframes bounceOut {
+  20% {
+    -webkit-transform: scale3d(.9, .9, .9);
+    transform: scale3d(.9, .9, .9);
+  }
+
+  50%, 55% {
+    opacity: 1;
+    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+    transform: scale3d(1.1, 1.1, 1.1);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale3d(.3, .3, .3);
+    transform: scale3d(.3, .3, .3);
+  }
+}
+
+@keyframes bounceOut {
+  20% {
+    -webkit-transform: scale3d(.9, .9, .9);
+    -ms-transform: scale3d(.9, .9, .9);
+    transform: scale3d(.9, .9, .9);
+  }
+
+  50%, 55% {
+    opacity: 1;
+    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+    -ms-transform: scale3d(1.1, 1.1, 1.1);
+    transform: scale3d(1.1, 1.1, 1.1);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale3d(.3, .3, .3);
+    -ms-transform: scale3d(.3, .3, .3);
+    transform: scale3d(.3, .3, .3);
+  }
+}
+
+.bounceOut {
+  -webkit-animation-name: bounceOut;
+  animation-name: bounceOut;
+  -webkit-animation-duration: .75s;
+  animation-duration: .75s;
+}
+
+@-webkit-keyframes bounceOutDown {
+  20% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+
+  40%, 45% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, -20px, 0);
+    transform: translate3d(0, -20px, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+}
+
+@keyframes bounceOutDown {
+  20% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    -ms-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+
+  40%, 45% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, -20px, 0);
+    -ms-transform: translate3d(0, -20px, 0);
+    transform: translate3d(0, -20px, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    -ms-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+}
+
+.bounceOutDown {
+  -webkit-animation-name: bounceOutDown;
+  animation-name: bounceOutDown;
+}
+
+@-webkit-keyframes bounceOutLeft {
+  20% {
+    opacity: 1;
+    -webkit-transform: translate3d(20px, 0, 0);
+    transform: translate3d(20px, 0, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+}
+
+@keyframes bounceOutLeft {
+  20% {
+    opacity: 1;
+    -webkit-transform: translate3d(20px, 0, 0);
+    -ms-transform: translate3d(20px, 0, 0);
+    transform: translate3d(20px, 0, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    -ms-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+}
+
+.bounceOutLeft {
+  -webkit-animation-name: bounceOutLeft;
+  animation-name: bounceOutLeft;
+}
+
+@-webkit-keyframes bounceOutRight {
+  20% {
+    opacity: 1;
+    -webkit-transform: translate3d(-20px, 0, 0);
+    transform: translate3d(-20px, 0, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+}
+
+@keyframes bounceOutRight {
+  20% {
+    opacity: 1;
+    -webkit-transform: translate3d(-20px, 0, 0);
+    -ms-transform: translate3d(-20px, 0, 0);
+    transform: translate3d(-20px, 0, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    -ms-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+}
+
+.bounceOutRight {
+  -webkit-animation-name: bounceOutRight;
+  animation-name: bounceOutRight;
+}
+
+@-webkit-keyframes bounceOutUp {
+  20% {
+    -webkit-transform: translate3d(0, -10px, 0);
+    transform: translate3d(0, -10px, 0);
+  }
+
+  40%, 45% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 20px, 0);
+    transform: translate3d(0, 20px, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+}
+
+@keyframes bounceOutUp {
+  20% {
+    -webkit-transform: translate3d(0, -10px, 0);
+    -ms-transform: translate3d(0, -10px, 0);
+    transform: translate3d(0, -10px, 0);
+  }
+
+  40%, 45% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 20px, 0);
+    -ms-transform: translate3d(0, 20px, 0);
+    transform: translate3d(0, 20px, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    -ms-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+}
+
+.bounceOutUp {
+  -webkit-animation-name: bounceOutUp;
+  animation-name: bounceOutUp;
+}
+
+@-webkit-keyframes fadeIn {
+  0% {
+    opacity: 0;
+  }
+
+  100% {
+    opacity: 1;
+  }
+}
+
+@keyframes fadeIn {
+  0% {
+    opacity: 0;
+  }
+
+  100% {
+    opacity: 1;
+  }
+}
+
+.fadeIn {
+  -webkit-animation-name: fadeIn;
+  animation-name: fadeIn;
+}
+
+@-webkit-keyframes fadeInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -10%, 0);
+    transform: translate3d(0, -10%, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes fadeInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -10%, 0);
+    -ms-transform: translate3d(0, -10%, 0);
+    transform: translate3d(0, -10%, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.fadeInDown {
+  -webkit-animation-name: fadeInDown;
+  animation-name: fadeInDown;
+}
+
+@-webkit-keyframes fadeInDownBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes fadeInDownBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    -ms-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.fadeInDownBig {
+  -webkit-animation-name: fadeInDownBig;
+  animation-name: fadeInDownBig;
+}
+
+@-webkit-keyframes fadeInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes fadeInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    -ms-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.fadeInLeft {
+  -webkit-animation-name: fadeInLeft;
+  animation-name: fadeInLeft;
+}
+
+@-webkit-keyframes fadeInLeftBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes fadeInLeftBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    -ms-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.fadeInLeftBig {
+  -webkit-animation-name: fadeInLeftBig;
+  animation-name: fadeInLeftBig;
+}
+
+@-webkit-keyframes fadeInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes fadeInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    -ms-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.fadeInRight {
+  -webkit-animation-name: fadeInRight;
+  animation-name: fadeInRight;
+}
+
+@-webkit-keyframes fadeInRightBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes fadeInRightBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    -ms-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.fadeInRightBig {
+  -webkit-animation-name: fadeInRightBig;
+  animation-name: fadeInRightBig;
+}
+
+@-webkit-keyframes fadeInUp {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes fadeInUp {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    -ms-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.fadeInUp {
+  -webkit-animation-name: fadeInUp;
+  animation-name: fadeInUp;
+}
+
+@-webkit-keyframes fadeInUpBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes fadeInUpBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    -ms-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.fadeInUpBig {
+  -webkit-animation-name: fadeInUpBig;
+  animation-name: fadeInUpBig;
+}
+
+@-webkit-keyframes fadeOut {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+  }
+}
+
+@keyframes fadeOut {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+  }
+}
+
+.fadeOut {
+  -webkit-animation-name: fadeOut;
+  animation-name: fadeOut;
+}
+
+@-webkit-keyframes fadeOutDown {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+
+@keyframes fadeOutDown {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    -ms-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+
+.fadeOutDown {
+  -webkit-animation-name: fadeOutDown;
+  animation-name: fadeOutDown;
+}
+
+@-webkit-keyframes fadeOutDownBig {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+}
+
+@keyframes fadeOutDownBig {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    -ms-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+}
+
+.fadeOutDownBig {
+  -webkit-animation-name: fadeOutDownBig;
+  animation-name: fadeOutDownBig;
+}
+
+@-webkit-keyframes fadeOutLeft {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+}
+
+@keyframes fadeOutLeft {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    -ms-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+}
+
+.fadeOutLeft {
+  -webkit-animation-name: fadeOutLeft;
+  animation-name: fadeOutLeft;
+}
+
+@-webkit-keyframes fadeOutLeftBig {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+}
+
+@keyframes fadeOutLeftBig {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    -ms-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+}
+
+.fadeOutLeftBig {
+  -webkit-animation-name: fadeOutLeftBig;
+  animation-name: fadeOutLeftBig;
+}
+
+@-webkit-keyframes fadeOutRight {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+}
+
+@keyframes fadeOutRight {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    -ms-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+}
+
+.fadeOutRight {
+  -webkit-animation-name: fadeOutRight;
+  animation-name: fadeOutRight;
+}
+
+@-webkit-keyframes fadeOutRightBig {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+}
+
+@keyframes fadeOutRightBig {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    -ms-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+}
+
+.fadeOutRightBig {
+  -webkit-animation-name: fadeOutRightBig;
+  animation-name: fadeOutRightBig;
+}
+
+@-webkit-keyframes fadeOutUp {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+  }
+}
+
+@keyframes fadeOutUp {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -100%, 0);
+    -ms-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+  }
+}
+
+.fadeOutUp {
+  -webkit-animation-name: fadeOutUp;
+  animation-name: fadeOutUp;
+}
+
+@-webkit-keyframes fadeOutUpBig {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+}
+
+@keyframes fadeOutUpBig {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    -ms-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+}
+
+.fadeOutUpBig {
+  -webkit-animation-name: fadeOutUpBig;
+  animation-name: fadeOutUpBig;
+}
+
+@-webkit-keyframes flip {
+  0% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+
+  50% {
+    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
+    transform: perspective(400px) scale3d(.95, .95, .95);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  100% {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+}
+
+@keyframes flip {
+  0% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+    -ms-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+    -ms-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+
+  50% {
+    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+    -ms-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+    transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
+    -ms-transform: perspective(400px) scale3d(.95, .95, .95);
+    transform: perspective(400px) scale3d(.95, .95, .95);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  100% {
+    -webkit-transform: perspective(400px);
+    -ms-transform: perspective(400px);
+    transform: perspective(400px);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+}
+
+.animated.flip {
+  -webkit-backface-visibility: visible;
+  -ms-backface-visibility: visible;
+  backface-visibility: visible;
+  -webkit-animation-name: flip;
+  animation-name: flip;
+}
+
+@-webkit-keyframes flipInX {
+  0% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    -webkit-transition-timing-function: ease-in;
+    transition-timing-function: ease-in;
+    opacity: 0;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    -webkit-transition-timing-function: ease-in;
+    transition-timing-function: ease-in;
+  }
+
+  60% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+  }
+
+  100% {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+}
+
+@keyframes flipInX {
+  0% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    -ms-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    -webkit-transition-timing-function: ease-in;
+    transition-timing-function: ease-in;
+    opacity: 0;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    -ms-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    -webkit-transition-timing-function: ease-in;
+    transition-timing-function: ease-in;
+  }
+
+  60% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    -ms-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+    -ms-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+  }
+
+  100% {
+    -webkit-transform: perspective(400px);
+    -ms-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+}
+
+.flipInX {
+  -webkit-backface-visibility: visible !important;
+  -ms-backface-visibility: visible !important;
+  backface-visibility: visible !important;
+  -webkit-animation-name: flipInX;
+  animation-name: flipInX;
+}
+
+@-webkit-keyframes flipInY {
+  0% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    -webkit-transition-timing-function: ease-in;
+    transition-timing-function: ease-in;
+    opacity: 0;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    -webkit-transition-timing-function: ease-in;
+    transition-timing-function: ease-in;
+  }
+
+  60% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+  }
+
+  100% {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+}
+
+@keyframes flipInY {
+  0% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    -ms-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    -webkit-transition-timing-function: ease-in;
+    transition-timing-function: ease-in;
+    opacity: 0;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    -ms-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    -webkit-transition-timing-function: ease-in;
+    transition-timing-function: ease-in;
+  }
+
+  60% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    -ms-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+    -ms-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+  }
+
+  100% {
+    -webkit-transform: perspective(400px);
+    -ms-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+}
+
+.flipInY {
+  -webkit-backface-visibility: visible !important;
+  -ms-backface-visibility: visible !important;
+  backface-visibility: visible !important;
+  -webkit-animation-name: flipInY;
+  animation-name: flipInY;
+}
+
+@-webkit-keyframes flipOutX {
+  0% {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+
+  30% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    opacity: 0;
+  }
+}
+
+@keyframes flipOutX {
+  0% {
+    -webkit-transform: perspective(400px);
+    -ms-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+
+  30% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    -ms-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    -ms-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    opacity: 0;
+  }
+}
+
+.flipOutX {
+  -webkit-animation-name: flipOutX;
+  animation-name: flipOutX;
+  -webkit-animation-duration: .75s;
+  animation-duration: .75s;
+  -webkit-backface-visibility: visible !important;
+  -ms-backface-visibility: visible !important;
+  backface-visibility: visible !important;
+}
+
+@-webkit-keyframes flipOutY {
+  0% {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+
+  30% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    opacity: 0;
+  }
+}
+
+@keyframes flipOutY {
+  0% {
+    -webkit-transform: perspective(400px);
+    -ms-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+
+  30% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    -ms-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    -ms-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    opacity: 0;
+  }
+}
+
+.flipOutY {
+  -webkit-backface-visibility: visible !important;
+  -ms-backface-visibility: visible !important;
+  backface-visibility: visible !important;
+  -webkit-animation-name: flipOutY;
+  animation-name: flipOutY;
+  -webkit-animation-duration: .75s;
+  animation-duration: .75s;
+}
+
+@-webkit-keyframes lightSpeedIn {
+  0% {
+    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
+    transform: translate3d(100%, 0, 0) skewX(-30deg);
+    opacity: 0;
+  }
+
+  60% {
+    -webkit-transform: skewX(20deg);
+    transform: skewX(20deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: skewX(-5deg);
+    transform: skewX(-5deg);
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+@keyframes lightSpeedIn {
+  0% {
+    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
+    -ms-transform: translate3d(100%, 0, 0) skewX(-30deg);
+    transform: translate3d(100%, 0, 0) skewX(-30deg);
+    opacity: 0;
+  }
+
+  60% {
+    -webkit-transform: skewX(20deg);
+    -ms-transform: skewX(20deg);
+    transform: skewX(20deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: skewX(-5deg);
+    -ms-transform: skewX(-5deg);
+    transform: skewX(-5deg);
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+.lightSpeedIn {
+  -webkit-animation-name: lightSpeedIn;
+  animation-name: lightSpeedIn;
+  -webkit-animation-timing-function: ease-out;
+  animation-timing-function: ease-out;
+}
+
+@-webkit-keyframes lightSpeedOut {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
+    transform: translate3d(100%, 0, 0) skewX(30deg);
+    opacity: 0;
+  }
+}
+
+@keyframes lightSpeedOut {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
+    -ms-transform: translate3d(100%, 0, 0) skewX(30deg);
+    transform: translate3d(100%, 0, 0) skewX(30deg);
+    opacity: 0;
+  }
+}
+
+.lightSpeedOut {
+  -webkit-animation-name: lightSpeedOut;
+  animation-name: lightSpeedOut;
+  -webkit-animation-timing-function: ease-in;
+  animation-timing-function: ease-in;
+}
+
+@-webkit-keyframes rotateIn {
+  0% {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: rotate3d(0, 0, 1, -200deg);
+    transform: rotate3d(0, 0, 1, -200deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+@keyframes rotateIn {
+  0% {
+    -webkit-transform-origin: center;
+    -ms-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: rotate3d(0, 0, 1, -200deg);
+    -ms-transform: rotate3d(0, 0, 1, -200deg);
+    transform: rotate3d(0, 0, 1, -200deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: center;
+    -ms-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+.rotateIn {
+  -webkit-animation-name: rotateIn;
+  animation-name: rotateIn;
+}
+
+@-webkit-keyframes rotateInDownLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+@keyframes rotateInDownLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    -ms-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+.rotateInDownLeft {
+  -webkit-animation-name: rotateInDownLeft;
+  animation-name: rotateInDownLeft;
+}
+
+@-webkit-keyframes rotateInDownRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+@keyframes rotateInDownRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    -ms-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+.rotateInDownRight {
+  -webkit-animation-name: rotateInDownRight;
+  animation-name: rotateInDownRight;
+}
+
+@-webkit-keyframes rotateInUpLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+@keyframes rotateInUpLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    -ms-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+.rotateInUpLeft {
+  -webkit-animation-name: rotateInUpLeft;
+  animation-name: rotateInUpLeft;
+}
+
+@-webkit-keyframes rotateInUpRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -90deg);
+    transform: rotate3d(0, 0, 1, -90deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+@keyframes rotateInUpRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -90deg);
+    -ms-transform: rotate3d(0, 0, 1, -90deg);
+    transform: rotate3d(0, 0, 1, -90deg);
+    opacity: 0;
+  }
+
+  100% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+    opacity: 1;
+  }
+}
+
+.rotateInUpRight {
+  -webkit-animation-name: rotateInUpRight;
+  animation-name: rotateInUpRight;
+}
+
+@-webkit-keyframes rotateOut {
+  0% {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: rotate3d(0, 0, 1, 200deg);
+    transform: rotate3d(0, 0, 1, 200deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOut {
+  0% {
+    -webkit-transform-origin: center;
+    -ms-transform-origin: center;
+    transform-origin: center;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: center;
+    -ms-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: rotate3d(0, 0, 1, 200deg);
+    -ms-transform: rotate3d(0, 0, 1, 200deg);
+    transform: rotate3d(0, 0, 1, 200deg);
+    opacity: 0;
+  }
+}
+
+.rotateOut {
+  -webkit-animation-name: rotateOut;
+  animation-name: rotateOut;
+}
+
+@-webkit-keyframes rotateOutDownLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOutDownLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    -ms-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+}
+
+.rotateOutDownLeft {
+  -webkit-animation-name: rotateOutDownLeft;
+  animation-name: rotateOutDownLeft;
+}
+
+@-webkit-keyframes rotateOutDownRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOutDownRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    -ms-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+}
+
+.rotateOutDownRight {
+  -webkit-animation-name: rotateOutDownRight;
+  animation-name: rotateOutDownRight;
+}
+
+@-webkit-keyframes rotateOutUpLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOutUpLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    -ms-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+}
+
+.rotateOutUpLeft {
+  -webkit-animation-name: rotateOutUpLeft;
+  animation-name: rotateOutUpLeft;
+}
+
+@-webkit-keyframes rotateOutUpRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 90deg);
+    transform: rotate3d(0, 0, 1, 90deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOutUpRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 90deg);
+    -ms-transform: rotate3d(0, 0, 1, 90deg);
+    transform: rotate3d(0, 0, 1, 90deg);
+    opacity: 0;
+  }
+}
+
+.rotateOutUpRight {
+  -webkit-animation-name: rotateOutUpRight;
+  animation-name: rotateOutUpRight;
+}
+
+@-webkit-keyframes hinge {
+  0% {
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+
+  20%, 60% {
+    -webkit-transform: rotate3d(0, 0, 1, 80deg);
+    transform: rotate3d(0, 0, 1, 80deg);
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+
+  40%, 80% {
+    -webkit-transform: rotate3d(0, 0, 1, 60deg);
+    transform: rotate3d(0, 0, 1, 60deg);
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: translate3d(0, 700px, 0);
+    transform: translate3d(0, 700px, 0);
+    opacity: 0;
+  }
+}
+
+@keyframes hinge {
+  0% {
+    -webkit-transform-origin: top left;
+    -ms-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+
+  20%, 60% {
+    -webkit-transform: rotate3d(0, 0, 1, 80deg);
+    -ms-transform: rotate3d(0, 0, 1, 80deg);
+    transform: rotate3d(0, 0, 1, 80deg);
+    -webkit-transform-origin: top left;
+    -ms-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+
+  40%, 80% {
+    -webkit-transform: rotate3d(0, 0, 1, 60deg);
+    -ms-transform: rotate3d(0, 0, 1, 60deg);
+    transform: rotate3d(0, 0, 1, 60deg);
+    -webkit-transform-origin: top left;
+    -ms-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+    opacity: 1;
+  }
+
+  100% {
+    -webkit-transform: translate3d(0, 700px, 0);
+    -ms-transform: translate3d(0, 700px, 0);
+    transform: translate3d(0, 700px, 0);
+    opacity: 0;
+  }
+}
+
+.hinge {
+  -webkit-animation-name: hinge;
+  animation-name: hinge;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes rollIn {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    transform: none;
+  }
+}
+
+@keyframes rollIn {
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+    -ms-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+  }
+
+  100% {
+    opacity: 1;
+    -webkit-transform: none;
+    -ms-transform: none;
+    transform: none;
+  }
+}
+
+.rollIn {
+  -webkit-animation-name: rollIn;
+  animation-name: rollIn;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes rollOut {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+  }
+}
+
+@keyframes rollOut {
+  0% {
+    opacity: 1;
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+    -ms-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+  }
+}
+
+.rollOut {
+  -webkit-animation-name: rollOut;
+  animation-name: rollOut;
+}
+
+@-webkit-keyframes zoomIn {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.3, .3, .3);
+    transform: scale3d(.3, .3, .3);
+  }
+
+  50% {
+    opacity: 1;
+  }
+}
+
+@keyframes zoomIn {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.3, .3, .3);
+    -ms-transform: scale3d(.3, .3, .3);
+    transform: scale3d(.3, .3, .3);
+  }
+
+  50% {
+    opacity: 1;
+  }
+}
+
+.zoomIn {
+  -webkit-animation-name: zoomIn;
+  animation-name: zoomIn;
+}
+
+@-webkit-keyframes zoomInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+@keyframes zoomInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+    -ms-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+    transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    -ms-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+.zoomInDown {
+  -webkit-animation-name: zoomInDown;
+  animation-name: zoomInDown;
+}
+
+@-webkit-keyframes zoomInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+@keyframes zoomInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+    -ms-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+    transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+    -ms-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+    transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+.zoomInLeft {
+  -webkit-animation-name: zoomInLeft;
+  animation-name: zoomInLeft;
+}
+
+@-webkit-keyframes zoomInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+@keyframes zoomInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+    -ms-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+    transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+    -ms-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+    transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+.zoomInRight {
+  -webkit-animation-name: zoomInRight;
+  animation-name: zoomInRight;
+}
+
+@-webkit-keyframes zoomInUp {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+@keyframes zoomInUp {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+    -ms-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+    transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    -ms-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+.zoomInUp {
+  -webkit-animation-name: zoomInUp;
+  animation-name: zoomInUp;
+}
+
+@-webkit-keyframes zoomOut {
+  0% {
+    opacity: 1;
+  }
+
+  50% {
+    opacity: 0;
+    -webkit-transform: scale3d(.3, .3, .3);
+    transform: scale3d(.3, .3, .3);
+  }
+
+  100% {
+    opacity: 0;
+  }
+}
+
+@keyframes zoomOut {
+  0% {
+    opacity: 1;
+  }
+
+  50% {
+    opacity: 0;
+    -webkit-transform: scale3d(.3, .3, .3);
+    -ms-transform: scale3d(.3, .3, .3);
+    transform: scale3d(.3, .3, .3);
+  }
+
+  100% {
+    opacity: 0;
+  }
+}
+
+.zoomOut {
+  -webkit-animation-name: zoomOut;
+  animation-name: zoomOut;
+}
+
+@-webkit-keyframes zoomOutDown {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom;
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+@keyframes zoomOutDown {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    -ms-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+    -ms-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+    transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
+    -webkit-transform-origin: center bottom;
+    -ms-transform-origin: center bottom;
+    transform-origin: center bottom;
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+.zoomOutDown {
+  -webkit-animation-name: zoomOutDown;
+  animation-name: zoomOutDown;
+}
+
+@-webkit-keyframes zoomOutLeft {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
+    transform: scale(.1) translate3d(-2000px, 0, 0);
+    -webkit-transform-origin: left center;
+    transform-origin: left center;
+  }
+}
+
+@keyframes zoomOutLeft {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+    -ms-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+    transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
+    -ms-transform: scale(.1) translate3d(-2000px, 0, 0);
+    transform: scale(.1) translate3d(-2000px, 0, 0);
+    -webkit-transform-origin: left center;
+    -ms-transform-origin: left center;
+    transform-origin: left center;
+  }
+}
+
+.zoomOutLeft {
+  -webkit-animation-name: zoomOutLeft;
+  animation-name: zoomOutLeft;
+}
+
+@-webkit-keyframes zoomOutRight {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
+    transform: scale(.1) translate3d(2000px, 0, 0);
+    -webkit-transform-origin: right center;
+    transform-origin: right center;
+  }
+}
+
+@keyframes zoomOutRight {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+    -ms-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+    transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
+    -ms-transform: scale(.1) translate3d(2000px, 0, 0);
+    transform: scale(.1) translate3d(2000px, 0, 0);
+    -webkit-transform-origin: right center;
+    -ms-transform-origin: right center;
+    transform-origin: right center;
+  }
+}
+
+.zoomOutRight {
+  -webkit-animation-name: zoomOutRight;
+  animation-name: zoomOutRight;
+}
+
+@-webkit-keyframes zoomOutUp {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom;
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+@keyframes zoomOutUp {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    -ms-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+    animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
+  }
+
+  100% {
+    opacity: 0;
+    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+    -ms-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+    transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
+    -webkit-transform-origin: center bottom;
+    -ms-transform-origin: center bottom;
+    transform-origin: center bottom;
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+  }
+}
+
+.zoomOutUp {
+  -webkit-animation-name: zoomOutUp;
+  animation-name: zoomOutUp;
+}
+
+@-webkit-keyframes slideInDown {
+  0% {
+    -webkit-transform: translateY(-100%);
+    transform: translateY(-100%);
+    visibility: visible;
+  }
+
+  100% {
+    -webkit-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+
+@keyframes slideInDown {
+  0% {
+    -webkit-transform: translateY(-100%);
+    -ms-transform: translateY(-100%);
+    transform: translateY(-100%);
+    visibility: visible;
+  }
+
+  100% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+
+.slideInDown {
+  -webkit-animation-name: slideInDown;
+  animation-name: slideInDown;
+}
+
+@-webkit-keyframes slideInLeft {
+  0% {
+    -webkit-transform: translateX(-100%);
+    transform: translateX(-100%);
+    visibility: visible;
+  }
+
+  100% {
+    -webkit-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+
+@keyframes slideInLeft {
+  0% {
+    -webkit-transform: translateX(-100%);
+    -ms-transform: translateX(-100%);
+    transform: translateX(-100%);
+    visibility: visible;
+  }
+
+  100% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+
+.slideInLeft {
+  -webkit-animation-name: slideInLeft;
+  animation-name: slideInLeft;
+}
+
+@-webkit-keyframes slideInRight {
+  0% {
+    -webkit-transform: translateX(100%);
+    transform: translateX(100%);
+    visibility: visible;
+  }
+
+  100% {
+    -webkit-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+
+@keyframes slideInRight {
+  0% {
+    -webkit-transform: translateX(100%);
+    -ms-transform: translateX(100%);
+    transform: translateX(100%);
+    visibility: visible;
+  }
+
+  100% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+
+.slideInRight {
+  -webkit-animation-name: slideInRight;
+  animation-name: slideInRight;
+}
+
+@-webkit-keyframes slideInUp {
+  0% {
+    -webkit-transform: translateY(100%);
+    transform: translateY(100%);
+    visibility: visible;
+  }
+
+  100% {
+    -webkit-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+
+@keyframes slideInUp {
+  0% {
+    -webkit-transform: translateY(100%);
+    -ms-transform: translateY(100%);
+    transform: translateY(100%);
+    visibility: visible;
+  }
+
+  100% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+
+.slideInUp {
+  -webkit-animation-name: slideInUp;
+  animation-name: slideInUp;
+}
+
+@-webkit-keyframes slideOutDown {
+  0% {
+    -webkit-transform: translateY(0);
+    transform: translateY(0);
+  }
+
+  100% {
+    visibility: hidden;
+    -webkit-transform: translateY(100%);
+    transform: translateY(100%);
+  }
+}
+
+@keyframes slideOutDown {
+  0% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+
+  100% {
+    visibility: hidden;
+    -webkit-transform: translateY(100%);
+    -ms-transform: translateY(100%);
+    transform: translateY(100%);
+  }
+}
+
+.slideOutDown {
+  -webkit-animation-name: slideOutDown;
+  animation-name: slideOutDown;
+}
+
+@-webkit-keyframes slideOutLeft {
+  0% {
+    -webkit-transform: translateX(0);
+    transform: translateX(0);
+  }
+
+  100% {
+    visibility: hidden;
+    -webkit-transform: translateX(-100%);
+    transform: translateX(-100%);
+  }
+}
+
+@keyframes slideOutLeft {
+  0% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+
+  100% {
+    visibility: hidden;
+    -webkit-transform: translateX(-100%);
+    -ms-transform: translateX(-100%);
+    transform: translateX(-100%);
+  }
+}
+
+.slideOutLeft {
+  -webkit-animation-name: slideOutLeft;
+  animation-name: slideOutLeft;
+}
+
+@-webkit-keyframes slideOutRight {
+  0% {
+    -webkit-transform: translateX(0);
+    transform: translateX(0);
+  }
+
+  100% {
+    visibility: hidden;
+    -webkit-transform: translateX(100%);
+    transform: translateX(100%);
+  }
+}
+
+@keyframes slideOutRight {
+  0% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+
+  100% {
+    visibility: hidden;
+    -webkit-transform: translateX(100%);
+    -ms-transform: translateX(100%);
+    transform: translateX(100%);
+  }
+}
+
+.slideOutRight {
+  -webkit-animation-name: slideOutRight;
+  animation-name: slideOutRight;
+}
+
+@-webkit-keyframes slideOutUp {
+  0% {
+    -webkit-transform: translateY(0);
+    transform: translateY(0);
+  }
+
+  100% {
+    visibility: hidden;
+    -webkit-transform: translateY(-100%);
+    transform: translateY(-100%);
+  }
+}
+
+@keyframes slideOutUp {
+  0% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+
+  100% {
+    visibility: hidden;
+    -webkit-transform: translateY(-100%);
+    -ms-transform: translateY(-100%);
+    transform: translateY(-100%);
+  }
+}
+
+.slideOutUp {
+  -webkit-animation-name: slideOutUp;
+  animation-name: slideOutUp;
+}
\ No newline at end of file
diff --git a/src/main/jbake/assets/css/bootstrap.css b/src/main/jbake/assets/css/bootstrap.css
new file mode 100755
index 0000000..9910c44
--- /dev/null
+++ b/src/main/jbake/assets/css/bootstrap.css
@@ -0,0 +1,6782 @@
+/*!
+ * Bootstrap v3.3.4 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+  font-family: sans-serif;
+  -webkit-text-size-adjust: 100%;
+      -ms-text-size-adjust: 100%;
+}
+body {
+  margin: 0;
+  color: #333333;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+audio,
+canvas,
+progress,
+video {
+  display: inline-block;
+  vertical-align: baseline;
+}
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+[hidden],
+template {
+  display: none;
+}
+a {
+  background-color: transparent;
+}
+a:active,
+a:hover {
+  outline: 0;
+}
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+b,
+strong {
+  font-weight: bold;
+}
+dfn {
+  font-style: italic;
+}
+h1 {
+  margin: .67em 0;
+  font-size: 2em;
+}
+mark {
+  color: #000;
+  background: #ff0;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -.5em;
+}
+sub {
+  bottom: -.25em;
+}
+img {
+  border: 0;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+figure {
+  margin: 1em 40px;
+}
+hr {
+  height: 0;
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+}
+pre {
+  overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+  margin: 0;
+  font: inherit;
+  color: inherit;
+}
+button {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+input {
+  line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+fieldset {
+  padding: .35em .625em .75em;
+  margin: 0 2px;
+  border: 1px solid #c0c0c0;
+}
+legend {
+  padding: 0;
+  border: 0;
+}
+textarea {
+  overflow: auto;
+}
+optgroup {
+  font-weight: bold;
+}
+table {
+  border-spacing: 0;
+  border-collapse: collapse;
+}
+td,
+th {
+  padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+  *,
+  *:before,
+  *:after {
+    color: #000 !important;
+    text-shadow: none !important;
+    background: transparent !important;
+    -webkit-box-shadow: none !important;
+            box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  a[href^="#"]:after,
+  a[href^="javascript:"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+  .navbar {
+    display: none;
+  }
+  .btn > .caret,
+  .dropup > .btn > .caret {
+    border-top-color: #000 !important;
+  }
+  .label {
+    border: 1px solid #000;
+  }
+  .table {
+    border-collapse: collapse !important;
+  }
+  .table td,
+  .table th {
+    background-color: #fff !important;
+  }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #ddd !important;
+  }
+}
+@font-face {
+  font-family: 'Glyphicons Halflings';
+
+  src: url('../fonts/glyphicons-halflings-regular.eot');
+  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+  content: "\2a";
+}
+.glyphicon-plus:before {
+  content: "\2b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+  content: "\20ac";
+}
+.glyphicon-minus:before {
+  content: "\2212";
+}
+.glyphicon-cloud:before {
+  content: "\2601";
+}
+.glyphicon-envelope:before {
+  content: "\2709";
+}
+.glyphicon-pencil:before {
+  content: "\270f";
+}
+.glyphicon-glass:before {
+  content: "\e001";
+}
+.glyphicon-music:before {
+  content: "\e002";
+}
+.glyphicon-search:before {
+  content: "\e003";
+}
+.glyphicon-heart:before {
+  content: "\e005";
+}
+.glyphicon-star:before {
+  content: "\e006";
+}
+.glyphicon-star-empty:before {
+  content: "\e007";
+}
+.glyphicon-user:before {
+  content: "\e008";
+}
+.glyphicon-film:before {
+  content: "\e009";
+}
+.glyphicon-th-large:before {
+  content: "\e010";
+}
+.glyphicon-th:before {
+  content: "\e011";
+}
+.glyphicon-th-list:before {
+  content: "\e012";
+}
+.glyphicon-ok:before {
+  content: "\e013";
+}
+.glyphicon-remove:before {
+  content: "\e014";
+}
+.glyphicon-zoom-in:before {
+  content: "\e015";
+}
+.glyphicon-zoom-out:before {
+  content: "\e016";
+}
+.glyphicon-off:before {
+  content: "\e017";
+}
+.glyphicon-signal:before {
+  content: "\e018";
+}
+.glyphicon-cog:before {
+  content: "\e019";
+}
+.glyphicon-trash:before {
+  content: "\e020";
+}
+.glyphicon-home:before {
+  content: "\e021";
+}
+.glyphicon-file:before {
+  content: "\e022";
+}
+.glyphicon-time:before {
+  content: "\e023";
+}
+.glyphicon-road:before {
+  content: "\e024";
+}
+.glyphicon-download-alt:before {
+  content: "\e025";
+}
+.glyphicon-download:before {
+  content: "\e026";
+}
+.glyphicon-upload:before {
+  content: "\e027";
+}
+.glyphicon-inbox:before {
+  content: "\e028";
+}
+.glyphicon-play-circle:before {
+  content: "\e029";
+}
+.glyphicon-repeat:before {
+  content: "\e030";
+}
+.glyphicon-refresh:before {
+  content: "\e031";
+}
+.glyphicon-list-alt:before {
+  content: "\e032";
+}
+.glyphicon-lock:before {
+  content: "\e033";
+}
+.glyphicon-flag:before {
+  content: "\e034";
+}
+.glyphicon-headphones:before {
+  content: "\e035";
+}
+.glyphicon-volume-off:before {
+  content: "\e036";
+}
+.glyphicon-volume-down:before {
+  content: "\e037";
+}
+.glyphicon-volume-up:before {
+  content: "\e038";
+}
+.glyphicon-qrcode:before {
+  content: "\e039";
+}
+.glyphicon-barcode:before {
+  content: "\e040";
+}
+.glyphicon-tag:before {
+  content: "\e041";
+}
+.glyphicon-tags:before {
+  content: "\e042";
+}
+.glyphicon-book:before {
+  content: "\e043";
+}
+.glyphicon-bookmark:before {
+  content: "\e044";
+}
+.glyphicon-print:before {
+  content: "\e045";
+}
+.glyphicon-camera:before {
+  content: "\e046";
+}
+.glyphicon-font:before {
+  content: "\e047";
+}
+.glyphicon-bold:before {
+  content: "\e048";
+}
+.glyphicon-italic:before {
+  content: "\e049";
+}
+.glyphicon-text-height:before {
+  content: "\e050";
+}
+.glyphicon-text-width:before {
+  content: "\e051";
+}
+.glyphicon-align-left:before {
+  content: "\e052";
+}
+.glyphicon-align-center:before {
+  content: "\e053";
+}
+.glyphicon-align-right:before {
+  content: "\e054";
+}
+.glyphicon-align-justify:before {
+  content: "\e055";
+}
+.glyphicon-list:before {
+  content: "\e056";
+}
+.glyphicon-indent-left:before {
+  content: "\e057";
+}
+.glyphicon-indent-right:before {
+  content: "\e058";
+}
+.glyphicon-facetime-video:before {
+  content: "\e059";
+}
+.glyphicon-picture:before {
+  content: "\e060";
+}
+.glyphicon-map-marker:before {
+  content: "\e062";
+}
+.glyphicon-adjust:before {
+  content: "\e063";
+}
+.glyphicon-tint:before {
+  content: "\e064";
+}
+.glyphicon-edit:before {
+  content: "\e065";
+}
+.glyphicon-share:before {
+  content: "\e066";
+}
+.glyphicon-check:before {
+  content: "\e067";
+}
+.glyphicon-move:before {
+  content: "\e068";
+}
+.glyphicon-step-backward:before {
+  content: "\e069";
+}
+.glyphicon-fast-backward:before {
+  content: "\e070";
+}
+.glyphicon-backward:before {
+  content: "\e071";
+}
+.glyphicon-play:before {
+  content: "\e072";
+}
+.glyphicon-pause:before {
+  content: "\e073";
+}
+.glyphicon-stop:before {
+  content: "\e074";
+}
+.glyphicon-forward:before {
+  content: "\e075";
+}
+.glyphicon-fast-forward:before {
+  content: "\e076";
+}
+.glyphicon-step-forward:before {
+  content: "\e077";
+}
+.glyphicon-eject:before {
+  content: "\e078";
+}
+.glyphicon-chevron-left:before {
+  content: "\e079";
+}
+.glyphicon-chevron-right:before {
+  content: "\e080";
+}
+.glyphicon-plus-sign:before {
+  content: "\e081";
+}
+.glyphicon-minus-sign:before {
+  content: "\e082";
+}
+.glyphicon-remove-sign:before {
+  content: "\e083";
+}
+.glyphicon-ok-sign:before {
+  content: "\e084";
+}
+.glyphicon-question-sign:before {
+  content: "\e085";
+}
+.glyphicon-info-sign:before {
+  content: "\e086";
+}
+.glyphicon-screenshot:before {
+  content: "\e087";
+}
+.glyphicon-remove-circle:before {
+  content: "\e088";
+}
+.glyphicon-ok-circle:before {
+  content: "\e089";
+}
+.glyphicon-ban-circle:before {
+  content: "\e090";
+}
+.glyphicon-arrow-left:before {
+  content: "\e091";
+}
+.glyphicon-arrow-right:before {
+  content: "\e092";
+}
+.glyphicon-arrow-up:before {
+  content: "\e093";
+}
+.glyphicon-arrow-down:before {
+  content: "\e094";
+}
+.glyphicon-share-alt:before {
+  content: "\e095";
+}
+.glyphicon-resize-full:before {
+  content: "\e096";
+}
+.glyphicon-resize-small:before {
+  content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+  content: "\e101";
+}
+.glyphicon-gift:before {
+  content: "\e102";
+}
+.glyphicon-leaf:before {
+  content: "\e103";
+}
+.glyphicon-fire:before {
+  content: "\e104";
+}
+.glyphicon-eye-open:before {
+  content: "\e105";
+}
+.glyphicon-eye-close:before {
+  content: "\e106";
+}
+.glyphicon-warning-sign:before {
+  content: "\e107";
+}
+.glyphicon-plane:before {
+  content: "\e108";
+}
+.glyphicon-calendar:before {
+  content: "\e109";
+}
+.glyphicon-random:before {
+  content: "\e110";
+}
+.glyphicon-comment:before {
+  content: "\e111";
+}
+.glyphicon-magnet:before {
+  content: "\e112";
+}
+.glyphicon-chevron-up:before {
+  content: "\e113";
+}
+.glyphicon-chevron-down:before {
+  content: "\e114";
+}
+.glyphicon-retweet:before {
+  content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+  content: "\e116";
+}
+.glyphicon-folder-close:before {
+  content: "\e117";
+}
+.glyphicon-folder-open:before {
+  content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+  content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+  content: "\e120";
+}
+.glyphicon-hdd:before {
+  content: "\e121";
+}
+.glyphicon-bullhorn:before {
+  content: "\e122";
+}
+.glyphicon-bell:before {
+  content: "\e123";
+}
+.glyphicon-certificate:before {
+  content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+  content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+  content: "\e126";
+}
+.glyphicon-hand-right:before {
+  content: "\e127";
+}
+.glyphicon-hand-left:before {
+  content: "\e128";
+}
+.glyphicon-hand-up:before {
+  content: "\e129";
+}
+.glyphicon-hand-down:before {
+  content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+  content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+  content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+  content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+  content: "\e134";
+}
+.glyphicon-globe:before {
+  content: "\e135";
+}
+.glyphicon-wrench:before {
+  content: "\e136";
+}
+.glyphicon-tasks:before {
+  content: "\e137";
+}
+.glyphicon-filter:before {
+  content: "\e138";
+}
+.glyphicon-briefcase:before {
+  content: "\e139";
+}
+.glyphicon-fullscreen:before {
+  content: "\e140";
+}
+.glyphicon-dashboard:before {
+  content: "\e141";
+}
+.glyphicon-paperclip:before {
+  content: "\e142";
+}
+.glyphicon-heart-empty:before {
+  content: "\e143";
+}
+.glyphicon-link:before {
+  content: "\e144";
+}
+.glyphicon-phone:before {
+  content: "\e145";
+}
+.glyphicon-pushpin:before {
+  content: "\e146";
+}
+.glyphicon-usd:before {
+  content: "\e148";
+}
+.glyphicon-gbp:before {
+  content: "\e149";
+}
+.glyphicon-sort:before {
+  content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+  content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+  content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+  content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+  content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+  content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+  content: "\e156";
+}
+.glyphicon-unchecked:before {
+  content: "\e157";
+}
+.glyphicon-expand:before {
+  content: "\e158";
+}
+.glyphicon-collapse-down:before {
+  content: "\e159";
+}
+.glyphicon-collapse-up:before {
+  content: "\e160";
+}
+.glyphicon-log-in:before {
+  content: "\e161";
+}
+.glyphicon-flash:before {
+  content: "\e162";
+}
+.glyphicon-log-out:before {
+  content: "\e163";
+}
+.glyphicon-new-window:before {
+  content: "\e164";
+}
+.glyphicon-record:before {
+  content: "\e165";
+}
+.glyphicon-save:before {
+  content: "\e166";
+}
+.glyphicon-open:before {
+  content: "\e167";
+}
+.glyphicon-saved:before {
+  content: "\e168";
+}
+.glyphicon-import:before {
+  content: "\e169";
+}
+.glyphicon-export:before {
+  content: "\e170";
+}
+.glyphicon-send:before {
+  content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+  content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+  content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+  content: "\e174";
+}
+.glyphicon-floppy-save:before {
+  content: "\e175";
+}
+.glyphicon-floppy-open:before {
+  content: "\e176";
+}
+.glyphicon-credit-card:before {
+  content: "\e177";
+}
+.glyphicon-transfer:before {
+  content: "\e178";
+}
+.glyphicon-cutlery:before {
+  content: "\e179";
+}
+.glyphicon-header:before {
+  content: "\e180";
+}
+.glyphicon-compressed:before {
+  content: "\e181";
+}
+.glyphicon-earphone:before {
+  content: "\e182";
+}
+.glyphicon-phone-alt:before {
+  content: "\e183";
+}
+.glyphicon-tower:before {
+  content: "\e184";
+}
+.glyphicon-stats:before {
+  content: "\e185";
+}
+.glyphicon-sd-video:before {
+  content: "\e186";
+}
+.glyphicon-hd-video:before {
+  content: "\e187";
+}
+.glyphicon-subtitles:before {
+  content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+  content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+  content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+  content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+  content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+  content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+  content: "\e194";
+}
+.glyphicon-registration-mark:before {
+  content: "\e195";
+}
+.glyphicon-cloud-download:before {
+  content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+  content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+  content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+  content: "\e200";
+}
+.glyphicon-cd:before {
+  content: "\e201";
+}
+.glyphicon-save-file:before {
+  content: "\e202";
+}
+.glyphicon-open-file:before {
+  content: "\e203";
+}
+.glyphicon-level-up:before {
+  content: "\e204";
+}
+.glyphicon-copy:before {
+  content: "\e205";
+}
+.glyphicon-paste:before {
+  content: "\e206";
+}
+.glyphicon-alert:before {
+  content: "\e209";
+}
+.glyphicon-equalizer:before {
+  content: "\e210";
+}
+.glyphicon-king:before {
+  content: "\e211";
+}
+.glyphicon-queen:before {
+  content: "\e212";
+}
+.glyphicon-pawn:before {
+  content: "\e213";
+}
+.glyphicon-bishop:before {
+  content: "\e214";
+}
+.glyphicon-knight:before {
+  content: "\e215";
+}
+.glyphicon-baby-formula:before {
+  content: "\e216";
+}
+.glyphicon-tent:before {
+  content: "\26fa";
+}
+.glyphicon-blackboard:before {
+  content: "\e218";
+}
+.glyphicon-bed:before {
+  content: "\e219";
+}
+.glyphicon-apple:before {
+  content: "\f8ff";
+}
+.glyphicon-erase:before {
+  content: "\e221";
+}
+.glyphicon-hourglass:before {
+  content: "\231b";
+}
+.glyphicon-lamp:before {
+  content: "\e223";
+}
+.glyphicon-duplicate:before {
+  content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+  content: "\e225";
+}
+.glyphicon-scissors:before {
+  content: "\e226";
+}
+.glyphicon-bitcoin:before {
+  content: "\e227";
+}
+.glyphicon-btc:before {
+  content: "\e227";
+}
+.glyphicon-xbt:before {
+  content: "\e227";
+}
+.glyphicon-yen:before {
+  content: "\00a5";
+}
+.glyphicon-jpy:before {
+  content: "\00a5";
+}
+.glyphicon-ruble:before {
+  content: "\20bd";
+}
+.glyphicon-rub:before {
+  content: "\20bd";
+}
+.glyphicon-scale:before {
+  content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+  content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+  content: "\e232";
+}
+.glyphicon-education:before {
+  content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+  content: "\e234";
+}
+.glyphicon-option-vertical:before {
+  content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+  content: "\e236";
+}
+.glyphicon-modal-window:before {
+  content: "\e237";
+}
+.glyphicon-oil:before {
+  content: "\e238";
+}
+.glyphicon-grain:before {
+  content: "\e239";
+}
+.glyphicon-sunglasses:before {
+  content: "\e240";
+}
+.glyphicon-text-size:before {
+  content: "\e241";
+}
+.glyphicon-text-color:before {
+  content: "\e242";
+}
+.glyphicon-text-background:before {
+  content: "\e243";
+}
+.glyphicon-object-align-top:before {
+  content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+  content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+  content: "\e246";
+}
+.glyphicon-object-align-left:before {
+  content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+  content: "\e248";
+}
+.glyphicon-object-align-right:before {
+  content: "\e249";
+}
+.glyphicon-triangle-right:before {
+  content: "\e250";
+}
+.glyphicon-triangle-left:before {
+  content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+  content: "\e252";
+}
+.glyphicon-triangle-top:before {
+  content: "\e253";
+}
+.glyphicon-console:before {
+  content: "\e254";
+}
+.glyphicon-superscript:before {
+  content: "\e255";
+}
+.glyphicon-subscript:before {
+  content: "\e256";
+}
+.glyphicon-menu-left:before {
+  content: "\e257";
+}
+.glyphicon-menu-right:before {
+  content: "\e258";
+}
+.glyphicon-menu-down:before {
+  content: "\e259";
+}
+.glyphicon-menu-up:before {
+  content: "\e260";
+}
+* {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+*:before,
+*:after {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+html {
+  font-size: 10px;
+
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #333;
+  background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+a {
+  color: #337ab7;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+}
+figure {
+  margin: 0;
+}
+img {
+  vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.img-rounded {
+  border-radius: 6px;
+}
+.img-thumbnail {
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+  padding: 4px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all .2s ease-in-out;
+       -o-transition: all .2s ease-in-out;
+          transition: all .2s ease-in-out;
+}
+.img-circle {
+  border-radius: 50%;
+}
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eee;
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
+[role="button"] {
+  cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+  font-family: inherit;
+  font-weight: 500;
+  line-height: 1.1;
+  color: #333333;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+  font-weight: normal;
+  line-height: 1;
+  color: #777;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+  font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+  font-size: 75%;
+}
+h1,
+.h1 {
+  font-size: 36px;
+}
+h2,
+.h2 {
+  font-size: 30px;
+}
+h3,
+.h3 {
+  font-size: 24px;
+}
+h4,
+.h4 {
+  font-size: 18px;
+}
+h5,
+.h5 {
+  font-size: 14px;
+}
+h6,
+.h6 {
+  font-size: 12px;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 1.4;
+}
+@media (min-width: 768px) {
+  .lead {
+    font-size: 21px;
+  }
+}
+small,
+.small {
+  font-size: 85%;
+}
+mark,
+.mark {
+  padding: .2em;
+  background-color: #fcf8e3;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+.text-justify {
+  text-align: justify;
+}
+.text-nowrap {
+  white-space: nowrap;
+}
+.text-lowercase {
+  text-transform: lowercase;
+}
+.text-uppercase {
+  text-transform: uppercase;
+}
+.text-capitalize {
+  text-transform: capitalize;
+}
+.text-muted {
+  color: #777;
+}
+.text-primary {
+  color: #337ab7;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+  color: #286090;
+}
+.text-success {
+  color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+  color: #2b542c;
+}
+.text-info {
+  color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+  color: #245269;
+}
+.text-warning {
+  color: #8a6d3b;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #66512c;
+}
+.text-danger {
+  color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+  color: #843534;
+}
+.bg-primary {
+  color: #fff;
+  background-color: #337ab7;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+  background-color: #286090;
+}
+.bg-success {
+  background-color: #dff0d8;
+}
+a.bg-success:hover,
+a.bg-success:focus {
+  background-color: #c1e2b3;
+}
+.bg-info {
+  background-color: #d9edf7;
+}
+a.bg-info:hover,
+a.bg-info:focus {
+  background-color: #afd9ee;
+}
+.bg-warning {
+  background-color: #fcf8e3;
+}
+a.bg-warning:hover,
+a.bg-warning:focus {
+  background-color: #f7ecb5;
+}
+.bg-danger {
+  background-color: #f2dede;
+}
+a.bg-danger:hover,
+a.bg-danger:focus {
+  background-color: #e4b9b9;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+  margin-bottom: 0;
+}
+.list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+.list-inline {
+  padding-left: 0;
+  margin-left: -5px;
+  list-style: none;
+}
+.list-inline > li {
+  display: inline-block;
+  padding-right: 5px;
+  padding-left: 5px;
+}
+dl {
+  margin-top: 0;
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 1.42857143;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .dl-horizontal dt {
+    float: left;
+    width: 160px;
+    overflow: hidden;
+    clear: left;
+    text-align: right;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .dl-horizontal dd {
+    margin-left: 180px;
+  }
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #777;
+}
+.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  font-size: 17.5px;
+  border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+  margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+  display: block;
+  font-size: 80%;
+  line-height: 1.42857143;
+  color: #777;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+  content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  text-align: right;
+  border-right: 5px solid #eee;
+  border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+  content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+  content: '\00A0 \2014';
+}
+address {
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  background-color: #f9f2f4;
+  border-radius: 4px;
+}
+kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #fff;
+  background-color: #333;
+  border-radius: 3px;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+kbd kbd {
+  padding: 0;
+  font-size: 100%;
+  font-weight: bold;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+pre {
+  display: block;
+  /*padding: 9.5px;*/
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.42857143;
+  color: #333;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border-radius: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+.container {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+@media (min-width: 768px) {
+  .container {
+    width: 750px;
+  }
+}
+@media (min-width: 992px) {
+  .container {
+    width: 970px;
+  }
+}
+@media (min-width: 1200px) {
+  .container {
+    width: 1170px;
+  }
+}
+.container-fluid {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+.row {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+  float: left;
+}
+.col-xs-12 {
+  width: 100%;
+}
+.col-xs-11 {
+  width: 91.66666667%;
+}
+.col-xs-10 {
+  width: 83.33333333%;
+}
+.col-xs-9 {
+  width: 75%;
+}
+.col-xs-8 {
+  width: 66.66666667%;
+}
+.col-xs-7 {
+  width: 58.33333333%;
+}
+.col-xs-6 {
+  width: 50%;
+}
+.col-xs-5 {
+  width: 41.66666667%;
+}
+.col-xs-4 {
+  width: 33.33333333%;
+}
+.col-xs-3 {
+  width: 25%;
+}
+.col-xs-2 {
+  width: 16.66666667%;
+}
+.col-xs-1 {
+  width: 8.33333333%;
+}
+.col-xs-pull-12 {
+  right: 100%;
+}
+.col-xs-pull-11 {
+  right: 91.66666667%;
+}
+.col-xs-pull-10 {
+  right: 83.33333333%;
+}
+.col-xs-pull-9 {
+  right: 75%;
+}
+.col-xs-pull-8 {
+  right: 66.66666667%;
+}
+.col-xs-pull-7 {
+  right: 58.33333333%;
+}
+.col-xs-pull-6 {
+  right: 50%;
+}
+.col-xs-pull-5 {
+  right: 41.66666667%;
+}
+.col-xs-pull-4 {
+  right: 33.33333333%;
+}
+.col-xs-pull-3 {
+  right: 25%;
+}
+.col-xs-pull-2 {
+  right: 16.66666667%;
+}
+.col-xs-pull-1 {
+  right: 8.33333333%;
+}
+.col-xs-pull-0 {
+  right: auto;
+}
+.col-xs-push-12 {
+  left: 100%;
+}
+.col-xs-push-11 {
+  left: 91.66666667%;
+}
+.col-xs-push-10 {
+  left: 83.33333333%;
+}
+.col-xs-push-9 {
+  left: 75%;
+}
+.col-xs-push-8 {
+  left: 66.66666667%;
+}
+.col-xs-push-7 {
+  left: 58.33333333%;
+}
+.col-xs-push-6 {
+  left: 50%;
+}
+.col-xs-push-5 {
+  left: 41.66666667%;
+}
+.col-xs-push-4 {
+  left: 33.33333333%;
+}
+.col-xs-push-3 {
+  left: 25%;
+}
+.col-xs-push-2 {
+  left: 16.66666667%;
+}
+.col-xs-push-1 {
+  left: 8.33333333%;
+}
+.col-xs-push-0 {
+  left: auto;
+}
+.col-xs-offset-12 {
+  margin-left: 100%;
+}
+.col-xs-offset-11 {
+  margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+  margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+.col-xs-offset-8 {
+  margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+  margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+.col-xs-offset-5 {
+  margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+  margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+.col-xs-offset-2 {
+  margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+  margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+    float: left;
+  }
+  .col-sm-12 {
+    width: 100%;
+  }
+  .col-sm-11 {
+    width: 91.66666667%;
+  }
+  .col-sm-10 {
+    width: 83.33333333%;
+  }
+  .col-sm-9 {
+    width: 75%;
+  }
+  .col-sm-8 {
+    width: 66.66666667%;
+  }
+  .col-sm-7 {
+    width: 58.33333333%;
+  }
+  .col-sm-6 {
+    width: 50%;
+  }
+  .col-sm-5 {
+    width: 41.66666667%;
+  }
+  .col-sm-4 {
+    width: 33.33333333%;
+  }
+  .col-sm-3 {
+    width: 25%;
+  }
+  .col-sm-2 {
+    width: 16.66666667%;
+  }
+  .col-sm-1 {
+    width: 8.33333333%;
+  }
+  .col-sm-pull-12 {
+    right: 100%;
+  }
+  .col-sm-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-sm-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-sm-pull-9 {
+    right: 75%;
+  }
+  .col-sm-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-sm-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-sm-pull-6 {
+    right: 50%;
+  }
+  .col-sm-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-sm-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-sm-pull-3 {
+    right: 25%;
+  }
+  .col-sm-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-sm-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-sm-pull-0 {
+    right: auto;
+  }
+  .col-sm-push-12 {
+    left: 100%;
+  }
+  .col-sm-push-11 {
+    left: 91.66666667%;
+  }
+  .col-sm-push-10 {
+    left: 83.33333333%;
+  }
+  .col-sm-push-9 {
+    left: 75%;
+  }
+  .col-sm-push-8 {
+    left: 66.66666667%;
+  }
+  .col-sm-push-7 {
+    left: 58.33333333%;
+  }
+  .col-sm-push-6 {
+    left: 50%;
+  }
+  .col-sm-push-5 {
+    left: 41.66666667%;
+  }
+  .col-sm-push-4 {
+    left: 33.33333333%;
+  }
+  .col-sm-push-3 {
+    left: 25%;
+  }
+  .col-sm-push-2 {
+    left: 16.66666667%;
+  }
+  .col-sm-push-1 {
+    left: 8.33333333%;
+  }
+  .col-sm-push-0 {
+    left: auto;
+  }
+  .col-sm-offset-12 {
+    margin-left: 100%;
+  }
+  .col-sm-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-sm-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+  .col-sm-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-sm-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+  .col-sm-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-sm-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+  .col-sm-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-sm-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-sm-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 992px) {
+  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+    float: left;
+  }
+  .col-md-12 {
+    width: 100%;
+  }
+  .col-md-11 {
+    width: 91.66666667%;
+  }
+  .col-md-10 {
+    width: 83.33333333%;
+  }
+  .col-md-9 {
+    width: 75%;
+  }
+  .col-md-8 {
+    width: 66.66666667%;
+  }
+  .col-md-7 {
+    width: 58.33333333%;
+  }
+  .col-md-6 {
+    width: 50%;
+  }
+  .col-md-5 {
+    width: 41.66666667%;
+  }
+  .col-md-4 {
+    width: 33.33333333%;
+  }
+  .col-md-3 {
+    width: 25%;
+  }
+  .col-md-2 {
+    width: 16.66666667%;
+  }
+  .col-md-1 {
+    width: 8.33333333%;
+  }
+  .col-md-pull-12 {
+    right: 100%;
+  }
+  .col-md-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-md-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-md-pull-9 {
+    right: 75%;
+  }
+  .col-md-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-md-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-md-pull-6 {
+    right: 50%;
+  }
+  .col-md-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-md-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-md-pull-3 {
+    right: 25%;
+  }
+  .col-md-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-md-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-md-pull-0 {
+    right: auto;
+  }
+  .col-md-push-12 {
+    left: 100%;
+  }
+  .col-md-push-11 {
+    left: 91.66666667%;
+  }
+  .col-md-push-10 {
+    left: 83.33333333%;
+  }
+  .col-md-push-9 {
+    left: 75%;
+  }
+  .col-md-push-8 {
+    left: 66.66666667%;
+  }
+  .col-md-push-7 {
+    left: 58.33333333%;
+  }
+  .col-md-push-6 {
+    left: 50%;
+  }
+  .col-md-push-5 {
+    left: 41.66666667%;
+  }
+  .col-md-push-4 {
+    left: 33.33333333%;
+  }
+  .col-md-push-3 {
+    left: 25%;
+  }
+  .col-md-push-2 {
+    left: 16.66666667%;
+  }
+  .col-md-push-1 {
+    left: 8.33333333%;
+  }
+  .col-md-push-0 {
+    left: auto;
+  }
+  .col-md-offset-12 {
+    margin-left: 100%;
+  }
+  .col-md-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-md-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+  .col-md-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-md-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+  .col-md-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-md-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+  .col-md-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-md-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-md-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 1200px) {
+  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+    float: left;
+  }
+  .col-lg-12 {
+    width: 100%;
+  }
+  .col-lg-11 {
+    width: 91.66666667%;
+  }
+  .col-lg-10 {
+    width: 83.33333333%;
+  }
+  .col-lg-9 {
+    width: 75%;
+  }
+  .col-lg-8 {
+    width: 66.66666667%;
+  }
+  .col-lg-7 {
+    width: 58.33333333%;
+  }
+  .col-lg-6 {
+    width: 50%;
+  }
+  .col-lg-5 {
+    width: 41.66666667%;
+  }
+  .col-lg-4 {
+    width: 33.33333333%;
+  }
+  .col-lg-3 {
+    width: 25%;
+  }
+  .col-lg-2 {
+    width: 16.66666667%;
+  }
+  .col-lg-1 {
+    width: 8.33333333%;
+  }
+  .col-lg-pull-12 {
+    right: 100%;
+  }
+  .col-lg-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-lg-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-lg-pull-9 {
+    right: 75%;
+  }
+  .col-lg-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-lg-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-lg-pull-6 {
+    right: 50%;
+  }
+  .col-lg-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-lg-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-lg-pull-3 {
+    right: 25%;
+  }
+  .col-lg-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-lg-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-lg-pull-0 {
+    right: auto;
+  }
+  .col-lg-push-12 {
+    left: 100%;
+  }
+  .col-lg-push-11 {
+    left: 91.66666667%;
+  }
+  .col-lg-push-10 {
+    left: 83.33333333%;
+  }
+  .col-lg-push-9 {
+    left: 75%;
+  }
+  .col-lg-push-8 {
+    left: 66.66666667%;
+  }
+  .col-lg-push-7 {
+    left: 58.33333333%;
+  }
+  .col-lg-push-6 {
+    left: 50%;
+  }
+  .col-lg-push-5 {
+    left: 41.66666667%;
+  }
+  .col-lg-push-4 {
+    left: 33.33333333%;
+  }
+  .col-lg-push-3 {
+    left: 25%;
+  }
+  .col-lg-push-2 {
+    left: 16.66666667%;
+  }
+  .col-lg-push-1 {
+    left: 8.33333333%;
+  }
+  .col-lg-push-0 {
+    left: auto;
+  }
+  .col-lg-offset-12 {
+    margin-left: 100%;
+  }
+  .col-lg-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-lg-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+  .col-lg-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-lg-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+  .col-lg-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-lg-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+  .col-lg-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-lg-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-lg-offset-0 {
+    margin-left: 0;
+  }
+}
+table {
+  background-color: transparent;
+}
+caption {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  color: #777;
+  text-align: left;
+}
+th {
+  text-align: left;
+}
+.table {
+  width: 100%;
+  max-width: 100%;
+  margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+  padding: 8px;
+  line-height: 1.42857143;
+  vertical-align: top;
+  border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+  vertical-align: bottom;
+  border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+  border-top: 0;
+}
+.table > tbody + tbody {
+  border-top: 2px solid #ddd;
+}
+.table .table {
+  background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+  padding: 5px;
+}
+.table-bordered {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+  border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+  background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover {
+  background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+  position: static;
+  display: table-column;
+  float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+  position: static;
+  display: table-cell;
+  float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+  background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+  background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+  background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+  background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+  background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+  background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+  background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc;
+}
+.table-responsive {
+  min-height: .01%;
+  overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-y: hidden;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #ddd;
+  }
+  .table-responsive > .table {
+    margin-bottom: 0;
+  }
+  .table-responsive > .table > thead > tr > th,
+  .table-responsive > .table > tbody > tr > th,
+  .table-responsive > .table > tfoot > tr > th,
+  .table-responsive > .table > thead > tr > td,
+  .table-responsive > .table > tbody > tr > td,
+  .table-responsive > .table > tfoot > tr > td {
+    white-space: nowrap;
+  }
+  .table-responsive > .table-bordered {
+    border: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:first-child,
+  .table-responsive > .table-bordered > tbody > tr > th:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+  .table-responsive > .table-bordered > thead > tr > td:first-child,
+  .table-responsive > .table-bordered > tbody > tr > td:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+    border-left: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:last-child,
+  .table-responsive > .table-bordered > tbody > tr > th:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+  .table-responsive > .table-bordered > thead > tr > td:last-child,
+  .table-responsive > .table-bordered > tbody > tr > td:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+    border-right: 0;
+  }
+  .table-responsive > .table-bordered > tbody > tr:last-child > th,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+  .table-responsive > .table-bordered > tbody > tr:last-child > td,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+    border-bottom: 0;
+  }
+}
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 21px;
+  line-height: inherit;
+  color: #333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+label {
+  display: inline-block;
+  max-width: 100%;
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+input[type="search"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9;
+  line-height: normal;
+}
+input[type="file"] {
+  display: block;
+}
+input[type="range"] {
+  display: block;
+  width: 100%;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+}
+.form-control {
+  display: block;
+  width: 100%;
+  height: 34px;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+  color: #999;
+  opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+  color: #999;
+}
+.form-control::-webkit-input-placeholder {
+  color: #999;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+  background-color: #eee;
+  opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+  cursor: not-allowed;
+}
+textarea.form-control {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  input[type="date"].form-control,
+  input[type="time"].form-control,
+  input[type="datetime-local"].form-control,
+  input[type="month"].form-control {
+    line-height: 34px;
+  }
+  input[type="date"].input-sm,
+  input[type="time"].input-sm,
+  input[type="datetime-local"].input-sm,
+  input[type="month"].input-sm,
+  .input-group-sm input[type="date"],
+  .input-group-sm input[type="time"],
+  .input-group-sm input[type="datetime-local"],
+  .input-group-sm input[type="month"] {
+    line-height: 30px;
+  }
+  input[type="date"].input-lg,
+  input[type="time"].input-lg,
+  input[type="datetime-local"].input-lg,
+  input[type="month"].input-lg,
+  .input-group-lg input[type="date"],
+  .input-group-lg input[type="time"],
+  .input-group-lg input[type="datetime-local"],
+  .input-group-lg input[type="month"] {
+    line-height: 46px;
+  }
+}
+.form-group {
+  margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+  position: relative;
+  display: block;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+  min-height: 20px;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  position: absolute;
+  margin-top: 4px \9;
+  margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+  position: relative;
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+  cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+  cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+  cursor: not-allowed;
+}
+.form-control-static {
+  min-height: 34px;
+  padding-top: 7px;
+  padding-bottom: 7px;
+  margin-bottom: 0;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-sm {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+  height: auto;
+}
+.form-group-sm .form-control {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.form-group-sm select.form-control {
+  height: 30px;
+  line-height: 30px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+  height: auto;
+}
+.form-group-sm .form-control-static {
+  height: 30px;
+  min-height: 32px;
+  padding: 6px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.input-lg {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+select.input-lg {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+  height: auto;
+}
+.form-group-lg .form-control {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.form-group-lg select.form-control {
+  height: 46px;
+  line-height: 46px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+  height: auto;
+}
+.form-group-lg .form-control-static {
+  height: 46px;
+  min-height: 38px;
+  padding: 11px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+}
+.has-feedback {
+  position: relative;
+}
+.has-feedback .form-control {
+  padding-right: 42.5px;
+}
+.form-control-feedback {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2;
+  display: block;
+  width: 34px;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+  pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+  width: 46px;
+  height: 46px;
+  line-height: 46px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+  color: #3c763d;
+}
+.has-success .form-control {
+  border-color: #3c763d;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+  border-color: #2b542c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+  color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+  color: #8a6d3b;
+}
+.has-warning .form-control {
+  border-color: #8a6d3b;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+  border-color: #66512c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+  color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+  color: #a94442;
+}
+.has-error .form-control {
+  border-color: #a94442;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+  border-color: #843534;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #a94442;
+}
+.has-error .form-control-feedback {
+  color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+  top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+  top: 0;
+}
+.help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: #737373;
+}
+@media (min-width: 768px) {
+  .form-inline .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .form-inline .form-control-static {
+    display: inline-block;
+  }
+  .form-inline .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .form-inline .input-group .input-group-addon,
+  .form-inline .input-group .input-group-btn,
+  .form-inline .input-group .form-control {
+    width: auto;
+  }
+  .form-inline .input-group > .form-control {
+    width: 100%;
+  }
+  .form-inline .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio,
+  .form-inline .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio label,
+  .form-inline .checkbox label {
+    padding-left: 0;
+  }
+  .form-inline .radio input[type="radio"],
+  .form-inline .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .form-inline .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+  padding-top: 7px;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+  min-height: 27px;
+}
+.form-horizontal .form-group {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .control-label {
+    padding-top: 7px;
+    margin-bottom: 0;
+    text-align: right;
+  }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+  right: 15px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-lg .control-label {
+    padding-top: 14.333333px;
+    font-size: 18px;
+  }
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-sm .control-label {
+    padding-top: 6px;
+    font-size: 12px;
+  }
+}
+.btn {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  -ms-touch-action: manipulation;
+      touch-action: manipulation;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+  color: #333;
+  text-decoration: none;
+}
+.btn:active,
+.btn.active {
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+  cursor: not-allowed;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  opacity: .65;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+  pointer-events: none;
+}
+.btn-default {
+  color: #333;
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default:focus,
+.btn-default.focus {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #8c8c8c;
+}
+.btn-default:hover {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+  color: #333;
+  background-color: #d4d4d4;
+  border-color: #8c8c8c;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default .badge {
+  color: #fff;
+  background-color: #333;
+}
+.btn-primary {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+  color: #fff;
+  background-color: #286090;
+  border-color: #122b40;
+}
+.btn-primary:hover {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+  color: #fff;
+  background-color: #204d74;
+  border-color: #122b40;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success:focus,
+.btn-success.focus {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #255625;
+}
+.btn-success:hover {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+  color: #fff;
+  background-color: #398439;
+  border-color: #255625;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #fff;
+}
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info:focus,
+.btn-info.focus {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #1b6d85;
+}
+.btn-info:hover {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+  color: #fff;
+  background-color: #269abc;
+  border-color: #1b6d85;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #fff;
+}
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #985f0d;
+}
+.btn-warning:hover {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+  color: #fff;
+  background-color: #d58512;
+  border-color: #985f0d;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning .badge {
+  color: #f0ad4e;
+  background-color: #fff;
+}
+.btn-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #761c19;
+}
+.btn-danger:hover {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+  color: #fff;
+  background-color: #ac2925;
+  border-color: #761c19;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #fff;
+}
+.btn-link {
+  font-weight: normal;
+  color: #337ab7;
+  border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+  border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #23527c;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+  color: #777;
+  text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.fade {
+  opacity: 0;
+  -webkit-transition: opacity .15s linear;
+       -o-transition: opacity .15s linear;
+          transition: opacity .15s linear;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  display: none;
+}
+.collapse.in {
+  display: block;
+}
+tr.collapse.in {
+  display: table-row;
+}
+tbody.collapse.in {
+  display: table-row-group;
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition-timing-function: ease;
+       -o-transition-timing-function: ease;
+          transition-timing-function: ease;
+  -webkit-transition-duration: .35s;
+       -o-transition-duration: .35s;
+          transition-duration: .35s;
+  -webkit-transition-property: height, visibility;
+       -o-transition-property: height, visibility;
+          transition-property: height, visibility;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px dashed;
+  border-top: 4px solid \9;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle:focus {
+  outline: 0;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  font-size: 14px;
+  text-align: left;
+  list-style: none;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  color: #262626;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #fff;
+  text-decoration: none;
+  background-color: #337ab7;
+  outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #777;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.open > a {
+  outline: 0;
+}
+.dropdown-menu-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu-left {
+  right: auto;
+  left: 0;
+}
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: 12px;
+  line-height: 1.42857143;
+  color: #777;
+  white-space: nowrap;
+}
+.dropdown-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 990;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  content: "";
+  border-top: 0;
+  border-bottom: 4px solid;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;
+  }
+  .navbar-right .dropdown-menu-left {
+    right: auto;
+    left: 0;
+  }
+}
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+  z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+  margin-left: -1px;
+}
+.btn-toolbar {
+  margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+  float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+  margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-right: 12px;
+  padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn .caret {
+  margin-left: 0;
+}
+.btn-lg .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+  border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+  display: block;
+  float: none;
+  width: 100%;
+  max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+  float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+  margin-top: -1px;
+  margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+  border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+  display: table-cell;
+  float: none;
+  width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+  width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+  left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+}
+.input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate;
+}
+.input-group[class*="col-"] {
+  float: none;
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-group .form-control {
+  position: relative;
+  z-index: 2;
+  float: left;
+  width: 100%;
+  margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+  display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.input-group-addon {
+  padding: 6px 12px;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1;
+  color: #555;
+  text-align: center;
+  background-color: #eee;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+.input-group-addon.input-sm {
+  padding: 5px 10px;
+  font-size: 12px;
+  border-radius: 3px;
+}
+.input-group-addon.input-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+  margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+  border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+  border-left: 0;
+}
+.input-group-btn {
+  position: relative;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-group-btn > .btn {
+  position: relative;
+}
+.input-group-btn > .btn + .btn {
+  margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+  z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+  margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+  z-index: 2;
+  margin-left: -1px;
+}
+.nav {
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.nav > li {
+  position: relative;
+  display: block;
+}
+.nav > li > a {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+}
+.nav > li.disabled > a {
+  color: #777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+  color: #777;
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+  background-color: #eee;
+  border-color: #337ab7;
+}
+.nav .nav-divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  float: left;
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  margin-right: 2px;
+  line-height: 1.42857143;
+  border: 1px solid transparent;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+  color: #555;
+  cursor: default;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+  width: 100%;
+  border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+  float: none;
+}
+.nav-tabs.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-tabs.nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs.nav-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs.nav-justified > .active > a,
+  .nav-tabs.nav-justified > .active > a:hover,
+  .nav-tabs.nav-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.nav-pills > li {
+  float: left;
+}
+.nav-pills > li > a {
+  border-radius: 4px;
+}
+.nav-pills > li + li {
+  margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+  color: #fff;
+  background-color: #337ab7;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li + li {
+  margin-top: 2px;
+  margin-left: 0;
+}
+.nav-justified {
+  width: 100%;
+}
+.nav-justified > li {
+  float: none;
+}
+.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs-justified {
+  border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs-justified > .active > a,
+  .nav-tabs-justified > .active > a:hover,
+  .nav-tabs-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.tab-content > .tab-pane {
+  display: none;
+}
+.tab-content > .active {
+  display: block;
+}
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar {
+  position: relative;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+  .navbar {
+    border-radius: 4px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left;
+  }
+}
+.navbar-collapse {
+  padding-right: 15px;
+  padding-left: 15px;
+  overflow-x: visible;
+  -webkit-overflow-scrolling: touch;
+  border-top: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+  overflow-y: auto;
+}
+@media (min-width: 768px) {
+  .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important;
+  }
+  .navbar-collapse.in {
+    overflow-y: visible;
+  }
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-static-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+  }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+  max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    max-height: 200px;
+  }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .container > .navbar-header,
+  .container-fluid > .navbar-header,
+  .container > .navbar-collapse,
+  .container-fluid > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0;
+  }
+}
+.navbar-static-top {
+  z-index: 1000;
+  border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+  .navbar-static-top {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+@media (min-width: 768px) {
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0;
+  border-width: 1px 0 0;
+}
+.navbar-brand {
+  float: left;
+  height: 100%;
+  padding: 0px 15px;
+  font-size: 18px;
+  line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+  text-decoration: none;
+}
+.navbar-brand > img {
+  display: block;
+  height: 100%;
+}
+@media (min-width: 768px) {
+  .navbar > .container .navbar-brand,
+  .navbar > .container-fluid .navbar-brand {
+    margin-left: -15px;
+  }
+}
+.navbar-toggle {
+  position: relative;
+  float: right;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-right: 15px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.navbar-toggle:focus {
+  outline: 0;
+}
+.navbar-toggle .icon-bar {
+  display: block;
+  width: 22px;
+  height: 2px;
+  border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+  margin-top: 4px;
+}
+@media (min-width: 768px) {
+  .navbar-toggle {
+    display: none;
+  }
+}
+.navbar-nav {
+  margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+  padding-top: 10px;
+  padding-bottom: 10px;
+  line-height: 20px;
+}
+@media (max-width: 767px) {
+  .navbar-nav .open .dropdown-menu {
+    position: static;
+    float: none;
+    width: auto;
+    margin-top: 0;
+    background-color: transparent;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-nav .open .dropdown-menu > li > a,
+  .navbar-nav .open .dropdown-menu .dropdown-header {
+    padding: 5px 15px 5px 25px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a {
+    line-height: 20px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-nav .open .dropdown-menu > li > a:focus {
+    background-image: none;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-nav {
+    float: left;
+    margin: 0;
+  }
+  .navbar-nav > li {
+    float: left;
+    margin-left:20px;
+  }
+  .navbar-nav > li > a {
+    padding:10px 15px;
+    font-size: 16px;
+    color: #80287a;
+  }
+}
+.navbar-form {
+  padding: 10px 15px;
+  margin-top: 8px;
+  margin-right: -15px;
+  margin-bottom: 8px;
+  margin-left: -15px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+  .navbar-form .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control-static {
+    display: inline-block;
+  }
+  .navbar-form .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .navbar-form .input-group .input-group-addon,
+  .navbar-form .input-group .input-group-btn,
+  .navbar-form .input-group .form-control {
+    width: auto;
+  }
+  .navbar-form .input-group > .form-control {
+    width: 100%;
+  }
+  .navbar-form .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio,
+  .navbar-form .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio label,
+  .navbar-form .checkbox label {
+    padding-left: 0;
+  }
+  .navbar-form .radio input[type="radio"],
+  .navbar-form .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .navbar-form .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+@media (max-width: 767px) {
+  .navbar-form .form-group {
+    margin-bottom: 5px;
+  }
+  .navbar-form .form-group:last-child {
+    margin-bottom: 0;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-form {
+    width: auto;
+    padding-top: 0;
+    padding-bottom: 0;
+    margin-right: 0;
+    margin-left: 0;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+}
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  margin-bottom: 0;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.navbar-btn {
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+  margin-top: 14px;
+  margin-bottom: 14px;
+}
+.navbar-text {
+  margin-top: 15px;
+  margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+  .navbar-text {
+    float: left;
+    margin-right: 15px;
+    margin-left: 15px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+  }
+  .navbar-right ~ .navbar-right {
+    margin-right: 0;
+  }
+}
+.navbar-default {
+  background-color: #f8f8f8;
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+  color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+  color: #5e5e5e;
+  background-color: transparent;
+}
+.navbar-default .navbar-text {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+}
+.navbar-default .navbar-toggle {
+  border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+  background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+  background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+}
+@media (max-width: 767px) {
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+    color: #777;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+  }
+}
+.navbar-default .navbar-link {
+  color: #777;
+}
+.navbar-default .navbar-link:hover {
+  color: #333;
+}
+.navbar-default .btn-link {
+  color: #777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+  color: #333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+  color: #ccc;
+}
+.navbar-inverse {
+  background-color: #222;
+  border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+  color: #444;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+  border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+  background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+  background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+  border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+@media (max-width: 767px) {
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+    border-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+    color: #9d9d9d;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #fff;
+    background-color: transparent;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #fff;
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #444;
+    background-color: transparent;
+  }
+}
+.navbar-inverse .navbar-link {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-link:hover {
+  color: #fff;
+}
+.navbar-inverse .btn-link {
+  color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+  color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+  color: #444;
+}
+.breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: 20px;
+  list-style: none;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+}
+.breadcrumb > li {
+  display: inline-block;
+}
+.breadcrumb > li + li:before {
+  padding: 0 5px;
+  color: #ccc;
+  content: "/\00a0";
+}
+.breadcrumb > .active {
+  color: #777;
+}
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: 20px 0;
+  border-radius: 4px;
+}
+.pagination > li {
+  display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+  position: relative;
+  float: left;
+  padding: 6px 12px;
+  margin-left: -1px;
+  line-height: 1.42857143;
+  color: #337ab7;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+  margin-left: 0;
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+  z-index: 3;
+  color: #23527c;
+  background-color: #eee;
+  border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+  z-index: 2;
+  color: #fff;
+  cursor: default;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #fff;
+  border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.pager {
+  padding-left: 0;
+  margin: 20px 0;
+  text-align: center;
+  list-style: none;
+}
+.pager li {
+  display: inline;
+}
+.pager li > a,
+.pager li > span {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+  float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+  float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #fff;
+}
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.label:empty {
+  display: none;
+}
+.btn .label {
+  position: relative;
+  top: -1px;
+}
+.label-default {
+  background-color: #777;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+  background-color: #5e5e5e;
+}
+.label-primary {
+  background-color: #337ab7;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+  background-color: #286090;
+}
+.label-success {
+  background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+  background-color: #449d44;
+}
+.label-info {
+  background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+  background-color: #31b0d5;
+}
+.label-warning {
+  background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+  background-color: #ec971f;
+}
+.label-danger {
+  background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+  background-color: #c9302c;
+}
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: 12px;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-color: #777;
+  border-radius: 10px;
+}
+.badge:empty {
+  display: none;
+}
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+  top: 0;
+  padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.list-group-item > .badge {
+  float: right;
+}
+.list-group-item > .badge + .badge {
+  margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+  margin-left: 3px;
+}
+.jumbotron {
+  padding-top: 30px;
+  padding-bottom: 30px;
+  margin-bottom: 30px;
+  color: inherit;
+  background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+  color: inherit;
+}
+.jumbotron p {
+  margin-bottom: 15px;
+  font-size: 21px;
+  font-weight: 200;
+}
+.jumbotron > hr {
+  border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+  border-radius: 6px;
+}
+.jumbotron .container {
+  max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+  .jumbotron {
+    padding-top: 48px;
+    padding-bottom: 48px;
+  }
+  .container .jumbotron,
+  .container-fluid .jumbotron {
+    padding-right: 60px;
+    padding-left: 60px;
+  }
+  .jumbotron h1,
+  .jumbotron .h1 {
+    font-size: 63px;
+  }
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  margin-bottom: 20px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: border .2s ease-in-out;
+       -o-transition: border .2s ease-in-out;
+          transition: border .2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+  margin-right: auto;
+  margin-left: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: #337ab7;
+}
+.thumbnail .caption {
+  padding: 9px;
+  color: #333;
+}
+.alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.alert h4 {
+  margin-top: 0;
+  color: inherit;
+}
+.alert .alert-link {
+  font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+  margin-bottom: 0;
+}
+.alert > p + p {
+  margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+  padding-right: 35px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  color: inherit;
+}
+.alert-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.alert-success hr {
+  border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+  color: #2b542c;
+}
+.alert-info {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.alert-info hr {
+  border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+  color: #245269;
+}
+.alert-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.alert-warning hr {
+  border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+  color: #66512c;
+}
+.alert-danger {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.alert-danger hr {
+  border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+  color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-o-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+.progress {
+  height: 20px;
+  margin-bottom: 20px;
+  overflow: hidden;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+.progress-bar {
+  float: left;
+  width: 0;
+  height: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  color: #fff;
+  text-align: center;
+  background-color: #337ab7;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+  -webkit-transition: width .6s ease;
+       -o-transition: width .6s ease;
+          transition: width .6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  -webkit-background-size: 40px 40px;
+          background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+       -o-animation: progress-bar-stripes 2s linear infinite;
+          animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+  background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+  background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+  background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+  background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.media {
+  margin-top: 15px;
+}
+.media:first-child {
+  margin-top: 0;
+}
+.media,
+.media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+.media-body {
+  width: 10000px;
+}
+.media-object {
+  display: block;
+}
+.media-object.img-thumbnail {
+  max-width: none;
+}
+.media-right,
+.media > .pull-right {
+  padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+  padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+  display: table-cell;
+  vertical-align: top;
+}
+.media-middle {
+  vertical-align: middle;
+}
+.media-bottom {
+  vertical-align: bottom;
+}
+.media-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.media-list {
+  padding-left: 0;
+  list-style: none;
+}
+.list-group {
+  padding-left: 0;
+  margin-bottom: 20px;
+}
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  margin-bottom: -1px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.list-group-item:first-child {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+  margin-bottom: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+a.list-group-item,
+button.list-group-item {
+  color: #555;
+}
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+  color: #333;
+}
+a.list-group-item:hover,
+button.list-group-item:hover,
+a.list-group-item:focus,
+button.list-group-item:focus {
+  color: #555;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+button.list-group-item {
+  width: 100%;
+  text-align: left;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #eee;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+  color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+  color: #777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  z-index: 2;
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+  color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+  color: #c7ddef;
+}
+.list-group-item-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+  color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-success:hover,
+button.list-group-item-success:hover,
+a.list-group-item-success:focus,
+button.list-group-item-success:focus {
+  color: #3c763d;
+  background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+button.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+button.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus,
+button.list-group-item-success.active:focus {
+  color: #fff;
+  background-color: #3c763d;
+  border-color: #3c763d;
+}
+.list-group-item-info {
+  color: #31708f;
+  background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+  color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-info:hover,
+button.list-group-item-info:hover,
+a.list-group-item-info:focus,
+button.list-group-item-info:focus {
+  color: #31708f;
+  background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+button.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+button.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus,
+button.list-group-item-info.active:focus {
+  color: #fff;
+  background-color: #31708f;
+  border-color: #31708f;
+}
+.list-group-item-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+  color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-warning:hover,
+button.list-group-item-warning:hover,
+a.list-group-item-warning:focus,
+button.list-group-item-warning:focus {
+  color: #8a6d3b;
+  background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+button.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:focus {
+  color: #fff;
+  background-color: #8a6d3b;
+  border-color: #8a6d3b;
+}
+.list-group-item-danger {
+  color: #a94442;
+  background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+  color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-danger:hover,
+button.list-group-item-danger:hover,
+a.list-group-item-danger:focus,
+button.list-group-item-danger:focus {
+  color: #a94442;
+  background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+button.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:focus {
+  color: #fff;
+  background-color: #a94442;
+  border-color: #a94442;
+}
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
+.panel {
+  margin-bottom: 20px;
+  background-color: #fff;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+.panel-body {
+  padding: 15px;
+}
+.panel-heading {
+  padding: 10px 15px;
+  border-bottom: 1px solid transparent;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+  color: inherit;
+}
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: 16px;
+  color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+  color: inherit;
+}
+.panel-footer {
+  padding: 10px 15px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+  margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+  border-width: 1px 0;
+  border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+  border-top: 0;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+  border-bottom: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0;
+}
+.list-group + .panel-footer {
+  border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+  margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+  border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+  border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+  border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+  border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+  border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+  border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+  border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+  border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+  border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+  border-bottom: 0;
+}
+.panel > .table-responsive {
+  margin-bottom: 0;
+  border: 0;
+}
+.panel-group {
+  margin-bottom: 20px;
+}
+.panel-group .panel {
+  margin-bottom: 0;
+  border-radius: 4px;
+}
+.panel-group .panel + .panel {
+  margin-top: 5px;
+}
+.panel-group .panel-heading {
+  border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+  border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+  border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+  border-bottom: 1px solid #ddd;
+}
+.panel-default {
+  border-color: #ddd;
+}
+.panel-default > .panel-heading {
+  color: #333;
+  background-color: #f5f5f5;
+  border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ddd;
+}
+.panel-default > .panel-heading .badge {
+  color: #f5f5f5;
+  background-color: #333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd;
+}
+.panel-primary {
+  border-color: #337ab7;
+}
+.panel-primary > .panel-heading {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #337ab7;
+}
+.panel-primary > .panel-heading .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #337ab7;
+}
+.panel-success {
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+  color: #dff0d8;
+  background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #d6e9c6;
+}
+.panel-info {
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #bce8f1;
+}
+.panel-info > .panel-heading .badge {
+  color: #d9edf7;
+  background-color: #31708f;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #bce8f1;
+}
+.panel-warning {
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #faebcc;
+}
+.panel-warning > .panel-heading .badge {
+  color: #fcf8e3;
+  background-color: #8a6d3b;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #faebcc;
+}
+.panel-danger {
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ebccd1;
+}
+.panel-danger > .panel-heading .badge {
+  color: #f2dede;
+  background-color: #a94442;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ebccd1;
+}
+.embed-responsive {
+  position: relative;
+  display: block;
+  height: 0;
+  padding: 0;
+  overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 0;
+}
+.embed-responsive-16by9 {
+  padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+  padding-bottom: 75%;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, .15);
+}
+.well-lg {
+  padding: 24px;
+  border-radius: 6px;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: 3px;
+}
+.close {
+  float: right;
+  font-size: 21px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  filter: alpha(opacity=20);
+  opacity: .2;
+}
+.close:hover,
+.close:focus {
+  color: #000;
+  text-decoration: none;
+  cursor: pointer;
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+button.close {
+  -webkit-appearance: none;
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+}
+.modal-open {
+  overflow: hidden;
+}
+.modal {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 9550;
+  display: none;
+  overflow: hidden;
+  -webkit-overflow-scrolling: touch;
+  outline: 0;
+}
+.modal.fade .modal-dialog {
+  -webkit-transition: -webkit-transform .3s ease-out;
+       -o-transition:      -o-transform .3s ease-out;
+          transition:         transform .3s ease-out;
+  -webkit-transform: translate(0, -25%);
+      -ms-transform: translate(0, -25%);
+       -o-transform: translate(0, -25%);
+          transform: translate(0, -25%);
+}
+.modal.in .modal-dialog {
+  -webkit-transform: translate(0, 0);
+      -ms-transform: translate(0, 0);
+       -o-transform: translate(0, 0);
+          transform: translate(0, 0);
+}
+.modal-open .modal {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 10px;
+}
+.modal-content {
+  position: relative;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 0px;
+  outline: 0;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 9549;
+  background-color: #000;
+}
+.modal-backdrop.fade {
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.modal-backdrop.in {
+  filter: alpha(opacity=90);
+  opacity: .9;
+}
+.modal-header {
+  min-height: 16.42857143px;
+  padding: 15px;
+  border-bottom: 1px solid #e5e5e5;
+}
+.modal-header .close {
+  margin-top: -2px;
+}
+.modal-title {
+  margin: 0;
+  line-height: 1.42857143;
+}
+.modal-body {
+  position: relative;
+  padding: 15px;
+}
+.modal-footer {
+  padding: 15px;
+  text-align: right;
+  border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+  margin-bottom: 0;
+  margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll;
+}
+@media (min-width: 768px) {
+  .modal-dialog {
+    width: 600px;
+    margin: 30px auto;
+  }
+  .modal-content {
+    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+  }
+  .modal-sm {
+    width: 300px;
+  }
+}
+@media (min-width: 992px) {
+  .modal-lg {
+    width: 900px;
+  }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 12px;
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+  filter: alpha(opacity=0);
+  opacity: 0;
+
+  line-break: auto;
+}
+.tooltip.in {
+  filter: alpha(opacity=90);
+  opacity: .9;
+}
+.tooltip.top {
+  padding: 5px 0;
+  margin-top: -3px;
+}
+.tooltip.right {
+  padding: 0 5px;
+  margin-left: 3px;
+}
+.tooltip.bottom {
+  padding: 5px 0;
+  margin-top: 3px;
+}
+.tooltip.left {
+  padding: 0 5px;
+  margin-left: -3px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #fff;
+  text-align: center;
+  background-color: #000;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+  right: 5px;
+  bottom: 0;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+  top: 0;
+  right: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
+  line-break: auto;
+}
+.popover.top {
+  margin-top: -10px;
+}
+.popover.right {
+  margin-left: 10px;
+}
+.popover.bottom {
+  margin-top: 10px;
+}
+.popover.left {
+  margin-left: -10px;
+}
+.popover-title {
+  padding: 8px 14px;
+  margin: 0;
+  font-size: 14px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+.popover-content {
+  padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.popover > .arrow {
+  border-width: 11px;
+}
+.popover > .arrow:after {
+  content: "";
+  border-width: 10px;
+}
+.popover.top > .arrow {
+  bottom: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-color: #999;
+  border-top-color: rgba(0, 0, 0, .25);
+  border-bottom-width: 0;
+}
+.popover.top > .arrow:after {
+  bottom: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-color: #fff;
+  border-bottom-width: 0;
+}
+.popover.right > .arrow {
+  top: 50%;
+  left: -11px;
+  margin-top: -11px;
+  border-right-color: #999;
+  border-right-color: rgba(0, 0, 0, .25);
+  border-left-width: 0;
+}
+.popover.right > .arrow:after {
+  bottom: -10px;
+  left: 1px;
+  content: " ";
+  border-right-color: #fff;
+  border-left-width: 0;
+}
+.popover.bottom > .arrow {
+  top: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-width: 0;
+  border-bottom-color: #999;
+  border-bottom-color: rgba(0, 0, 0, .25);
+}
+.popover.bottom > .arrow:after {
+  top: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-width: 0;
+  border-bottom-color: #fff;
+}
+.popover.left > .arrow {
+  top: 50%;
+  right: -11px;
+  margin-top: -11px;
+  border-right-width: 0;
+  border-left-color: #999;
+  border-left-color: rgba(0, 0, 0, .25);
+}
+.popover.left > .arrow:after {
+  right: 1px;
+  bottom: -10px;
+  content: " ";
+  border-right-width: 0;
+  border-left-color: #fff;
+}
+.carousel {
+  position: relative;
+}
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.carousel-inner > .item {
+  position: relative;
+  display: none;
+  -webkit-transition: .6s ease-in-out left;
+       -o-transition: .6s ease-in-out left;
+          transition: .6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+  .carousel-inner > .item {
+    -webkit-transition: -webkit-transform .6s ease-in-out;
+         -o-transition:      -o-transform .6s ease-in-out;
+            transition:         transform .6s ease-in-out;
+
+    -webkit-backface-visibility: hidden;
+            backface-visibility: hidden;
+    -webkit-perspective: 1000px;
+            perspective: 1000px;
+  }
+  .carousel-inner > .item.next,
+  .carousel-inner > .item.active.right {
+    left: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+            transform: translate3d(100%, 0, 0);
+  }
+  .carousel-inner > .item.prev,
+  .carousel-inner > .item.active.left {
+    left: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+            transform: translate3d(-100%, 0, 0);
+  }
+  .carousel-inner > .item.next.left,
+  .carousel-inner > .item.prev.right,
+  .carousel-inner > .item.active {
+    left: 0;
+    -webkit-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+  }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  display: block;
+}
+.carousel-inner > .active {
+  left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel-inner > .next {
+  left: 100%;
+}
+.carousel-inner > .prev {
+  left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+  left: 0;
+}
+.carousel-inner > .active.left {
+  left: -100%;
+}
+.carousel-inner > .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 15%;
+  font-size: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.carousel-control.left {
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control.right {
+  right: 0;
+  left: auto;
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control:hover,
+.carousel-control:focus {
+  color: #fff;
+  text-decoration: none;
+  filter: alpha(opacity=90);
+  outline: 0;
+  opacity: .9;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+  position: absolute;
+  top: 50%;
+  z-index: 5;
+  display: inline-block;
+  margin-top: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+  left: 50%;
+  margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+  right: 50%;
+  margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+  width: 20px;
+  height: 20px;
+  font-family: serif;
+  line-height: 1;
+}
+.carousel-control .icon-prev:before {
+  content: '\2039';
+}
+.carousel-control .icon-next:before {
+  content: '\203a';
+}
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  padding-left: 0;
+  margin-left: -30%;
+  text-align: center;
+  list-style: none;
+}
+.carousel-indicators li {
+  display: inline-block;
+  width: 10px;
+  height: 10px;
+  margin: 1px;
+  text-indent: -999px;
+  cursor: pointer;
+  background-color: #000 \9;
+  background-color: rgba(0, 0, 0, 0);
+  border: 1px solid #fff;
+  border-radius: 10px;
+}
+.carousel-indicators .active {
+  width: 12px;
+  height: 12px;
+  margin: 0;
+  background-color: #fff;
+}
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 20px;
+  left: 15%;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+.carousel-caption .btn {
+  text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -15px;
+    font-size: 30px;
+  }
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .icon-prev {
+    margin-left: -15px;
+  }
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-next {
+    margin-right: -15px;
+  }
+  .carousel-caption {
+    right: 20%;
+    left: 20%;
+    padding-bottom: 30px;
+  }
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: " ";
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-footer:after {
+  clear: both;
+}
+.center-block {
+  display: block;
+  margin-right: auto;
+  margin-left: auto;
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.hidden {
+  display: none !important;
+}
+.affix {
+  position: fixed;
+}
+@-ms-viewport {
+  width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+  display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important;
+  }
+  table.visible-xs {
+    display: table !important;
+  }
+  tr.visible-xs {
+    display: table-row !important;
+  }
+  th.visible-xs,
+  td.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-block {
+    display: block !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline {
+    display: inline !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important;
+  }
+  table.visible-sm {
+    display: table !important;
+  }
+  tr.visible-sm {
+    display: table-row !important;
+  }
+  th.visible-sm,
+  td.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-block {
+    display: block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important;
+  }
+  table.visible-md {
+    display: table !important;
+  }
+  tr.visible-md {
+    display: table-row !important;
+  }
+  th.visible-md,
+  td.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-block {
+    display: block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg {
+    display: block !important;
+  }
+  table.visible-lg {
+    display: table !important;
+  }
+  tr.visible-lg {
+    display: table-row !important;
+  }
+  th.visible-lg,
+  td.visible-lg {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-block {
+    display: block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important;
+  }
+}
+.visible-print {
+  display: none !important;
+}
+@media print {
+  .visible-print {
+    display: block !important;
+  }
+  table.visible-print {
+    display: table !important;
+  }
+  tr.visible-print {
+    display: table-row !important;
+  }
+  th.visible-print,
+  td.visible-print {
+    display: table-cell !important;
+  }
+}
+.visible-print-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-block {
+    display: block !important;
+  }
+}
+.visible-print-inline {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline {
+    display: inline !important;
+  }
+}
+.visible-print-inline-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline-block {
+    display: inline-block !important;
+  }
+}
+@media print {
+  .hidden-print {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap.css.map */
+.no-padding {
+  padding:0 !important;
+}
+.no-margin {
+  margin:0 !important;
+}
+.small-pt {
+  padding:0 !important;
+  padding-top:5px !important;
+  padding-left:30px !important;
+  position: relative;
+}
\ No newline at end of file
diff --git a/src/main/jbake/assets/css/bootstrap.css.map b/src/main/jbake/assets/css/bootstrap.css.map
new file mode 100755
index 0000000..f944af4
--- /dev/null
+++ b/src/main/jbake/assets/css/bootstrap.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4EAA4E;ACG5E;EACE,wBAAA;EACA,2BAAA;EACA,+BAAA;CDDD;ACQD;EACE,UAAA;CDND;ACmBD;;;;;;;;;;;;;EAaE,eAAA;CDjBD;ACyBD;;;;EAIE,sBAAA;EACA,yBAAA;CDvBD;AC+BD;EACE,cAAA;EACA,UAAA;CD7BD;ACqCD;;EAEE,cAAA;CDnCD;AC6CD;EACE,8BAAA;CD3CD;ACmDD;;EAEE,WAAA;CDjDD;AC2DD;EACE,0BAAA;CDzDD;ACgED;;EAEE,kBAAA;CD9DD;ACqED;EACE,mBAAA;CDnED;AC2ED;EACE,eAAA;EACA,iBAAA;CDzED;ACgFD;EACE,iBAAA;EACA,YAAA;CD9ED;ACqFD;EACE,eAAA;CDnFD;AC0FD;;EAEE,eAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;CDxFD;AC2FD;EACE,YAAA;CDzFD;AC4FD;EACE,gBAAA;CD1FD;ACoGD;EACE,UAAA;CDlGD;ACyGD;EACE,iBAAA;CDvGD;ACiHD;EACE,iBAAA;CD/GD;ACsHD;EACE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,UAAA;CDpHD;AC2HD;EACE,eAAA;CDzHD;ACgID;;;;EAIE,kCAAA;EACA,eAAA;CD9HD;ACgJD;;;;;EAKE,eAAA;EACA,cAAA;EACA,UAAA;CD9ID;ACqJD;EACE,kBAAA;CDnJD;AC6JD;;EAEE,qBAAA;CD3JD;ACsKD;;;;EAIE,2BAAA;EACA,gBAAA;CDpKD;AC2KD;;EAEE,gBAAA;CDzKD;ACgLD;;EAEE,UAAA;EACA,WAAA;CD9KD;ACsLD;EACE,oBAAA;CDpLD;AC+LD;;EAEE,+BAAA;KAAA,4BAAA;UAAA,uBAAA;EACA,WAAA;CD7LD;ACsMD;;EAEE,aAAA;CDpMD;AC4MD;EACE,8BAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;CD1MD;ACmND;;EAEE,yBAAA;CDjND;ACwND;EACE,0BAAA;EACA,cAAA;EACA,+BAAA;CDtND;AC8ND;EACE,UAAA;EACA,WAAA;CD5ND;ACmOD;EACE,eAAA;CDjOD;ACyOD;EACE,kBAAA;CDvOD;ACiPD;EACE,0BAAA;EACA,kBAAA;CD/OD;ACkPD;;EAEE,WAAA;CDhPD;AACD,qFAAqF;AElFrF;EA7FI;;;IAGI,mCAAA;IACA,uBAAA;IACA,oCAAA;YAAA,4BAAA;IACA,6BAAA;GFkLL;EE/KC;;IAEI,2BAAA;GFiLL;EE9KC;IACI,6BAAA;GFgLL;EE7KC;IACI,8BAAA;GF+KL;EE1KC;;IAEI,YAAA;GF4KL;EEzKC;;IAEI,uBAAA;IACA,yBAAA;GF2KL;EExKC;IACI,4BAAA;GF0KL;EEvKC;;IAEI,yBAAA;GFyKL;EEtKC;IACI,2BAAA;GFwKL;EErKC;;;IAGI,WAAA;IACA,UAAA;GFuKL;EEpKC;;IAEI,wBAAA;GFsKL;EEhKC;IACI,cAAA;GFkKL;EEhKC;;IAGQ,kCAAA;GFiKT;EE9JC;IACI,uBAAA;GFgKL;EE7JC;IACI,qCAAA;GF+JL;EEhKC;;IAKQ,kCAAA;GF+JT;EE5JC;;IAGQ,kCAAA;GF6JT;CACF;AGnPD;EACE,oCAAA;EACA,sDAAA;EACA,gYAAA;CHqPD;AG7OD;EACE,mBAAA;EACA,SAAA;EACA,sBAAA;EACA,oCAAA;EACA,mBAAA;EACA,oBAAA;EACA,eAAA;EACA,oCAAA;EACA,mCAAA;CH+OD;AG3OmC;EAAW,eAAA;CH8O9C;AG7OmC;EAAW,eAAA;CHgP9C;AG9OmC;;EAAW,iBAAA;CHkP9C;AGjPmC;EAAW,iBAAA;CHoP9C;AGnPmC;EAAW,iBAAA;CHsP9C;AGrPmC;EAAW,iBAAA;CHwP9C;AGvPmC;EAAW,iBAAA;CH0P9C;AGzPmC;EAAW,iBAAA;CH4P9C;AG3PmC;EAAW,iBAAA;CH8P9C;AG7PmC;EAAW,iBAAA;CHgQ9C;AG/PmC;EAAW,iBAAA;CHkQ9C;AGjQmC;EAAW,iBAAA;CHoQ9C;AGnQmC;EAAW,iBAAA;CHsQ9C;AGrQmC;EAAW,iBAAA;CHwQ9C;AGvQmC;EAAW,iBAAA;CH0Q9C;AGzQmC;EAAW,iBAAA;CH4Q9C;AG3QmC;EAAW,iBAAA;CH8Q9C;AG7QmC;EAAW,iBAAA;CHgR9C;AG/QmC;EAAW,iBAAA;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;EAAW,iBAAA;CH4tB9C;AG3tBmC;EAAW,iBAAA;CH8tB9C;AG7tBmC;EAAW,iBAAA;CHguB9C;AG/tBmC;EAAW,iBAAA;CHkuB9C;AGjuBmC;EAAW,iBAAA;CHouB9C;AGnuBmC;EAAW,iBAAA;CHsuB9C;AGruBmC;EAAW,iBAAA;CHwuB9C;AGvuBmC;EAAW,iBAAA;CH0uB9C;AGzuBmC;EAAW,iBAAA;CH4uB9C;AG3uBmC;EAAW,iBAAA;CH8uB9C;AG7uBmC;EAAW,iBAAA;CHgvB9C;AIthCD;ECgEE,+BAAA;EACG,4BAAA;EACK,uBAAA;CLy9BT;AIxhCD;;EC6DE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL+9BT;AIthCD;EACE,gBAAA;EACA,8CAAA;CJwhCD;AIrhCD;EACE,4DAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,0BAAA;CJuhCD;AInhCD;;;;EAIE,qBAAA;EACA,mBAAA;EACA,qBAAA;CJqhCD;AI/gCD;EACE,eAAA;EACA,sBAAA;CJihCD;AI/gCC;;EAEE,eAAA;EACA,2BAAA;CJihCH;AI9gCC;EErDA,qBAAA;EAEA,2CAAA;EACA,qBAAA;CNqkCD;AIxgCD;EACE,UAAA;CJ0gCD;AIpgCD;EACE,uBAAA;CJsgCD;AIlgCD;;;;;EGvEE,eAAA;EACA,gBAAA;EACA,aAAA;CPglCD;AItgCD;EACE,mBAAA;CJwgCD;AIlgCD;EACE,aAAA;EACA,wBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EC6FA,yCAAA;EACK,oCAAA;EACG,iCAAA;EEvLR,sBAAA;EACA,gBAAA;EACA,aAAA;CPgmCD;AIlgCD;EACE,mBAAA;CJogCD;AI9/BD;EACE,iBAAA;EACA,oBAAA;EACA,UAAA;EACA,8BAAA;CJggCD;AIx/BD;EACE,mBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,WAAA;EACA,iBAAA;EACA,uBAAA;EACA,UAAA;CJ0/BD;AIl/BC;;EAEE,iBAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;CJo/BH;AIz+BD;EACE,gBAAA;CJ2+BD;AQloCD;;;;;;;;;;;;EAEE,qBAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;CR8oCD;AQnpCD;;;;;;;;;;;;;;;;;;;;;;;;EASI,oBAAA;EACA,eAAA;EACA,eAAA;CRoqCH;AQhqCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRqqCD;AQzqCD;;;;;;;;;;;;EAQI,eAAA;CR+qCH;AQ5qCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRirCD;AQrrCD;;;;;;;;;;;;EAQI,eAAA;CR2rCH;AQvrCD;;EAAU,gBAAA;CR2rCT;AQ1rCD;;EAAU,gBAAA;CR8rCT;AQ7rCD;;EAAU,gBAAA;CRisCT;AQhsCD;;EAAU,gBAAA;CRosCT;AQnsCD;;EAAU,gBAAA;CRusCT;AQtsCD;;EAAU,gBAAA;CR0sCT;AQpsCD;EACE,iBAAA;CRssCD;AQnsCD;EACE,oBAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;CRqsCD;AQhsCD;EAAA;IAFI,gBAAA;GRssCD;CACF;AQ9rCD;;EAEE,eAAA;CRgsCD;AQ7rCD;;EAEE,0BAAA;EACA,cAAA;CR+rCD;AQ3rCD;EAAuB,iBAAA;CR8rCtB;AQ7rCD;EAAuB,kBAAA;CRgsCtB;AQ/rCD;EAAuB,mBAAA;CRksCtB;AQjsCD;EAAuB,oBAAA;CRosCtB;AQnsCD;EAAuB,oBAAA;CRssCtB;AQnsCD;EAAuB,0BAAA;CRssCtB;AQrsCD;EAAuB,0BAAA;CRwsCtB;AQvsCD;EAAuB,2BAAA;CR0sCtB;AQvsCD;EACE,eAAA;CRysCD;AQvsCD;ECrGE,eAAA;CT+yCD;AS9yCC;;EAEE,eAAA;CTgzCH;AQ3sCD;ECxGE,eAAA;CTszCD;ASrzCC;;EAEE,eAAA;CTuzCH;AQ/sCD;EC3GE,eAAA;CT6zCD;AS5zCC;;EAEE,eAAA;CT8zCH;AQntCD;EC9GE,eAAA;CTo0CD;ASn0CC;;EAEE,eAAA;CTq0CH;AQvtCD;ECjHE,eAAA;CT20CD;AS10CC;;EAEE,eAAA;CT40CH;AQvtCD;EAGE,YAAA;EE3HA,0BAAA;CVm1CD;AUl1CC;;EAEE,0BAAA;CVo1CH;AQztCD;EE9HE,0BAAA;CV01CD;AUz1CC;;EAEE,0BAAA;CV21CH;AQ7tCD;EEjIE,0BAAA;CVi2CD;AUh2CC;;EAEE,0BAAA;CVk2CH;AQjuCD;EEpIE,0BAAA;CVw2CD;AUv2CC;;EAEE,0BAAA;CVy2CH;AQruCD;EEvIE,0BAAA;CV+2CD;AU92CC;;EAEE,0BAAA;CVg3CH;AQpuCD;EACE,oBAAA;EACA,oBAAA;EACA,iCAAA;CRsuCD;AQ9tCD;;EAEE,cAAA;EACA,oBAAA;CRguCD;AQnuCD;;;;EAMI,iBAAA;CRmuCH;AQ5tCD;EACE,gBAAA;EACA,iBAAA;CR8tCD;AQ1tCD;EALE,gBAAA;EACA,iBAAA;EAMA,kBAAA;CR6tCD;AQ/tCD;EAKI,sBAAA;EACA,kBAAA;EACA,mBAAA;CR6tCH;AQxtCD;EACE,cAAA;EACA,oBAAA;CR0tCD;AQxtCD;;EAEE,wBAAA;CR0tCD;AQxtCD;EACE,kBAAA;CR0tCD;AQxtCD;EACE,eAAA;CR0tCD;AQjsCD;EAAA;IAVM,YAAA;IACA,aAAA;IACA,YAAA;IACA,kBAAA;IGtNJ,iBAAA;IACA,wBAAA;IACA,oBAAA;GXs6CC;EQ3sCH;IAHM,mBAAA;GRitCH;CACF;AQxsCD;;EAGE,aAAA;EACA,kCAAA;CRysCD;AQvsCD;EACE,eAAA;EA9IqB,0BAAA;CRw1CtB;AQrsCD;EACE,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,+BAAA;CRusCD;AQlsCG;;;EACE,iBAAA;CRssCL;AQhtCD;;;EAmBI,eAAA;EACA,eAAA;EACA,wBAAA;EACA,eAAA;CRksCH;AQhsCG;;;EACE,uBAAA;CRosCL;AQ5rCD;;EAEE,oBAAA;EACA,gBAAA;EACA,gCAAA;EACA,eAAA;EACA,kBAAA;CR8rCD;AQxrCG;;;;;;EAAW,YAAA;CRgsCd;AQ/rCG;;;;;;EACE,uBAAA;CRssCL;AQhsCD;EACE,oBAAA;EACA,mBAAA;EACA,wBAAA;CRksCD;AYx+CD;;;;EAIE,+DAAA;CZ0+CD;AYt+CD;EACE,iBAAA;EACA,eAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CZw+CD;AYp+CD;EACE,iBAAA;EACA,eAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;EACA,uDAAA;UAAA,+CAAA;CZs+CD;AY5+CD;EASI,WAAA;EACA,gBAAA;EACA,kBAAA;EACA,yBAAA;UAAA,iBAAA;CZs+CH;AYj+CD;EACE,eAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAA;EACA,sBAAA;EACA,eAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;CZm+CD;AY9+CD;EAeI,WAAA;EACA,mBAAA;EACA,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,iBAAA;CZk+CH;AY79CD;EACE,kBAAA;EACA,mBAAA;CZ+9CD;AazhDD;ECHE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;Cd+hDD;AazhDC;EAAA;IAFE,aAAA;Gb+hDD;CACF;Aa3hDC;EAAA;IAFE,aAAA;GbiiDD;CACF;Aa7hDD;EAAA;IAFI,cAAA;GbmiDD;CACF;Aa1hDD;ECvBE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;CdojDD;AavhDD;ECvBE,mBAAA;EACA,oBAAA;CdijDD;AejjDG;EACE,mBAAA;EAEA,gBAAA;EAEA,mBAAA;EACA,oBAAA;CfijDL;AejiDG;EACE,YAAA;CfmiDL;Ae5hDC;EACE,YAAA;Cf8hDH;Ae/hDC;EACE,oBAAA;CfiiDH;AeliDC;EACE,oBAAA;CfoiDH;AeriDC;EACE,WAAA;CfuiDH;AexiDC;EACE,oBAAA;Cf0iDH;Ae3iDC;EACE,oBAAA;Cf6iDH;Ae9iDC;EACE,WAAA;CfgjDH;AejjDC;EACE,oBAAA;CfmjDH;AepjDC;EACE,oBAAA;CfsjDH;AevjDC;EACE,WAAA;CfyjDH;Ae1jDC;EACE,oBAAA;Cf4jDH;Ae7jDC;EACE,mBAAA;Cf+jDH;AejjDC;EACE,YAAA;CfmjDH;AepjDC;EACE,oBAAA;CfsjDH;AevjDC;EACE,oBAAA;CfyjDH;Ae1jDC;EACE,WAAA;Cf4jDH;Ae7jDC;EACE,oBAAA;Cf+jDH;AehkDC;EACE,oBAAA;CfkkDH;AenkDC;EACE,WAAA;CfqkDH;AetkDC;EACE,oBAAA;CfwkDH;AezkDC;EACE,oBAAA;Cf2kDH;Ae5kDC;EACE,WAAA;Cf8kDH;Ae/kDC;EACE,oBAAA;CfilDH;AellDC;EACE,mBAAA;CfolDH;AehlDC;EACE,YAAA;CfklDH;AelmDC;EACE,WAAA;CfomDH;AermDC;EACE,mBAAA;CfumDH;AexmDC;EACE,mBAAA;Cf0mDH;Ae3mDC;EACE,UAAA;Cf6mDH;Ae9mDC;EACE,mBAAA;CfgnDH;AejnDC;EACE,mBAAA;CfmnDH;AepnDC;EACE,UAAA;CfsnDH;AevnDC;EACE,mBAAA;CfynDH;Ae1nDC;EACE,mBAAA;Cf4nDH;Ae7nDC;EACE,UAAA;Cf+nDH;AehoDC;EACE,mBAAA;CfkoDH;AenoDC;EACE,kBAAA;CfqoDH;AejoDC;EACE,WAAA;CfmoDH;AernDC;EACE,kBAAA;CfunDH;AexnDC;EACE,0BAAA;Cf0nDH;Ae3nDC;EACE,0BAAA;Cf6nDH;Ae9nDC;EACE,iBAAA;CfgoDH;AejoDC;EACE,0BAAA;CfmoDH;AepoDC;EACE,0BAAA;CfsoDH;AevoDC;EACE,iBAAA;CfyoDH;Ae1oDC;EACE,0BAAA;Cf4oDH;Ae7oDC;EACE,0BAAA;Cf+oDH;AehpDC;EACE,iBAAA;CfkpDH;AenpDC;EACE,0BAAA;CfqpDH;AetpDC;EACE,yBAAA;CfwpDH;AezpDC;EACE,gBAAA;Cf2pDH;Aa3pDD;EElCI;IACE,YAAA;GfgsDH;EezrDD;IACE,YAAA;Gf2rDD;Ee5rDD;IACE,oBAAA;Gf8rDD;Ee/rDD;IACE,oBAAA;GfisDD;EelsDD;IACE,WAAA;GfosDD;EersDD;IACE,oBAAA;GfusDD;EexsDD;IACE,oBAAA;Gf0sDD;Ee3sDD;IACE,WAAA;Gf6sDD;Ee9sDD;IACE,oBAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,WAAA;GfstDD;EevtDD;IACE,oBAAA;GfytDD;Ee1tDD;IACE,mBAAA;Gf4tDD;Ee9sDD;IACE,YAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,oBAAA;GfstDD;EevtDD;IACE,WAAA;GfytDD;Ee1tDD;IACE,oBAAA;Gf4tDD;Ee7tDD;IACE,oBAAA;Gf+tDD;EehuDD;IACE,WAAA;GfkuDD;EenuDD;IACE,oBAAA;GfquDD;EetuDD;IACE,oBAAA;GfwuDD;EezuDD;IACE,WAAA;Gf2uDD;Ee5uDD;IACE,oBAAA;Gf8uDD;Ee/uDD;IACE,mBAAA;GfivDD;Ee7uDD;IACE,YAAA;Gf+uDD;Ee/vDD;IACE,WAAA;GfiwDD;EelwDD;IACE,mBAAA;GfowDD;EerwDD;IACE,mBAAA;GfuwDD;EexwDD;IACE,UAAA;Gf0wDD;Ee3wDD;IACE,mBAAA;Gf6wDD;Ee9wDD;IACE,mBAAA;GfgxDD;EejxDD;IACE,UAAA;GfmxDD;EepxDD;IACE,mBAAA;GfsxDD;EevxDD;IACE,mBAAA;GfyxDD;Ee1xDD;IACE,UAAA;Gf4xDD;Ee7xDD;IACE,mBAAA;Gf+xDD;EehyDD;IACE,kBAAA;GfkyDD;Ee9xDD;IACE,WAAA;GfgyDD;EelxDD;IACE,kBAAA;GfoxDD;EerxDD;IACE,0BAAA;GfuxDD;EexxDD;IACE,0BAAA;Gf0xDD;Ee3xDD;IACE,iBAAA;Gf6xDD;Ee9xDD;IACE,0BAAA;GfgyDD;EejyDD;IACE,0BAAA;GfmyDD;EepyDD;IACE,iBAAA;GfsyDD;EevyDD;IACE,0BAAA;GfyyDD;Ee1yDD;IACE,0BAAA;Gf4yDD;Ee7yDD;IACE,iBAAA;Gf+yDD;EehzDD;IACE,0BAAA;GfkzDD;EenzDD;IACE,yBAAA;GfqzDD;EetzDD;IACE,gBAAA;GfwzDD;CACF;AahzDD;EE3CI;IACE,YAAA;Gf81DH;Eev1DD;IACE,YAAA;Gfy1DD;Ee11DD;IACE,oBAAA;Gf41DD;Ee71DD;IACE,oBAAA;Gf+1DD;Eeh2DD;IACE,WAAA;Gfk2DD;Een2DD;IACE,oBAAA;Gfq2DD;Eet2DD;IACE,oBAAA;Gfw2DD;Eez2DD;IACE,WAAA;Gf22DD;Ee52DD;IACE,oBAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,WAAA;Gfo3DD;Eer3DD;IACE,oBAAA;Gfu3DD;Eex3DD;IACE,mBAAA;Gf03DD;Ee52DD;IACE,YAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,oBAAA;Gfo3DD;Eer3DD;IACE,WAAA;Gfu3DD;Eex3DD;IACE,oBAAA;Gf03DD;Ee33DD;IACE,oBAAA;Gf63DD;Ee93DD;IACE,WAAA;Gfg4DD;Eej4DD;IACE,oBAAA;Gfm4DD;Eep4DD;IACE,oBAAA;Gfs4DD;Eev4DD;IACE,WAAA;Gfy4DD;Ee14DD;IACE,oBAAA;Gf44DD;Ee74DD;IACE,mBAAA;Gf+4DD;Ee34DD;IACE,YAAA;Gf64DD;Ee75DD;IACE,WAAA;Gf+5DD;Eeh6DD;IACE,mBAAA;Gfk6DD;Een6DD;IACE,mBAAA;Gfq6DD;Eet6DD;IACE,UAAA;Gfw6DD;Eez6DD;IACE,mBAAA;Gf26DD;Ee56DD;IACE,mBAAA;Gf86DD;Ee/6DD;IACE,UAAA;Gfi7DD;Eel7DD;IACE,mBAAA;Gfo7DD;Eer7DD;IACE,mBAAA;Gfu7DD;Eex7DD;IACE,UAAA;Gf07DD;Ee37DD;IACE,mBAAA;Gf67DD;Ee97DD;IACE,kBAAA;Gfg8DD;Ee57DD;IACE,WAAA;Gf87DD;Eeh7DD;IACE,kBAAA;Gfk7DD;Een7DD;IACE,0BAAA;Gfq7DD;Eet7DD;IACE,0BAAA;Gfw7DD;Eez7DD;IACE,iBAAA;Gf27DD;Ee57DD;IACE,0BAAA;Gf87DD;Ee/7DD;IACE,0BAAA;Gfi8DD;Eel8DD;IACE,iBAAA;Gfo8DD;Eer8DD;IACE,0BAAA;Gfu8DD;Eex8DD;IACE,0BAAA;Gf08DD;Ee38DD;IACE,iBAAA;Gf68DD;Ee98DD;IACE,0BAAA;Gfg9DD;Eej9DD;IACE,yBAAA;Gfm9DD;Eep9DD;IACE,gBAAA;Gfs9DD;CACF;Aa38DD;EE9CI;IACE,YAAA;Gf4/DH;Eer/DD;IACE,YAAA;Gfu/DD;Eex/DD;IACE,oBAAA;Gf0/DD;Ee3/DD;IACE,oBAAA;Gf6/DD;Ee9/DD;IACE,WAAA;GfggED;EejgED;IACE,oBAAA;GfmgED;EepgED;IACE,oBAAA;GfsgED;EevgED;IACE,WAAA;GfygED;Ee1gED;IACE,oBAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,WAAA;GfkhED;EenhED;IACE,oBAAA;GfqhED;EethED;IACE,mBAAA;GfwhED;Ee1gED;IACE,YAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,oBAAA;GfkhED;EenhED;IACE,WAAA;GfqhED;EethED;IACE,oBAAA;GfwhED;EezhED;IACE,oBAAA;Gf2hED;Ee5hED;IACE,WAAA;Gf8hED;Ee/hED;IACE,oBAAA;GfiiED;EeliED;IACE,oBAAA;GfoiED;EeriED;IACE,WAAA;GfuiED;EexiED;IACE,oBAAA;Gf0iED;Ee3iED;IACE,mBAAA;Gf6iED;EeziED;IACE,YAAA;Gf2iED;Ee3jED;IACE,WAAA;Gf6jED;Ee9jED;IACE,mBAAA;GfgkED;EejkED;IACE,mBAAA;GfmkED;EepkED;IACE,UAAA;GfskED;EevkED;IACE,mBAAA;GfykED;Ee1kED;IACE,mBAAA;Gf4kED;Ee7kED;IACE,UAAA;Gf+kED;EehlED;IACE,mBAAA;GfklED;EenlED;IACE,mBAAA;GfqlED;EetlED;IACE,UAAA;GfwlED;EezlED;IACE,mBAAA;Gf2lED;Ee5lED;IACE,kBAAA;Gf8lED;Ee1lED;IACE,WAAA;Gf4lED;Ee9kED;IACE,kBAAA;GfglED;EejlED;IACE,0BAAA;GfmlED;EeplED;IACE,0BAAA;GfslED;EevlED;IACE,iBAAA;GfylED;Ee1lED;IACE,0BAAA;Gf4lED;Ee7lED;IACE,0BAAA;Gf+lED;EehmED;IACE,iBAAA;GfkmED;EenmED;IACE,0BAAA;GfqmED;EetmED;IACE,0BAAA;GfwmED;EezmED;IACE,iBAAA;Gf2mED;Ee5mED;IACE,0BAAA;Gf8mED;Ee/mED;IACE,yBAAA;GfinED;EelnED;IACE,gBAAA;GfonED;CACF;AgBxrED;EACE,8BAAA;ChB0rED;AgBxrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChB0rED;AgBxrED;EACE,iBAAA;ChB0rED;AgBprED;EACE,YAAA;EACA,gBAAA;EACA,oBAAA;ChBsrED;AgBzrED;;;;;;EAWQ,aAAA;EACA,wBAAA;EACA,oBAAA;EACA,8BAAA;ChBsrEP;AgBpsED;EAoBI,uBAAA;EACA,iCAAA;ChBmrEH;AgBxsED;;;;;;EA8BQ,cAAA;ChBkrEP;AgBhtED;EAoCI,8BAAA;ChB+qEH;AgBntED;EAyCI,0BAAA;ChB6qEH;AgBtqED;;;;;;EAOQ,aAAA;ChBuqEP;AgB5pED;EACE,0BAAA;ChB8pED;AgB/pED;;;;;;EAQQ,0BAAA;ChB+pEP;AgBvqED;;EAeM,yBAAA;ChB4pEL;AgBlpED;EAEI,0BAAA;ChBmpEH;AgB1oED;EAEI,0BAAA;ChB2oEH;AgBloED;EACE,iBAAA;EACA,YAAA;EACA,sBAAA;ChBooED;AgB/nEG;;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;ChBkoEL;AiB9wEC;;;;;;;;;;;;EAOI,0BAAA;CjBqxEL;AiB/wEC;;;;;EAMI,0BAAA;CjBgxEL;AiBnyEC;;;;;;;;;;;;EAOI,0BAAA;CjB0yEL;AiBpyEC;;;;;EAMI,0BAAA;CjBqyEL;AiBxzEC;;;;;;;;;;;;EAOI,0BAAA;CjB+zEL;AiBzzEC;;;;;EAMI,0BAAA;CjB0zEL;AiB70EC;;;;;;;;;;;;EAOI,0BAAA;CjBo1EL;AiB90EC;;;;;EAMI,0BAAA;CjB+0EL;AiBl2EC;;;;;;;;;;;;EAOI,0BAAA;CjBy2EL;AiBn2EC;;;;;EAMI,0BAAA;CjBo2EL;AgBltED;EACE,iBAAA;EACA,kBAAA;ChBotED;AgBvpED;EAAA;IA1DI,YAAA;IACA,oBAAA;IACA,mBAAA;IACA,6CAAA;IACA,0BAAA;GhBqtED;EgB/pEH;IAlDM,iBAAA;GhBotEH;EgBlqEH;;;;;;IAzCY,oBAAA;GhBmtET;EgB1qEH;IAjCM,UAAA;GhB8sEH;EgB7qEH;;;;;;IAxBY,eAAA;GhB6sET;EgBrrEH;;;;;;IApBY,gBAAA;GhBitET;EgB7rEH;;;;IAPY,iBAAA;GhB0sET;CACF;AkBp6ED;EACE,WAAA;EACA,UAAA;EACA,UAAA;EAIA,aAAA;ClBm6ED;AkBh6ED;EACE,eAAA;EACA,YAAA;EACA,WAAA;EACA,oBAAA;EACA,gBAAA;EACA,qBAAA;EACA,eAAA;EACA,UAAA;EACA,iCAAA;ClBk6ED;AkB/5ED;EACE,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;ClBi6ED;AkBt5ED;Eb4BE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL63ET;AkBt5ED;;EAEE,gBAAA;EACA,mBAAA;EACA,oBAAA;ClBw5ED;AkBr5ED;EACE,eAAA;ClBu5ED;AkBn5ED;EACE,eAAA;EACA,YAAA;ClBq5ED;AkBj5ED;;EAEE,aAAA;ClBm5ED;AkB/4ED;;;EZvEE,qBAAA;EAEA,2CAAA;EACA,qBAAA;CN09ED;AkB/4ED;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;ClBi5ED;AkBv3ED;EACE,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,0BAAA;EACA,uBAAA;EACA,0BAAA;EACA,mBAAA;EbxDA,yDAAA;EACQ,iDAAA;EAyHR,uFAAA;EACK,0EAAA;EACG,uEAAA;CL0zET;AmBl8EC;EACE,sBAAA;EACA,WAAA;EdUF,uFAAA;EACQ,+EAAA;CL27ET;AK15EC;EACE,eAAA;EACA,WAAA;CL45EH;AK15EC;EAA0B,eAAA;CL65E3B;AK55EC;EAAgC,eAAA;CL+5EjC;AkBn4EC;EACE,UAAA;EACA,8BAAA;ClBq4EH;AkB73EC;;;EAGE,0BAAA;EACA,WAAA;ClB+3EH;AkB53EC;;EAEE,oBAAA;ClB83EH;AkB13EC;EACE,aAAA;ClB43EH;AkBh3ED;EACE,yBAAA;ClBk3ED;AkB10ED;EAtBI;;;;IACE,kBAAA;GlBs2EH;EkBn2EC;;;;;;;;IAEE,kBAAA;GlB22EH;EkBx2EC;;;;;;;;IAEE,kBAAA;GlBg3EH;CACF;AkBt2ED;EACE,oBAAA;ClBw2ED;AkBh2ED;;EAEE,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,oBAAA;ClBk2ED;AkBv2ED;;EAQI,iBAAA;EACA,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;ClBm2EH;AkBh2ED;;;;EAIE,mBAAA;EACA,mBAAA;EACA,mBAAA;ClBk2ED;AkB/1ED;;EAEE,iBAAA;ClBi2ED;AkB71ED;;EAEE,mBAAA;EACA,sBAAA;EACA,mBAAA;EACA,iBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;ClB+1ED;AkB71ED;;EAEE,cAAA;EACA,kBAAA;ClB+1ED;AkBt1EC;;;;;;EAGE,oBAAA;ClB21EH;AkBr1EC;;;;EAEE,oBAAA;ClBy1EH;AkBn1EC;;;;EAGI,oBAAA;ClBs1EL;AkB30ED;EAEE,iBAAA;EACA,oBAAA;EAEA,iBAAA;EACA,iBAAA;ClB20ED;AkBz0EC;;EAEE,gBAAA;EACA,iBAAA;ClB20EH;AkB9zED;ECnQE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBokFD;AmBlkFC;EACE,aAAA;EACA,kBAAA;CnBokFH;AmBjkFC;;EAEE,aAAA;CnBmkFH;AkB10ED;EAEI,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;ClB20EH;AkBj1ED;EASI,aAAA;EACA,kBAAA;ClB20EH;AkBr1ED;;EAcI,aAAA;ClB20EH;AkBz1ED;EAiBI,aAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;ClB20EH;AkBv0ED;EC/RE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBymFD;AmBvmFC;EACE,aAAA;EACA,kBAAA;CnBymFH;AmBtmFC;;EAEE,aAAA;CnBwmFH;AkBn1ED;EAEI,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ClBo1EH;AkB11ED;EASI,aAAA;EACA,kBAAA;ClBo1EH;AkB91ED;;EAcI,aAAA;ClBo1EH;AkBl2ED;EAiBI,aAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;ClBo1EH;AkB30ED;EAEE,mBAAA;ClB40ED;AkB90ED;EAMI,sBAAA;ClB20EH;AkBv0ED;EACE,mBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,qBAAA;ClBy0ED;AkBv0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBy0ED;AkBv0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBy0ED;AkBr0ED;;;;;;;;;;EC1ZI,eAAA;CnB2uFH;AkBj1ED;ECtZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL4rFT;AmB1uFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CLisFT;AkB31ED;EC5YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnB0uFH;AkBh2ED;ECtYI,eAAA;CnByuFH;AkBh2ED;;;;;;;;;;EC7ZI,eAAA;CnBywFH;AkB52ED;ECzZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL0tFT;AmBxwFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL+tFT;AkBt3ED;EC/YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBwwFH;AkB33ED;ECzYI,eAAA;CnBuwFH;AkB33ED;;;;;;;;;;EChaI,eAAA;CnBuyFH;AkBv4ED;EC5ZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLwvFT;AmBtyFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL6vFT;AkBj5ED;EClZI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBsyFH;AkBt5ED;EC5YI,eAAA;CnBqyFH;AkBl5EC;EACE,UAAA;ClBo5EH;AkBl5EC;EACE,OAAA;ClBo5EH;AkB14ED;EACE,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;ClB44ED;AkBzzED;EAAA;IA9DM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlB23EH;EkB/zEH;IAvDM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBy3EH;EkBp0EH;IAhDM,sBAAA;GlBu3EH;EkBv0EH;IA5CM,sBAAA;IACA,uBAAA;GlBs3EH;EkB30EH;;;IAtCQ,YAAA;GlBs3EL;EkBh1EH;IAhCM,YAAA;GlBm3EH;EkBn1EH;IA5BM,iBAAA;IACA,uBAAA;GlBk3EH;EkBv1EH;;IApBM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB+2EH;EkB91EH;;IAdQ,gBAAA;GlBg3EL;EkBl2EH;;IATM,mBAAA;IACA,eAAA;GlB+2EH;EkBv2EH;IAHM,OAAA;GlB62EH;CACF;AkBn2ED;;;;EASI,cAAA;EACA,iBAAA;EACA,iBAAA;ClBg2EH;AkB32ED;;EAiBI,iBAAA;ClB81EH;AkB/2ED;EJthBE,mBAAA;EACA,oBAAA;Cdw4FD;AkB50EC;EAAA;IAVI,kBAAA;IACA,iBAAA;IACA,iBAAA;GlB01EH;CACF;AkB13ED;EAwCI,YAAA;ClBq1EH;AkBv0EC;EAAA;IAJM,yBAAA;IACA,gBAAA;GlB+0EL;CACF;AkBr0EC;EAAA;IAJM,iBAAA;IACA,gBAAA;GlB60EL;CACF;AoBt6FD;EACE,sBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,+BAAA;MAAA,2BAAA;EACA,gBAAA;EACA,uBAAA;EACA,8BAAA;EACA,oBAAA;EC6CA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,mBAAA;EhB4JA,0BAAA;EACG,uBAAA;EACC,sBAAA;EACI,kBAAA;CLiuFT;AoBz6FG;;;;;;EdrBF,qBAAA;EAEA,2CAAA;EACA,qBAAA;CNq8FD;AoB76FC;;;EAGE,eAAA;EACA,sBAAA;CpB+6FH;AoB56FC;;EAEE,WAAA;EACA,uBAAA;Ef2BF,yDAAA;EACQ,iDAAA;CLo5FT;AoB56FC;;;EAGE,oBAAA;EE7CF,cAAA;EAGA,0BAAA;EjB8DA,yBAAA;EACQ,iBAAA;CL65FT;AoB56FG;;EAEE,qBAAA;CpB86FL;AoBr6FD;EC3DE,eAAA;EACA,0BAAA;EACA,sBAAA;CrBm+FD;AqBj+FC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBy+FT;AqBt+FC;;;EAGE,uBAAA;CrBw+FH;AqBn+FG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrBi/FT;AoBn+FD;ECTI,eAAA;EACA,0BAAA;CrB++FH;AoBp+FD;EC9DE,eAAA;EACA,0BAAA;EACA,sBAAA;CrBqiGD;AqBniGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBqiGP;AqBniGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBqiGP;AqBniGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBqiGP;AqBniGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB2iGT;AqBxiGC;;;EAGE,uBAAA;CrB0iGH;AqBriGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrBmjGT;AoBliGD;ECZI,eAAA;EACA,0BAAA;CrBijGH;AoBliGD;EClEE,eAAA;EACA,0BAAA;EACA,sBAAA;CrBumGD;AqBrmGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBumGP;AqBrmGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBumGP;AqBrmGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBumGP;AqBrmGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB6mGT;AqB1mGC;;;EAGE,uBAAA;CrB4mGH;AqBvmGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrBqnGT;AoBhmGD;EChBI,eAAA;EACA,0BAAA;CrBmnGH;AoBhmGD;ECtEE,eAAA;EACA,0BAAA;EACA,sBAAA;CrByqGD;AqBvqGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrByqGP;AqBvqGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrByqGP;AqBvqGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrByqGP;AqBvqGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB+qGT;AqB5qGC;;;EAGE,uBAAA;CrB8qGH;AqBzqGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrBurGT;AoB9pGD;ECpBI,eAAA;EACA,0BAAA;CrBqrGH;AoB9pGD;EC1EE,eAAA;EACA,0BAAA;EACA,sBAAA;CrB2uGD;AqBzuGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB2uGP;AqBzuGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB2uGP;AqBzuGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB2uGP;AqBzuGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBivGT;AqB9uGC;;;EAGE,uBAAA;CrBgvGH;AqB3uGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrByvGT;AoB5tGD;ECxBI,eAAA;EACA,0BAAA;CrBuvGH;AoB5tGD;EC9EE,eAAA;EACA,0BAAA;EACA,sBAAA;CrB6yGD;AqB3yGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB6yGP;AqB3yGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB6yGP;AqB3yGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB6yGP;AqB3yGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBmzGT;AqBhzGC;;;EAGE,uBAAA;CrBkzGH;AqB7yGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrB2zGT;AoB1xGD;EC5BI,eAAA;EACA,0BAAA;CrByzGH;AoBrxGD;EACE,eAAA;EACA,oBAAA;EACA,iBAAA;CpBuxGD;AoBrxGC;;;;;EAKE,8BAAA;EfnCF,yBAAA;EACQ,iBAAA;CL2zGT;AoBtxGC;;;;EAIE,0BAAA;CpBwxGH;AoBtxGC;;EAEE,eAAA;EACA,2BAAA;EACA,8BAAA;CpBwxGH;AoBpxGG;;;;EAEE,eAAA;EACA,sBAAA;CpBwxGL;AoB/wGD;;ECrEE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CrBw1GD;AoBlxGD;;ECzEE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrB+1GD;AoBrxGD;;EC7EE,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrBs2GD;AoBpxGD;EACE,eAAA;EACA,YAAA;CpBsxGD;AoBlxGD;EACE,gBAAA;CpBoxGD;AoB7wGC;;;EACE,YAAA;CpBixGH;AuB36GD;EACE,WAAA;ElBoLA,yCAAA;EACK,oCAAA;EACG,iCAAA;CL0vGT;AuB96GC;EACE,WAAA;CvBg7GH;AuB56GD;EACE,cAAA;CvB86GD;AuB56GC;EAAY,eAAA;CvB+6Gb;AuB96GC;EAAY,mBAAA;CvBi7Gb;AuBh7GC;EAAY,yBAAA;CvBm7Gb;AuBh7GD;EACE,mBAAA;EACA,UAAA;EACA,iBAAA;ElBuKA,gDAAA;EACQ,2CAAA;KAAA,wCAAA;EAOR,mCAAA;EACQ,8BAAA;KAAA,2BAAA;EAGR,yCAAA;EACQ,oCAAA;KAAA,iCAAA;CLowGT;AwB98GD;EACE,sBAAA;EACA,SAAA;EACA,UAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,yBAAA;EACA,oCAAA;EACA,mCAAA;CxBg9GD;AwB58GD;;EAEE,mBAAA;CxB88GD;AwB18GD;EACE,WAAA;CxB48GD;AwBx8GD;EACE,mBAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,0BAAA;EACA,0BAAA;EACA,sCAAA;EACA,mBAAA;EnBsBA,oDAAA;EACQ,4CAAA;EmBrBR,qCAAA;UAAA,6BAAA;CxB28GD;AwBt8GC;EACE,SAAA;EACA,WAAA;CxBw8GH;AwBj+GD;ECzBE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzB6/GD;AwBv+GD;EAmCI,eAAA;EACA,kBAAA;EACA,YAAA;EACA,oBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxBu8GH;AwBj8GC;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CxBm8GH;AwB77GC;;;EAGE,eAAA;EACA,sBAAA;EACA,WAAA;EACA,0BAAA;CxB+7GH;AwBt7GC;;;EAGE,eAAA;CxBw7GH;AwBp7GC;;EAEE,sBAAA;EACA,8BAAA;EACA,uBAAA;EE3GF,oEAAA;EF6GE,oBAAA;CxBs7GH;AwBj7GD;EAGI,eAAA;CxBi7GH;AwBp7GD;EAQI,WAAA;CxB+6GH;AwBv6GD;EACE,WAAA;EACA,SAAA;CxBy6GD;AwBj6GD;EACE,QAAA;EACA,YAAA;CxBm6GD;AwB/5GD;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxBi6GD;AwB75GD;EACE,gBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;CxB+5GD;AwB35GD;EACE,SAAA;EACA,WAAA;CxB65GD;AwBr5GD;;EAII,cAAA;EACA,0BAAA;EACA,4BAAA;EACA,YAAA;CxBq5GH;AwB55GD;;EAWI,UAAA;EACA,aAAA;EACA,mBAAA;CxBq5GH;AwBh4GD;EAXE;IApEA,WAAA;IACA,SAAA;GxBm9GC;EwBh5GD;IA1DA,QAAA;IACA,YAAA;GxB68GC;CACF;A2B7lHD;;EAEE,mBAAA;EACA,sBAAA;EACA,uBAAA;C3B+lHD;A2BnmHD;;EAMI,mBAAA;EACA,YAAA;C3BimHH;A2B/lHG;;;;;;;;EAIE,WAAA;C3BqmHL;A2B/lHD;;;;EAKI,kBAAA;C3BgmHH;A2B3lHD;EACE,kBAAA;C3B6lHD;A2B9lHD;;;EAOI,YAAA;C3B4lHH;A2BnmHD;;;EAYI,iBAAA;C3B4lHH;A2BxlHD;EACE,iBAAA;C3B0lHD;A2BtlHD;EACE,eAAA;C3BwlHD;A2BvlHC;EClDA,8BAAA;EACG,2BAAA;C5B4oHJ;A2BtlHD;;EC/CE,6BAAA;EACG,0BAAA;C5ByoHJ;A2BrlHD;EACE,YAAA;C3BulHD;A2BrlHD;EACE,iBAAA;C3BulHD;A2BrlHD;;ECnEE,8BAAA;EACG,2BAAA;C5B4pHJ;A2BplHD;ECjEE,6BAAA;EACG,0BAAA;C5BwpHJ;A2BnlHD;;EAEE,WAAA;C3BqlHD;A2BpkHD;EACE,kBAAA;EACA,mBAAA;C3BskHD;A2BpkHD;EACE,mBAAA;EACA,oBAAA;C3BskHD;A2BjkHD;EtB/CE,yDAAA;EACQ,iDAAA;CLmnHT;A2BjkHC;EtBnDA,yBAAA;EACQ,iBAAA;CLunHT;A2B9jHD;EACE,eAAA;C3BgkHD;A2B7jHD;EACE,wBAAA;EACA,uBAAA;C3B+jHD;A2B5jHD;EACE,wBAAA;C3B8jHD;A2BvjHD;;;EAII,eAAA;EACA,YAAA;EACA,YAAA;EACA,gBAAA;C3BwjHH;A2B/jHD;EAcM,YAAA;C3BojHL;A2BlkHD;;;;EAsBI,iBAAA;EACA,eAAA;C3BkjHH;A2B7iHC;EACE,iBAAA;C3B+iHH;A2B7iHC;EACE,6BAAA;ECpKF,8BAAA;EACC,6BAAA;C5BotHF;A2B9iHC;EACE,+BAAA;EChLF,2BAAA;EACC,0BAAA;C5BiuHF;A2B9iHD;EACE,iBAAA;C3BgjHD;A2B9iHD;;EC/KE,8BAAA;EACC,6BAAA;C5BiuHF;A2B7iHD;EC7LE,2BAAA;EACC,0BAAA;C5B6uHF;A2BziHD;EACE,eAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;C3B2iHD;A2B/iHD;;EAOI,YAAA;EACA,oBAAA;EACA,UAAA;C3B4iHH;A2BrjHD;EAYI,YAAA;C3B4iHH;A2BxjHD;EAgBI,WAAA;C3B2iHH;A2B1hHD;;;;EAKM,mBAAA;EACA,uBAAA;EACA,qBAAA;C3B2hHL;A6BrwHD;EACE,mBAAA;EACA,eAAA;EACA,0BAAA;C7BuwHD;A6BpwHC;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;C7BswHH;A6B/wHD;EAeI,mBAAA;EACA,WAAA;EAKA,YAAA;EAEA,YAAA;EACA,iBAAA;C7B8vHH;A6BrvHD;;;EV8BE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnB4tHD;AmB1tHC;;;EACE,aAAA;EACA,kBAAA;CnB8tHH;AmB3tHC;;;;;;EAEE,aAAA;CnBiuHH;A6BvwHD;;;EVyBE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBmvHD;AmBjvHC;;;EACE,aAAA;EACA,kBAAA;CnBqvHH;AmBlvHC;;;;;;EAEE,aAAA;CnBwvHH;A6BrxHD;;;EAGE,oBAAA;C7BuxHD;A6BrxHC;;;EACE,iBAAA;C7ByxHH;A6BrxHD;;EAEE,UAAA;EACA,oBAAA;EACA,uBAAA;C7BuxHD;A6BlxHD;EACE,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;C7BoxHD;A6BjxHC;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;C7BmxHH;A6BjxHC;EACE,mBAAA;EACA,gBAAA;EACA,mBAAA;C7BmxHH;A6BvyHD;;EA0BI,cAAA;C7BixHH;A6B5wHD;;;;;;;EDhGE,8BAAA;EACG,2BAAA;C5Bq3HJ;A6B7wHD;EACE,gBAAA;C7B+wHD;A6B7wHD;;;;;;;EDpGE,6BAAA;EACG,0BAAA;C5B03HJ;A6B9wHD;EACE,eAAA;C7BgxHD;A6B3wHD;EACE,mBAAA;EAGA,aAAA;EACA,oBAAA;C7B2wHD;A6BhxHD;EAUI,mBAAA;C7BywHH;A6BnxHD;EAYM,kBAAA;C7B0wHL;A6BvwHG;;;EAGE,WAAA;C7BywHL;A6BpwHC;;EAGI,mBAAA;C7BqwHL;A6BlwHC;;EAGI,WAAA;EACA,kBAAA;C7BmwHL;A8B95HD;EACE,iBAAA;EACA,gBAAA;EACA,iBAAA;C9Bg6HD;A8Bn6HD;EAOI,mBAAA;EACA,eAAA;C9B+5HH;A8Bv6HD;EAWM,mBAAA;EACA,eAAA;EACA,mBAAA;C9B+5HL;A8B95HK;;EAEE,sBAAA;EACA,0BAAA;C9Bg6HP;A8B35HG;EACE,eAAA;C9B65HL;A8B35HK;;EAEE,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,oBAAA;C9B65HP;A8Bt5HG;;;EAGE,0BAAA;EACA,sBAAA;C9Bw5HL;A8Bj8HD;ELHE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBu8HD;A8Bv8HD;EA0DI,gBAAA;C9Bg5HH;A8Bv4HD;EACE,iCAAA;C9By4HD;A8B14HD;EAGI,YAAA;EAEA,oBAAA;C9By4HH;A8B94HD;EASM,kBAAA;EACA,wBAAA;EACA,8BAAA;EACA,2BAAA;C9Bw4HL;A8Bv4HK;EACE,sCAAA;C9By4HP;A8Bn4HK;;;EAGE,eAAA;EACA,0BAAA;EACA,0BAAA;EACA,iCAAA;EACA,gBAAA;C9Bq4HP;A8Bh4HC;EAqDA,YAAA;EA8BA,iBAAA;C9BizHD;A8Bp4HC;EAwDE,YAAA;C9B+0HH;A8Bv4HC;EA0DI,mBAAA;EACA,mBAAA;C9Bg1HL;A8B34HC;EAgEE,UAAA;EACA,WAAA;C9B80HH;A8Bl0HD;EAAA;IAPM,oBAAA;IACA,UAAA;G9B60HH;E8Bv0HH;IAJQ,iBAAA;G9B80HL;CACF;A8Bx5HC;EAuFE,gBAAA;EACA,mBAAA;C9Bo0HH;A8B55HC;;;EA8FE,0BAAA;C9Bm0HH;A8BrzHD;EAAA;IATM,iCAAA;IACA,2BAAA;G9Bk0HH;E8B1zHH;;;IAHM,6BAAA;G9Bk0HH;CACF;A8Bn6HD;EAEI,YAAA;C9Bo6HH;A8Bt6HD;EAMM,mBAAA;C9Bm6HL;A8Bz6HD;EASM,iBAAA;C9Bm6HL;A8B95HK;;;EAGE,eAAA;EACA,0BAAA;C9Bg6HP;A8Bx5HD;EAEI,YAAA;C9By5HH;A8B35HD;EAIM,gBAAA;EACA,eAAA;C9B05HL;A8B94HD;EACE,YAAA;C9Bg5HD;A8Bj5HD;EAII,YAAA;C9Bg5HH;A8Bp5HD;EAMM,mBAAA;EACA,mBAAA;C9Bi5HL;A8Bx5HD;EAYI,UAAA;EACA,WAAA;C9B+4HH;A8Bn4HD;EAAA;IAPM,oBAAA;IACA,UAAA;G9B84HH;E8Bx4HH;IAJQ,iBAAA;G9B+4HL;CACF;A8Bv4HD;EACE,iBAAA;C9By4HD;A8B14HD;EAKI,gBAAA;EACA,mBAAA;C9Bw4HH;A8B94HD;;;EAYI,0BAAA;C9Bu4HH;A8Bz3HD;EAAA;IATM,iCAAA;IACA,2BAAA;G9Bs4HH;E8B93HH;;;IAHM,6BAAA;G9Bs4HH;CACF;A8B73HD;EAEI,cAAA;C9B83HH;A8Bh4HD;EAKI,eAAA;C9B83HH;A8Br3HD;EAEE,iBAAA;EF3OA,2BAAA;EACC,0BAAA;C5BkmIF;A+B5lID;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,8BAAA;C/B8lID;A+BtlID;EAAA;IAFI,mBAAA;G/B4lID;CACF;A+B7kID;EAAA;IAFI,YAAA;G/BmlID;CACF;A+BrkID;EACE,oBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,2DAAA;UAAA,mDAAA;EAEA,kCAAA;C/BskID;A+BpkIC;EACE,iBAAA;C/BskIH;A+B1iID;EAAA;IAxBI,YAAA;IACA,cAAA;IACA,yBAAA;YAAA,iBAAA;G/BskID;E+BpkIC;IACE,0BAAA;IACA,wBAAA;IACA,kBAAA;IACA,6BAAA;G/BskIH;E+BnkIC;IACE,oBAAA;G/BqkIH;E+BhkIC;;;IAGE,gBAAA;IACA,iBAAA;G/BkkIH;CACF;A+B9jID;;EAGI,kBAAA;C/B+jIH;A+B1jIC;EAAA;;IAFI,kBAAA;G/BikIH;CACF;A+BxjID;;;;EAII,oBAAA;EACA,mBAAA;C/B0jIH;A+BpjIC;EAAA;;;;IAHI,gBAAA;IACA,eAAA;G/B8jIH;CACF;A+BljID;EACE,cAAA;EACA,sBAAA;C/BojID;A+B/iID;EAAA;IAFI,iBAAA;G/BqjID;CACF;A+BjjID;;EAEE,gBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;C/BmjID;A+B7iID;EAAA;;IAFI,iBAAA;G/BojID;CACF;A+BljID;EACE,OAAA;EACA,sBAAA;C/BojID;A+BljID;EACE,UAAA;EACA,iBAAA;EACA,sBAAA;C/BojID;A+B9iID;EACE,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;C/BgjID;A+B9iIC;;EAEE,sBAAA;C/BgjIH;A+BzjID;EAaI,eAAA;C/B+iIH;A+BtiID;EALI;;IAEE,mBAAA;G/B8iIH;CACF;A+BpiID;EACE,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EC9LA,gBAAA;EACA,mBAAA;ED+LA,8BAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;C/BuiID;A+BniIC;EACE,WAAA;C/BqiIH;A+BnjID;EAmBI,eAAA;EACA,YAAA;EACA,YAAA;EACA,mBAAA;C/BmiIH;A+BzjID;EAyBI,gBAAA;C/BmiIH;A+B7hID;EAAA;IAFI,cAAA;G/BmiID;CACF;A+B1hID;EACE,oBAAA;C/B4hID;A+B7hID;EAII,kBAAA;EACA,qBAAA;EACA,kBAAA;C/B4hIH;A+BhgIC;EAAA;IAtBI,iBAAA;IACA,YAAA;IACA,YAAA;IACA,cAAA;IACA,8BAAA;IACA,UAAA;IACA,yBAAA;YAAA,iBAAA;G/B0hIH;E+B1gID;;IAbM,2BAAA;G/B2hIL;E+B9gID;IAVM,kBAAA;G/B2hIL;E+B1hIK;;IAEE,uBAAA;G/B4hIP;CACF;A+B1gID;EAAA;IAXI,YAAA;IACA,UAAA;G/ByhID;E+B/gIH;IAPM,YAAA;G/ByhIH;E+BlhIH;IALQ,kBAAA;IACA,qBAAA;G/B0hIL;CACF;A+B/gID;EACE,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,qCAAA;E1B9NA,6FAAA;EACQ,qFAAA;E2B/DR,gBAAA;EACA,mBAAA;ChCgzID;AkB1xHD;EAAA;IA9DM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlB41HH;EkBhyHH;IAvDM,sBAAA;IACA,YAAA;IACA,uBAAA;GlB01HH;EkBryHH;IAhDM,sBAAA;GlBw1HH;EkBxyHH;IA5CM,sBAAA;IACA,uBAAA;GlBu1HH;EkB5yHH;;;IAtCQ,YAAA;GlBu1HL;EkBjzHH;IAhCM,YAAA;GlBo1HH;EkBpzHH;IA5BM,iBAAA;IACA,uBAAA;GlBm1HH;EkBxzHH;;IApBM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlBg1HH;EkB/zHH;;IAdQ,gBAAA;GlBi1HL;EkBn0HH;;IATM,mBAAA;IACA,eAAA;GlBg1HH;EkBx0HH;IAHM,OAAA;GlB80HH;CACF;A+BxjIC;EAAA;IANI,mBAAA;G/BkkIH;E+BhkIG;IACE,iBAAA;G/BkkIL;CACF;A+BjjID;EAAA;IARI,YAAA;IACA,UAAA;IACA,eAAA;IACA,gBAAA;IACA,eAAA;IACA,kBAAA;I1BzPF,yBAAA;IACQ,iBAAA;GLuzIP;CACF;A+BvjID;EACE,cAAA;EHpUA,2BAAA;EACC,0BAAA;C5B83IF;A+BvjID;EACE,iBAAA;EHzUA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5B63IF;A+BnjID;EChVE,gBAAA;EACA,mBAAA;ChCs4ID;A+BpjIC;ECnVA,iBAAA;EACA,oBAAA;ChC04ID;A+BrjIC;ECtVA,iBAAA;EACA,oBAAA;ChC84ID;A+B/iID;EChWE,iBAAA;EACA,oBAAA;ChCk5ID;A+B3iID;EAAA;IAJI,YAAA;IACA,kBAAA;IACA,mBAAA;G/BmjID;CACF;A+BthID;EAhBE;IExWA,uBAAA;GjCk5IC;E+BziID;IE5WA,wBAAA;IF8WE,oBAAA;G/B2iID;E+B7iID;IAKI,gBAAA;G/B2iIH;CACF;A+BliID;EACE,0BAAA;EACA,sBAAA;C/BoiID;A+BtiID;EAKI,eAAA;C/BoiIH;A+BniIG;;EAEE,eAAA;EACA,8BAAA;C/BqiIL;A+B9iID;EAcI,eAAA;C/BmiIH;A+BjjID;EAmBM,eAAA;C/BiiIL;A+B/hIK;;EAEE,eAAA;EACA,8BAAA;C/BiiIP;A+B7hIK;;;EAGE,eAAA;EACA,0BAAA;C/B+hIP;A+B3hIK;;;EAGE,eAAA;EACA,8BAAA;C/B6hIP;A+BrkID;EA8CI,sBAAA;C/B0hIH;A+BzhIG;;EAEE,0BAAA;C/B2hIL;A+B5kID;EAoDM,0BAAA;C/B2hIL;A+B/kID;;EA0DI,sBAAA;C/ByhIH;A+BlhIK;;;EAGE,0BAAA;EACA,eAAA;C/BohIP;A+Bn/HC;EAAA;IAzBQ,eAAA;G/BghIP;E+B/gIO;;IAEE,eAAA;IACA,8BAAA;G/BihIT;E+B7gIO;;;IAGE,eAAA;IACA,0BAAA;G/B+gIT;E+B3gIO;;;IAGE,eAAA;IACA,8BAAA;G/B6gIT;CACF;A+B/mID;EA8GI,eAAA;C/BogIH;A+BngIG;EACE,eAAA;C/BqgIL;A+BrnID;EAqHI,eAAA;C/BmgIH;A+BlgIG;;EAEE,eAAA;C/BogIL;A+BhgIK;;;;EAEE,eAAA;C/BogIP;A+B5/HD;EACE,0BAAA;EACA,sBAAA;C/B8/HD;A+BhgID;EAKI,eAAA;C/B8/HH;A+B7/HG;;EAEE,eAAA;EACA,8BAAA;C/B+/HL;A+BxgID;EAcI,eAAA;C/B6/HH;A+B3gID;EAmBM,eAAA;C/B2/HL;A+Bz/HK;;EAEE,eAAA;EACA,8BAAA;C/B2/HP;A+Bv/HK;;;EAGE,eAAA;EACA,0BAAA;C/By/HP;A+Br/HK;;;EAGE,eAAA;EACA,8BAAA;C/Bu/HP;A+B/hID;EA+CI,sBAAA;C/Bm/HH;A+Bl/HG;;EAEE,0BAAA;C/Bo/HL;A+BtiID;EAqDM,0BAAA;C/Bo/HL;A+BziID;;EA2DI,sBAAA;C/Bk/HH;A+B5+HK;;;EAGE,0BAAA;EACA,eAAA;C/B8+HP;A+Bv8HC;EAAA;IA/BQ,sBAAA;G/B0+HP;E+B38HD;IA5BQ,0BAAA;G/B0+HP;E+B98HD;IAzBQ,eAAA;G/B0+HP;E+Bz+HO;;IAEE,eAAA;IACA,8BAAA;G/B2+HT;E+Bv+HO;;;IAGE,eAAA;IACA,0BAAA;G/By+HT;E+Br+HO;;;IAGE,eAAA;IACA,8BAAA;G/Bu+HT;CACF;A+B/kID;EA+GI,eAAA;C/Bm+HH;A+Bl+HG;EACE,eAAA;C/Bo+HL;A+BrlID;EAsHI,eAAA;C/Bk+HH;A+Bj+HG;;EAEE,eAAA;C/Bm+HL;A+B/9HK;;;;EAEE,eAAA;C/Bm+HP;AkC7mJD;EACE,kBAAA;EACA,oBAAA;EACA,iBAAA;EACA,0BAAA;EACA,mBAAA;ClC+mJD;AkCpnJD;EAQI,sBAAA;ClC+mJH;AkCvnJD;EAWM,kBAAA;EACA,eAAA;EACA,eAAA;ClC+mJL;AkC5nJD;EAkBI,eAAA;ClC6mJH;AmCjoJD;EACE,sBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;CnCmoJD;AmCvoJD;EAOI,gBAAA;CnCmoJH;AmC1oJD;;EAUM,mBAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,sBAAA;EACA,eAAA;EACA,0BAAA;EACA,0BAAA;EACA,kBAAA;CnCooJL;AmCloJG;;EAGI,eAAA;EPXN,+BAAA;EACG,4BAAA;C5B+oJJ;AmCjoJG;;EPvBF,gCAAA;EACG,6BAAA;C5B4pJJ;AmC5nJG;;;;EAEE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,sBAAA;CnCgoJL;AmC1nJG;;;;;;EAGE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,sBAAA;EACA,gBAAA;CnC+nJL;AmCtrJD;;;;;;EAkEM,eAAA;EACA,0BAAA;EACA,sBAAA;EACA,oBAAA;CnC4nJL;AmCnnJD;;EC3EM,mBAAA;EACA,gBAAA;EACA,uBAAA;CpCksJL;AoChsJG;;ERKF,+BAAA;EACG,4BAAA;C5B+rJJ;AoC/rJG;;ERTF,gCAAA;EACG,6BAAA;C5B4sJJ;AmC9nJD;;EChFM,kBAAA;EACA,gBAAA;EACA,iBAAA;CpCktJL;AoChtJG;;ERKF,+BAAA;EACG,4BAAA;C5B+sJJ;AoC/sJG;;ERTF,gCAAA;EACG,6BAAA;C5B4tJJ;AqC/tJD;EACE,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,mBAAA;CrCiuJD;AqCruJD;EAOI,gBAAA;CrCiuJH;AqCxuJD;;EAUM,sBAAA;EACA,kBAAA;EACA,0BAAA;EACA,0BAAA;EACA,oBAAA;CrCkuJL;AqChvJD;;EAmBM,sBAAA;EACA,0BAAA;CrCiuJL;AqCrvJD;;EA2BM,aAAA;CrC8tJL;AqCzvJD;;EAkCM,YAAA;CrC2tJL;AqC7vJD;;;;EA2CM,eAAA;EACA,0BAAA;EACA,oBAAA;CrCwtJL;AsCtwJD;EACE,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,oBAAA;EACA,yBAAA;EACA,qBAAA;CtCwwJD;AsCpwJG;;EAEE,eAAA;EACA,sBAAA;EACA,gBAAA;CtCswJL;AsCjwJC;EACE,cAAA;CtCmwJH;AsC/vJC;EACE,mBAAA;EACA,UAAA;CtCiwJH;AsC1vJD;ECtCE,0BAAA;CvCmyJD;AuChyJG;;EAEE,0BAAA;CvCkyJL;AsC7vJD;EC1CE,0BAAA;CvC0yJD;AuCvyJG;;EAEE,0BAAA;CvCyyJL;AsChwJD;EC9CE,0BAAA;CvCizJD;AuC9yJG;;EAEE,0BAAA;CvCgzJL;AsCnwJD;EClDE,0BAAA;CvCwzJD;AuCrzJG;;EAEE,0BAAA;CvCuzJL;AsCtwJD;ECtDE,0BAAA;CvC+zJD;AuC5zJG;;EAEE,0BAAA;CvC8zJL;AsCzwJD;EC1DE,0BAAA;CvCs0JD;AuCn0JG;;EAEE,0BAAA;CvCq0JL;AwCv0JD;EACE,sBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,mBAAA;EACA,0BAAA;EACA,oBAAA;CxCy0JD;AwCt0JC;EACE,cAAA;CxCw0JH;AwCp0JC;EACE,mBAAA;EACA,UAAA;CxCs0JH;AwCn0JC;;EAEE,OAAA;EACA,iBAAA;CxCq0JH;AwCh0JG;;EAEE,eAAA;EACA,sBAAA;EACA,gBAAA;CxCk0JL;AwC7zJC;;EAEE,eAAA;EACA,0BAAA;CxC+zJH;AwC5zJC;EACE,aAAA;CxC8zJH;AwC3zJC;EACE,kBAAA;CxC6zJH;AwC1zJC;EACE,iBAAA;CxC4zJH;AyCt3JD;EACE,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,eAAA;EACA,0BAAA;CzCw3JD;AyC73JD;;EASI,eAAA;CzCw3JH;AyCj4JD;EAaI,oBAAA;EACA,gBAAA;EACA,iBAAA;CzCu3JH;AyCt4JD;EAmBI,0BAAA;CzCs3JH;AyCn3JC;;EAEE,mBAAA;CzCq3JH;AyC74JD;EA4BI,gBAAA;CzCo3JH;AyCl2JD;EAAA;IAdI,kBAAA;IACA,qBAAA;GzCo3JD;EyCl3JC;;IAEE,mBAAA;IACA,oBAAA;GzCo3JH;EyC52JH;;IAHM,gBAAA;GzCm3JH;CACF;A0C95JD;EACE,eAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;ErCiLA,4CAAA;EACK,uCAAA;EACG,oCAAA;CLgvJT;A0C16JD;;EAaI,kBAAA;EACA,mBAAA;C1Ci6JH;A0C75JC;;;EAGE,sBAAA;C1C+5JH;A0Cp7JD;EA0BI,aAAA;EACA,eAAA;C1C65JH;A2Ct7JD;EACE,cAAA;EACA,oBAAA;EACA,8BAAA;EACA,mBAAA;C3Cw7JD;A2C57JD;EAQI,cAAA;EAEA,eAAA;C3Cs7JH;A2Ch8JD;EAeI,kBAAA;C3Co7JH;A2Cn8JD;;EAqBI,iBAAA;C3Ck7JH;A2Cv8JD;EAyBI,gBAAA;C3Ci7JH;A2Cz6JD;;EAEE,oBAAA;C3C26JD;A2C76JD;;EAMI,mBAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;C3C26JH;A2Cn6JD;ECvDE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C69JD;A2Cx6JD;EClDI,0BAAA;C5C69JH;A2C36JD;EC/CI,eAAA;C5C69JH;A2C16JD;EC3DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Cw+JD;A2C/6JD;ECtDI,0BAAA;C5Cw+JH;A2Cl7JD;ECnDI,eAAA;C5Cw+JH;A2Cj7JD;EC/DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Cm/JD;A2Ct7JD;EC1DI,0BAAA;C5Cm/JH;A2Cz7JD;ECvDI,eAAA;C5Cm/JH;A2Cx7JD;ECnEE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C8/JD;A2C77JD;EC9DI,0BAAA;C5C8/JH;A2Ch8JD;EC3DI,eAAA;C5C8/JH;A6ChgKD;EACE;IAAQ,4BAAA;G7CmgKP;E6ClgKD;IAAQ,yBAAA;G7CqgKP;CACF;A6ClgKD;EACE;IAAQ,4BAAA;G7CqgKP;E6CpgKD;IAAQ,yBAAA;G7CugKP;CACF;A6C1gKD;EACE;IAAQ,4BAAA;G7CqgKP;E6CpgKD;IAAQ,yBAAA;G7CugKP;CACF;A6ChgKD;EACE,iBAAA;EACA,aAAA;EACA,oBAAA;EACA,0BAAA;EACA,mBAAA;ExCsCA,uDAAA;EACQ,+CAAA;CL69JT;A6C//JD;EACE,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;ExCyBA,uDAAA;EACQ,+CAAA;EAyHR,oCAAA;EACK,+BAAA;EACG,4BAAA;CLi3JT;A6C5/JD;;ECCI,8MAAA;EACA,yMAAA;EACA,sMAAA;EDAF,mCAAA;UAAA,2BAAA;C7CggKD;A6Cz/JD;;ExC5CE,2DAAA;EACK,sDAAA;EACG,mDAAA;CLyiKT;A6Ct/JD;EErEE,0BAAA;C/C8jKD;A+C3jKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C8gKH;A6C1/JD;EEzEE,0BAAA;C/CskKD;A+CnkKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9CshKH;A6C9/JD;EE7EE,0BAAA;C/C8kKD;A+C3kKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C8hKH;A6ClgKD;EEjFE,0BAAA;C/CslKD;A+CnlKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9CsiKH;AgD9lKD;EAEE,iBAAA;ChD+lKD;AgD7lKC;EACE,cAAA;ChD+lKH;AgD3lKD;;EAEE,QAAA;EACA,iBAAA;ChD6lKD;AgD1lKD;EACE,eAAA;ChD4lKD;AgDzlKD;EACE,eAAA;ChD2lKD;AgDxlKC;EACE,gBAAA;ChD0lKH;AgDtlKD;;EAEE,mBAAA;ChDwlKD;AgDrlKD;;EAEE,oBAAA;ChDulKD;AgDplKD;;;EAGE,oBAAA;EACA,oBAAA;ChDslKD;AgDnlKD;EACE,uBAAA;ChDqlKD;AgDllKD;EACE,uBAAA;ChDolKD;AgDhlKD;EACE,cAAA;EACA,mBAAA;ChDklKD;AgD5kKD;EACE,gBAAA;EACA,iBAAA;ChD8kKD;AiDroKD;EAEE,oBAAA;EACA,gBAAA;CjDsoKD;AiD9nKD;EACE,mBAAA;EACA,eAAA;EACA,mBAAA;EAEA,oBAAA;EACA,0BAAA;EACA,0BAAA;CjD+nKD;AiD5nKC;ErB3BA,6BAAA;EACC,4BAAA;C5B0pKF;AiD7nKC;EACE,iBAAA;ErBvBF,gCAAA;EACC,+BAAA;C5BupKF;AiDtnKD;;EAEE,eAAA;CjDwnKD;AiD1nKD;;EAKI,eAAA;CjDynKH;AiDrnKC;;;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CjDynKH;AiDrnKD;EACE,YAAA;EACA,iBAAA;CjDunKD;AiDlnKC;;;EAGE,0BAAA;EACA,eAAA;EACA,oBAAA;CjDonKH;AiDznKC;;;EASI,eAAA;CjDqnKL;AiD9nKC;;;EAYI,eAAA;CjDunKL;AiDlnKC;;;EAGE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,sBAAA;CjDonKH;AiD1nKC;;;;;;;;;EAYI,eAAA;CjDynKL;AiDroKC;;;EAeI,eAAA;CjD2nKL;AkD7tKC;EACE,eAAA;EACA,0BAAA;ClD+tKH;AkD7tKG;;EAEE,eAAA;ClD+tKL;AkDjuKG;;EAKI,eAAA;ClDguKP;AkD7tKK;;;;EAEE,eAAA;EACA,0BAAA;ClDiuKP;AkD/tKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDouKP;AkD1vKC;EACE,eAAA;EACA,0BAAA;ClD4vKH;AkD1vKG;;EAEE,eAAA;ClD4vKL;AkD9vKG;;EAKI,eAAA;ClD6vKP;AkD1vKK;;;;EAEE,eAAA;EACA,0BAAA;ClD8vKP;AkD5vKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDiwKP;AkDvxKC;EACE,eAAA;EACA,0BAAA;ClDyxKH;AkDvxKG;;EAEE,eAAA;ClDyxKL;AkD3xKG;;EAKI,eAAA;ClD0xKP;AkDvxKK;;;;EAEE,eAAA;EACA,0BAAA;ClD2xKP;AkDzxKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD8xKP;AkDpzKC;EACE,eAAA;EACA,0BAAA;ClDszKH;AkDpzKG;;EAEE,eAAA;ClDszKL;AkDxzKG;;EAKI,eAAA;ClDuzKP;AkDpzKK;;;;EAEE,eAAA;EACA,0BAAA;ClDwzKP;AkDtzKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD2zKP;AiD1tKD;EACE,cAAA;EACA,mBAAA;CjD4tKD;AiD1tKD;EACE,iBAAA;EACA,iBAAA;CjD4tKD;AmDt1KD;EACE,oBAAA;EACA,0BAAA;EACA,8BAAA;EACA,mBAAA;E9C0DA,kDAAA;EACQ,0CAAA;CL+xKT;AmDr1KD;EACE,cAAA;CnDu1KD;AmDl1KD;EACE,mBAAA;EACA,qCAAA;EvBpBA,6BAAA;EACC,4BAAA;C5By2KF;AmDx1KD;EAMI,eAAA;CnDq1KH;AmDh1KD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;CnDk1KD;AmDt1KD;;;;;EAWI,eAAA;CnDk1KH;AmD70KD;EACE,mBAAA;EACA,0BAAA;EACA,8BAAA;EvBxCA,gCAAA;EACC,+BAAA;C5Bw3KF;AmDv0KD;;EAGI,iBAAA;CnDw0KH;AmD30KD;;EAMM,oBAAA;EACA,iBAAA;CnDy0KL;AmDr0KG;;EAEI,cAAA;EvBvEN,6BAAA;EACC,4BAAA;C5B+4KF;AmDn0KG;;EAEI,iBAAA;EvBvEN,gCAAA;EACC,+BAAA;C5B64KF;AmD51KD;EvB1DE,2BAAA;EACC,0BAAA;C5By5KF;AmD/zKD;EAEI,oBAAA;CnDg0KH;AmD7zKD;EACE,oBAAA;CnD+zKD;AmDvzKD;;;EAII,iBAAA;CnDwzKH;AmD5zKD;;;EAOM,mBAAA;EACA,oBAAA;CnD0zKL;AmDl0KD;;EvBzGE,6BAAA;EACC,4BAAA;C5B+6KF;AmDv0KD;;;;EAmBQ,4BAAA;EACA,6BAAA;CnD0zKP;AmD90KD;;;;;;;;EAwBU,4BAAA;CnDg0KT;AmDx1KD;;;;;;;;EA4BU,6BAAA;CnDs0KT;AmDl2KD;;EvBjGE,gCAAA;EACC,+BAAA;C5Bu8KF;AmDv2KD;;;;EAyCQ,+BAAA;EACA,gCAAA;CnDo0KP;AmD92KD;;;;;;;;EA8CU,+BAAA;CnD00KT;AmDx3KD;;;;;;;;EAkDU,gCAAA;CnDg1KT;AmDl4KD;;;;EA2DI,8BAAA;CnD60KH;AmDx4KD;;EA+DI,cAAA;CnD60KH;AmD54KD;;EAmEI,UAAA;CnD60KH;AmDh5KD;;;;;;;;;;;;EA0EU,eAAA;CnDo1KT;AmD95KD;;;;;;;;;;;;EA8EU,gBAAA;CnD81KT;AmD56KD;;;;;;;;EAuFU,iBAAA;CnD+1KT;AmDt7KD;;;;;;;;EAgGU,iBAAA;CnDg2KT;AmDh8KD;EAsGI,UAAA;EACA,iBAAA;CnD61KH;AmDn1KD;EACE,oBAAA;CnDq1KD;AmDt1KD;EAKI,iBAAA;EACA,mBAAA;CnDo1KH;AmD11KD;EASM,gBAAA;CnDo1KL;AmD71KD;EAcI,iBAAA;CnDk1KH;AmDh2KD;;EAkBM,8BAAA;CnDk1KL;AmDp2KD;EAuBI,cAAA;CnDg1KH;AmDv2KD;EAyBM,iCAAA;CnDi1KL;AmD10KD;EC1PE,sBAAA;CpDukLD;AoDrkLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDukLH;AoD1kLC;EAMI,0BAAA;CpDukLL;AoD7kLC;EASI,eAAA;EACA,0BAAA;CpDukLL;AoDpkLC;EAEI,6BAAA;CpDqkLL;AmDz1KD;EC7PE,sBAAA;CpDylLD;AoDvlLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDylLH;AoD5lLC;EAMI,0BAAA;CpDylLL;AoD/lLC;EASI,eAAA;EACA,0BAAA;CpDylLL;AoDtlLC;EAEI,6BAAA;CpDulLL;AmDx2KD;EChQE,sBAAA;CpD2mLD;AoDzmLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD2mLH;AoD9mLC;EAMI,0BAAA;CpD2mLL;AoDjnLC;EASI,eAAA;EACA,0BAAA;CpD2mLL;AoDxmLC;EAEI,6BAAA;CpDymLL;AmDv3KD;ECnQE,sBAAA;CpD6nLD;AoD3nLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD6nLH;AoDhoLC;EAMI,0BAAA;CpD6nLL;AoDnoLC;EASI,eAAA;EACA,0BAAA;CpD6nLL;AoD1nLC;EAEI,6BAAA;CpD2nLL;AmDt4KD;ECtQE,sBAAA;CpD+oLD;AoD7oLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD+oLH;AoDlpLC;EAMI,0BAAA;CpD+oLL;AoDrpLC;EASI,eAAA;EACA,0BAAA;CpD+oLL;AoD5oLC;EAEI,6BAAA;CpD6oLL;AmDr5KD;ECzQE,sBAAA;CpDiqLD;AoD/pLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDiqLH;AoDpqLC;EAMI,0BAAA;CpDiqLL;AoDvqLC;EASI,eAAA;EACA,0BAAA;CpDiqLL;AoD9pLC;EAEI,6BAAA;CpD+pLL;AqD/qLD;EACE,mBAAA;EACA,eAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;CrDirLD;AqDtrLD;;;;;EAYI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;CrDirLH;AqD5qLD;EACE,uBAAA;CrD8qLD;AqD1qLD;EACE,oBAAA;CrD4qLD;AsDvsLD;EACE,iBAAA;EACA,cAAA;EACA,oBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EjDwDA,wDAAA;EACQ,gDAAA;CLkpLT;AsDjtLD;EASI,mBAAA;EACA,kCAAA;CtD2sLH;AsDtsLD;EACE,cAAA;EACA,mBAAA;CtDwsLD;AsDtsLD;EACE,aAAA;EACA,mBAAA;CtDwsLD;AuD9tLD;EACE,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,6BAAA;EjCRA,aAAA;EAGA,0BAAA;CtBuuLD;AuD/tLC;;EAEE,eAAA;EACA,sBAAA;EACA,gBAAA;EjCfF,aAAA;EAGA,0BAAA;CtB+uLD;AuD3tLC;EACE,WAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA;EACA,yBAAA;CvD6tLH;AwDlvLD;EACE,iBAAA;CxDovLD;AwDhvLD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,kCAAA;EAIA,WAAA;CxD+uLD;AwD5uLC;EnD+GA,sCAAA;EACI,kCAAA;EACC,iCAAA;EACG,8BAAA;EAkER,oDAAA;EAEK,0CAAA;EACG,oCAAA;CL+jLT;AwDlvLC;EnD2GA,mCAAA;EACI,+BAAA;EACC,8BAAA;EACG,2BAAA;CL0oLT;AwDtvLD;EACE,mBAAA;EACA,iBAAA;CxDwvLD;AwDpvLD;EACE,mBAAA;EACA,YAAA;EACA,aAAA;CxDsvLD;AwDlvLD;EACE,mBAAA;EACA,0BAAA;EACA,0BAAA;EACA,qCAAA;EACA,mBAAA;EnDaA,iDAAA;EACQ,yCAAA;EmDZR,qCAAA;UAAA,6BAAA;EAEA,WAAA;CxDovLD;AwDhvLD;EACE,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,0BAAA;CxDkvLD;AwDhvLC;ElCrEA,WAAA;EAGA,yBAAA;CtBszLD;AwDnvLC;ElCtEA,aAAA;EAGA,0BAAA;CtB0zLD;AwDlvLD;EACE,cAAA;EACA,iCAAA;EACA,0BAAA;CxDovLD;AwDjvLD;EACE,iBAAA;CxDmvLD;AwD/uLD;EACE,UAAA;EACA,wBAAA;CxDivLD;AwD5uLD;EACE,mBAAA;EACA,cAAA;CxD8uLD;AwD1uLD;EACE,cAAA;EACA,kBAAA;EACA,8BAAA;CxD4uLD;AwD/uLD;EAQI,iBAAA;EACA,iBAAA;CxD0uLH;AwDnvLD;EAaI,kBAAA;CxDyuLH;AwDtvLD;EAiBI,eAAA;CxDwuLH;AwDnuLD;EACE,mBAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;CxDquLD;AwDntLD;EAZE;IACE,aAAA;IACA,kBAAA;GxDkuLD;EwDhuLD;InDvEA,kDAAA;IACQ,0CAAA;GL0yLP;EwD/tLD;IAAY,aAAA;GxDkuLX;CACF;AwD7tLD;EAFE;IAAY,aAAA;GxDmuLX;CACF;AyDl3LD;EACE,mBAAA;EACA,cAAA;EACA,eAAA;ECRA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;EDHA,gBAAA;EnCVA,WAAA;EAGA,yBAAA;CtBy4LD;AyD93LC;EnCdA,aAAA;EAGA,0BAAA;CtB64LD;AyDj4LC;EAAW,iBAAA;EAAmB,eAAA;CzDq4L/B;AyDp4LC;EAAW,iBAAA;EAAmB,eAAA;CzDw4L/B;AyDv4LC;EAAW,gBAAA;EAAmB,eAAA;CzD24L/B;AyD14LC;EAAW,kBAAA;EAAmB,eAAA;CzD84L/B;AyD14LD;EACE,iBAAA;EACA,iBAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,mBAAA;CzD44LD;AyDx4LD;EACE,mBAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;CzD04LD;AyDt4LC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,0BAAA;CzDw4LH;AyDt4LC;EACE,UAAA;EACA,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,0BAAA;CzDw4LH;AyDt4LC;EACE,UAAA;EACA,UAAA;EACA,oBAAA;EACA,wBAAA;EACA,0BAAA;CzDw4LH;AyDt4LC;EACE,SAAA;EACA,QAAA;EACA,iBAAA;EACA,4BAAA;EACA,4BAAA;CzDw4LH;AyDt4LC;EACE,SAAA;EACA,SAAA;EACA,iBAAA;EACA,4BAAA;EACA,2BAAA;CzDw4LH;AyDt4LC;EACE,OAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,6BAAA;CzDw4LH;AyDt4LC;EACE,OAAA;EACA,WAAA;EACA,iBAAA;EACA,wBAAA;EACA,6BAAA;CzDw4LH;AyDt4LC;EACE,OAAA;EACA,UAAA;EACA,iBAAA;EACA,wBAAA;EACA,6BAAA;CzDw4LH;A2Dr+LD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;EDXA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;ECAA,gBAAA;EAEA,0BAAA;EACA,qCAAA;UAAA,6BAAA;EACA,0BAAA;EACA,qCAAA;EACA,mBAAA;EtD8CA,kDAAA;EACQ,0CAAA;CLq8LT;A2Dh/LC;EAAY,kBAAA;C3Dm/Lb;A2Dl/LC;EAAY,kBAAA;C3Dq/Lb;A2Dp/LC;EAAY,iBAAA;C3Du/Lb;A2Dt/LC;EAAY,mBAAA;C3Dy/Lb;A2Dt/LD;EACE,UAAA;EACA,kBAAA;EACA,gBAAA;EACA,0BAAA;EACA,iCAAA;EACA,2BAAA;C3Dw/LD;A2Dr/LD;EACE,kBAAA;C3Du/LD;A2D/+LC;;EAEE,mBAAA;EACA,eAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;C3Di/LH;A2D9+LD;EACE,mBAAA;C3Dg/LD;A2D9+LD;EACE,mBAAA;EACA,YAAA;C3Dg/LD;A2D5+LC;EACE,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;EACA,sCAAA;EACA,cAAA;C3D8+LH;A2D7+LG;EACE,aAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;C3D++LL;A2D5+LC;EACE,SAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,4BAAA;EACA,wCAAA;C3D8+LH;A2D7+LG;EACE,aAAA;EACA,UAAA;EACA,cAAA;EACA,qBAAA;EACA,4BAAA;C3D++LL;A2D5+LC;EACE,UAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,yCAAA;EACA,WAAA;C3D8+LH;A2D7+LG;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;C3D++LL;A2D3+LC;EACE,SAAA;EACA,aAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,uCAAA;C3D6+LH;A2D5+LG;EACE,aAAA;EACA,WAAA;EACA,sBAAA;EACA,2BAAA;EACA,cAAA;C3D8+LL;A4DvmMD;EACE,mBAAA;C5DymMD;A4DtmMD;EACE,mBAAA;EACA,iBAAA;EACA,YAAA;C5DwmMD;A4D3mMD;EAMI,cAAA;EACA,mBAAA;EvD6KF,0CAAA;EACK,qCAAA;EACG,kCAAA;CL47LT;A4DlnMD;;EAcM,eAAA;C5DwmML;A4D9kMC;EAAA;IvDiKA,uDAAA;IAEK,6CAAA;IACG,uCAAA;IA7JR,oCAAA;IAEQ,4BAAA;IA+GR,4BAAA;IAEQ,oBAAA;GLi+LP;E4D5mMG;;IvDmHJ,2CAAA;IACQ,mCAAA;IuDjHF,QAAA;G5D+mML;E4D7mMG;;IvD8GJ,4CAAA;IACQ,oCAAA;IuD5GF,QAAA;G5DgnML;E4D9mMG;;;IvDyGJ,wCAAA;IACQ,gCAAA;IuDtGF,QAAA;G5DinML;CACF;A4DvpMD;;;EA6CI,eAAA;C5D+mMH;A4D5pMD;EAiDI,QAAA;C5D8mMH;A4D/pMD;;EAsDI,mBAAA;EACA,OAAA;EACA,YAAA;C5D6mMH;A4DrqMD;EA4DI,WAAA;C5D4mMH;A4DxqMD;EA+DI,YAAA;C5D4mMH;A4D3qMD;;EAmEI,QAAA;C5D4mMH;A4D/qMD;EAuEI,YAAA;C5D2mMH;A4DlrMD;EA0EI,WAAA;C5D2mMH;A4DnmMD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EtC9FA,aAAA;EAGA,0BAAA;EsC6FA,gBAAA;EACA,eAAA;EACA,mBAAA;EACA,0CAAA;C5DsmMD;A4DjmMC;EdlGE,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CssMH;A4DrmMC;EACE,WAAA;EACA,SAAA;EdvGA,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9C+sMH;A4DvmMC;;EAEE,WAAA;EACA,eAAA;EACA,sBAAA;EtCtHF,aAAA;EAGA,0BAAA;CtB8tMD;A4DxoMD;;;;EAsCI,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,WAAA;EACA,sBAAA;C5DwmMH;A4DlpMD;;EA8CI,UAAA;EACA,mBAAA;C5DwmMH;A4DvpMD;;EAmDI,WAAA;EACA,oBAAA;C5DwmMH;A4D5pMD;;EAwDI,YAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;C5DwmMH;A4DnmMG;EACE,iBAAA;C5DqmML;A4DjmMG;EACE,iBAAA;C5DmmML;A4DzlMD;EACE,mBAAA;EACA,aAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;C5D2lMD;A4DpmMD;EAYI,sBAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;EACA,oBAAA;EACA,gBAAA;EAWA,0BAAA;EACA,mCAAA;C5DilMH;A4DhnMD;EAkCI,UAAA;EACA,YAAA;EACA,aAAA;EACA,0BAAA;C5DilMH;A4D1kMD;EACE,mBAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,eAAA;EACA,mBAAA;EACA,0CAAA;C5D4kMD;A4D3kMC;EACE,kBAAA;C5D6kMH;A4DpiMD;EAhCE;;;;IAKI,YAAA;IACA,aAAA;IACA,kBAAA;IACA,gBAAA;G5DskMH;E4D9kMD;;IAYI,mBAAA;G5DskMH;E4DllMD;;IAgBI,oBAAA;G5DskMH;E4DjkMD;IACE,UAAA;IACA,WAAA;IACA,qBAAA;G5DmkMD;E4D/jMD;IACE,aAAA;G5DikMD;CACF;A6D/zMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,aAAA;EACA,eAAA;C7D61MH;A6D31MC;;;;;;;;;;;;;;;EACE,YAAA;C7D22MH;AiCn3MD;E6BRE,eAAA;EACA,kBAAA;EACA,mBAAA;C9D83MD;AiCr3MD;EACE,wBAAA;CjCu3MD;AiCr3MD;EACE,uBAAA;CjCu3MD;AiC/2MD;EACE,yBAAA;CjCi3MD;AiC/2MD;EACE,0BAAA;CjCi3MD;AiC/2MD;EACE,mBAAA;CjCi3MD;AiC/2MD;E8BzBE,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,8BAAA;EACA,UAAA;C/D24MD;AiC72MD;EACE,yBAAA;CjC+2MD;AiCx2MD;EACE,gBAAA;CjC02MD;AgE34MD;EACE,oBAAA;ChE64MD;AgEv4MD;;;;ECdE,yBAAA;CjE25MD;AgEt4MD;;;;;;;;;;;;EAYE,yBAAA;ChEw4MD;AgEj4MD;EAAA;IChDE,0BAAA;GjEq7MC;EiEp7MD;IAAU,0BAAA;GjEu7MT;EiEt7MD;IAAU,8BAAA;GjEy7MT;EiEx7MD;;IACU,+BAAA;GjE27MT;CACF;AgE34MD;EAAA;IAFI,0BAAA;GhEi5MD;CACF;AgE34MD;EAAA;IAFI,2BAAA;GhEi5MD;CACF;AgE34MD;EAAA;IAFI,iCAAA;GhEi5MD;CACF;AgE14MD;EAAA;ICrEE,0BAAA;GjEm9MC;EiEl9MD;IAAU,0BAAA;GjEq9MT;EiEp9MD;IAAU,8BAAA;GjEu9MT;EiEt9MD;;IACU,+BAAA;GjEy9MT;CACF;AgEp5MD;EAAA;IAFI,0BAAA;GhE05MD;CACF;AgEp5MD;EAAA;IAFI,2BAAA;GhE05MD;CACF;AgEp5MD;EAAA;IAFI,iCAAA;GhE05MD;CACF;AgEn5MD;EAAA;IC1FE,0BAAA;GjEi/MC;EiEh/MD;IAAU,0BAAA;GjEm/MT;EiEl/MD;IAAU,8BAAA;GjEq/MT;EiEp/MD;;IACU,+BAAA;GjEu/MT;CACF;AgE75MD;EAAA;IAFI,0BAAA;GhEm6MD;CACF;AgE75MD;EAAA;IAFI,2BAAA;GhEm6MD;CACF;AgE75MD;EAAA;IAFI,iCAAA;GhEm6MD;CACF;AgE55MD;EAAA;IC/GE,0BAAA;GjE+gNC;EiE9gND;IAAU,0BAAA;GjEihNT;EiEhhND;IAAU,8BAAA;GjEmhNT;EiElhND;;IACU,+BAAA;GjEqhNT;CACF;AgEt6MD;EAAA;IAFI,0BAAA;GhE46MD;CACF;AgEt6MD;EAAA;IAFI,2BAAA;GhE46MD;CACF;AgEt6MD;EAAA;IAFI,iCAAA;GhE46MD;CACF;AgEr6MD;EAAA;IC5HE,yBAAA;GjEqiNC;CACF;AgEr6MD;EAAA;ICjIE,yBAAA;GjE0iNC;CACF;AgEr6MD;EAAA;ICtIE,yBAAA;GjE+iNC;CACF;AgEr6MD;EAAA;IC3IE,yBAAA;GjEojNC;CACF;AgEl6MD;ECnJE,yBAAA;CjEwjND;AgE/5MD;EAAA;ICjKE,0BAAA;GjEokNC;EiEnkND;IAAU,0BAAA;GjEskNT;EiErkND;IAAU,8BAAA;GjEwkNT;EiEvkND;;IACU,+BAAA;GjE0kNT;CACF;AgE76MD;EACE,yBAAA;ChE+6MD;AgE16MD;EAAA;IAFI,0BAAA;GhEg7MD;CACF;AgE96MD;EACE,yBAAA;ChEg7MD;AgE36MD;EAAA;IAFI,2BAAA;GhEi7MD;CACF;AgE/6MD;EACE,yBAAA;ChEi7MD;AgE56MD;EAAA;IAFI,iCAAA;GhEk7MD;CACF;AgE36MD;EAAA;ICpLE,yBAAA;GjEmmNC;CACF","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    background: transparent !important;\n    color: #000 !important;\n    box-shadow: none !important;\n    text-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  background-color: #fcf8e3;\n  padding: .2em;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-left: 5px;\n  padding-right: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n  text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #ffffff;\n  background-color: #333333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: #333333;\n  background-color: #f5f5f5;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.row {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #dddddd;\n}\n.table .table {\n  background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #dddddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  min-width: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #ffffff;\n  background-image: none;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999999;\n}\n.form-control::-ms-expand {\n  border: 0;\n  background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n  min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  border-color: #3c763d;\n  background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  border-color: #8a6d3b;\n  background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  border-color: #a94442;\n  background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n    margin-bottom: 0;\n    padding-top: 7px;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 14.333333px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  white-space: nowrap;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  outline: 0;\n  background-image: none;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333333;\n  background-color: #ffffff;\n  border-color: #cccccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #ffffff;\n  border-color: #cccccc;\n}\n.btn-default .badge {\n  color: #ffffff;\n  background-color: #333333;\n}\n.btn-primary {\n  color: #ffffff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #ffffff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #ffffff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #ffffff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #ffffff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #ffffff;\n}\n.btn-success {\n  color: #ffffff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #ffffff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #ffffff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #ffffff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #ffffff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #ffffff;\n}\n.btn-info {\n  color: #ffffff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #ffffff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #ffffff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #ffffff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #ffffff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #ffffff;\n}\n.btn-warning {\n  color: #ffffff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #ffffff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #ffffff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #ffffff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #ffffff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #ffffff;\n}\n.btn-danger {\n  color: #ffffff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #ffffff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #ffffff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #ffffff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #ffffff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #ffffff;\n}\n.btn-link {\n  color: #337ab7;\n  font-weight: normal;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  font-size: 14px;\n  text-align: left;\n  background-color: #ffffff;\n  border: 1px solid #cccccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  text-decoration: none;\n  color: #262626;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #ffffff;\n  text-decoration: none;\n  outline: 0;\n  background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  cursor: not-allowed;\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  left: auto;\n  right: 0;\n}\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n  content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    left: auto;\n    right: 0;\n  }\n  .navbar-right .dropdown-menu-left {\n    left: 0;\n    right: auto;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-bottom-left-radius: 4px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  float: none;\n  display: table-cell;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  margin-bottom: 0;\n  padding-left: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  background-color: transparent;\n  cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-bottom-color: transparent;\n  cursor: default;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #dddddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #ffffff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #ffffff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #dddddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #ffffff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: 15px;\n  padding-left: 15px;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n  height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: 15px;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  margin-left: -15px;\n  margin-right: -15px;\n  padding: 10px 15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-left: 15px;\n    margin-right: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #cccccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  background-color: #e7e7e7;\n  color: #555555;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #cccccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333333;\n}\n.navbar-default .btn-link {\n  color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #cccccc;\n}\n.navbar-inverse {\n  background-color: #222222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #ffffff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #ffffff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #ffffff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  background-color: #080808;\n  color: #ffffff;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #ffffff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #ffffff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #ffffff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #ffffff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  content: \"/\\00a0\";\n  padding: 0 5px;\n  color: #cccccc;\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  line-height: 1.42857143;\n  text-decoration: none;\n  color: #337ab7;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-bottom-left-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-bottom-right-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #dddddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #ffffff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n  cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  background-color: #ffffff;\n  border-color: #dddddd;\n  cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-bottom-left-radius: 6px;\n  border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-bottom-right-radius: 6px;\n  border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-bottom-left-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-bottom-right-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  list-style: none;\n  text-align: center;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  background-color: #ffffff;\n  cursor: not-allowed;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #ffffff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #ffffff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  color: #ffffff;\n  line-height: 1;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #ffffff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #ffffff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-left: 60px;\n    padding-right: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-left: auto;\n  margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n  color: #3c763d;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n  color: #31708f;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n  color: #8a6d3b;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n  color: #a94442;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  overflow: hidden;\n  height: 20px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #ffffff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  margin-bottom: 20px;\n  padding-left: 0;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  text-decoration: none;\n  color: #555555;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  background-color: #eeeeee;\n  color: #777777;\n  cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #ffffff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #ffffff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #dddddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-left-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #dddddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  border: 0;\n  margin-bottom: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n  border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #dddddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #dddddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #ffffff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #ffffff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  height: 100%;\n  width: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000000;\n  text-shadow: 0 1px 0 #ffffff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n  color: #000000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #ffffff;\n  border: 1px solid #999999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  background-clip: padding-box;\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n  min-height: 16.42857143px;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-left: 5px;\n  margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 12px;\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.tooltip.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.tooltip.top {\n  margin-top: -3px;\n  padding: 5px 0;\n}\n.tooltip.right {\n  margin-left: 3px;\n  padding: 0 5px;\n}\n.tooltip.bottom {\n  margin-top: 3px;\n  padding: 5px 0;\n}\n.tooltip.left {\n  margin-left: -3px;\n  padding: 0 5px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #ffffff;\n  text-align: center;\n  background-color: #000000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  right: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 14px;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid #cccccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  margin: 0;\n  padding: 8px 14px;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n.popover.top > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-width: 0;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  bottom: -11px;\n}\n.popover.top > .arrow:after {\n  content: \" \";\n  bottom: 1px;\n  margin-left: -10px;\n  border-bottom-width: 0;\n  border-top-color: #ffffff;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-left-width: 0;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n  content: \" \";\n  left: 1px;\n  bottom: -10px;\n  border-left-width: 0;\n  border-right-color: #ffffff;\n}\n.popover.bottom > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.popover.bottom > .arrow:after {\n  content: \" \";\n  top: 1px;\n  margin-left: -10px;\n  border-top-width: 0;\n  border-bottom-color: #ffffff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  content: \" \";\n  right: 1px;\n  border-right-width: 0;\n  border-left-color: #ffffff;\n  bottom: -10px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.carousel-inner > .item {\n  display: none;\n  position: relative;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -moz-transition: -moz-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    -moz-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    -moz-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: 15%;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  font-size: 20px;\n  color: #ffffff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n  left: auto;\n  right: 0;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  outline: 0;\n  color: #ffffff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  margin-top: -10px;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  line-height: 1;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  border: 1px solid #ffffff;\n  border-radius: 10px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n  margin: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #ffffff;\n}\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #ffffff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -15px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -15px;\n  }\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  content: \" \";\n  display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n//    without disabling user zoom.\n//\n\nhtml {\n  font-family: sans-serif; // 1\n  -ms-text-size-adjust: 100%; // 2\n  -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n  margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; // 1\n  vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n  background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n  outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n  font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n  font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n  border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n  margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n  overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n//    Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; // 1\n  font: inherit; // 2\n  margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n  overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n//    and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n//    `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n  cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n  line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; // 1\n  padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; // 1\n  box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n  border: 0; // 1\n  padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n  overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n  font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n    *,\n    *:before,\n    *:after {\n        background: transparent !important;\n        color: #000 !important; // Black prints faster: h5bp.com/s\n        box-shadow: none !important;\n        text-shadow: none !important;\n    }\n\n    a,\n    a:visited {\n        text-decoration: underline;\n    }\n\n    a[href]:after {\n        content: \" (\" attr(href) \")\";\n    }\n\n    abbr[title]:after {\n        content: \" (\" attr(title) \")\";\n    }\n\n    // Don't show links that are fragment identifiers,\n    // or use the `javascript:` pseudo protocol\n    a[href^=\"#\"]:after,\n    a[href^=\"javascript:\"]:after {\n        content: \"\";\n    }\n\n    pre,\n    blockquote {\n        border: 1px solid #999;\n        page-break-inside: avoid;\n    }\n\n    thead {\n        display: table-header-group; // h5bp.com/t\n    }\n\n    tr,\n    img {\n        page-break-inside: avoid;\n    }\n\n    img {\n        max-width: 100% !important;\n    }\n\n    p,\n    h2,\n    h3 {\n        orphans: 3;\n        widows: 3;\n    }\n\n    h2,\n    h3 {\n        page-break-after: avoid;\n    }\n\n    // Bootstrap specific changes start\n\n    // Bootstrap components\n    .navbar {\n        display: none;\n    }\n    .btn,\n    .dropup > .btn {\n        > .caret {\n            border-top-color: #000 !important;\n        }\n    }\n    .label {\n        border: 1px solid #000;\n    }\n\n    .table {\n        border-collapse: collapse !important;\n\n        td,\n        th {\n            background-color: #fff !important;\n        }\n    }\n    .table-bordered {\n        th,\n        td {\n            border: 1px solid #ddd !important;\n        }\n    }\n\n    // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('@{icon-font-path}@{icon-font-name}.eot');\n  src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n       url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n       url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n       url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n       url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\2a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur                    { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n.glyphicon-cd                     { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file              { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file              { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up               { &:before { content: \"\\e204\"; } }\n.glyphicon-copy                   { &:before { content: \"\\e205\"; } }\n.glyphicon-paste                  { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door                   { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key                    { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert                  { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer              { &:before { content: \"\\e210\"; } }\n.glyphicon-king                   { &:before { content: \"\\e211\"; } }\n.glyphicon-queen                  { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn                   { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop                 { &:before { content: \"\\e214\"; } }\n.glyphicon-knight                 { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula           { &:before { content: \"\\e216\"; } }\n.glyphicon-tent                   { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard             { &:before { content: \"\\e218\"; } }\n.glyphicon-bed                    { &:before { content: \"\\e219\"; } }\n.glyphicon-apple                  { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase                  { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass              { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp                   { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate              { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank             { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors               { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin                { &:before { content: \"\\e227\"; } }\n.glyphicon-btc                    { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt                    { &:before { content: \"\\e227\"; } }\n.glyphicon-yen                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble                  { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub                    { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale                  { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly              { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted       { &:before { content: \"\\e232\"; } }\n.glyphicon-education              { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal      { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical        { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger         { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window           { &:before { content: \"\\e237\"; } }\n.glyphicon-oil                    { &:before { content: \"\\e238\"; } }\n.glyphicon-grain                  { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses             { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size              { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color             { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background        { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top       { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom    { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left      { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical  { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right     { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right         { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left          { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom        { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top           { &:before { content: \"\\e253\"; } }\n.glyphicon-console                { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript            { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript              { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left              { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right             { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down              { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up                { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n  .box-sizing(border-box);\n}\n*:before,\n*:after {\n  .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n  font-family: @font-family-base;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @text-color;\n  background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n\n// Links\n\na {\n  color: @link-color;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n  }\n\n  &:focus {\n    .tab-focus();\n  }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n  margin: 0;\n}\n\n\n// Images\n\nimg {\n  vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n  .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n  border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n  padding: @thumbnail-padding;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  // Keep them at most 100% wide\n  .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n  border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n  margin-top:    @line-height-computed;\n  margin-bottom: @line-height-computed;\n  border: 0;\n  border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0,0,0,0);\n  border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n  &:active,\n  &:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    clip: auto;\n  }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n  cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n  // Default\n  outline: thin dotted;\n  // WebKit\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and (   min--moz-device-pixel-ratio: 2),\n  only screen and (     -o-min-device-pixel-ratio: 2/1),\n  only screen and (        min-device-pixel-ratio: 2),\n  only screen and (                min-resolution: 192dpi),\n  only screen and (                min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 300;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n  font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n  background-color: @state-warning-bg;\n  padding: .2em;\n}\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n.text-nowrap         { white-space: nowrap; }\n\n// Transformation\n.text-lowercase      { text-transform: lowercase; }\n.text-uppercase      { text-transform: uppercase; }\n.text-capitalize     { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n  dd {\n    &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n  }\n\n  @media (min-width: @dl-horizontal-breakpoint) {\n    dt {\n      float: left;\n      width: (@dl-horizontal-offset - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @dl-horizontal-offset;\n    }\n  }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n  font-size: 90%;\n  .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover,\n  a&:focus {\n    color: darken(@color, 10%);\n  }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover,\n  a&:focus {\n    background-color: darken(@color, 10%);\n  }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n  kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: bold;\n    box-shadow: none;\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-left:  ceil((@gutter / -2));\n  margin-right: floor((@gutter / -2));\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n  left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n  right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-left:  ceil((@grid-gutter-width / 2));\n      padding-right: floor((@grid-gutter-width / 2));\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n  .col-@{class}-push-0 {\n    left: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n  .col-@{class}-pull-0 {\n    right: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  background-color: @table-bg;\n}\ncaption {\n  padding-top: @table-cell-padding;\n  padding-bottom: @table-cell-padding;\n  color: @text-muted;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(odd) {\n    background-color: @table-bg-accent;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    background-color: @table-bg-hover;\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n  @media screen and (max-width: @screen-xs-max) {\n    width: 100%;\n    margin-bottom: (@line-height-computed * 0.75);\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      background-color: @background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.@{state}:hover,\n    > th.@{state}:hover,\n    &.@{state}:hover > td,\n    &:hover > .@{state},\n    &.@{state}:hover > th {\n      background-color: darken(@background, 5%);\n    }\n  }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; // IE8-9\n  line-height: normal;\n}\n\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Unstyle the caret on `<select>`s in IE10+.\n  &::-ms-expand {\n    border: 0;\n    background-color: transparent;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n  }\n\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 8.3, iOS doesn't support `datetime` or `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    &.form-control {\n      line-height: @input-height-base;\n    }\n\n    &.input-sm,\n    .input-group-sm & {\n      line-height: @input-height-small;\n    }\n\n    &.input-lg,\n    .input-group-lg & {\n      line-height: @input-height-large;\n    }\n  }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n\n  label {\n    min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n    padding-left: 20px;\n    margin-bottom: 0;\n    font-weight: normal;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  &[disabled],\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n  &.disabled,\n  fieldset[disabled] & {\n    label {\n      cursor: @cursor-disabled;\n    }\n  }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  // Size it appropriately next to real form controls\n  padding-top: (@padding-base-vertical + 1);\n  padding-bottom: (@padding-base-vertical + 1);\n  // Remove default margin from `p`\n  margin-bottom: 0;\n  min-height: (@line-height-computed + @font-size-base);\n\n  &.input-lg,\n  &.input-sm {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n  .form-control {\n    height: @input-height-small;\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n    border-radius: @input-border-radius-small;\n  }\n  select.form-control {\n    height: @input-height-small;\n    line-height: @input-height-small;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-small;\n    min-height: (@line-height-computed + @font-size-small);\n    padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n  }\n}\n\n.input-lg {\n  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n  .form-control {\n    height: @input-height-large;\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n    border-radius: @input-border-radius-large;\n  }\n  select.form-control {\n    height: @input-height-large;\n    line-height: @input-height-large;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-large;\n    min-height: (@line-height-computed + @font-size-large);\n    padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n  }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: (@input-height-base * 1.25);\n  }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2; // Ensure icon is above input groups\n  display: block;\n  width: @input-height-base;\n  height: @input-height-base;\n  line-height: @input-height-base;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: @input-height-large;\n  height: @input-height-large;\n  line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: @input-height-small;\n  height: @input-height-small;\n  line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n  & ~ .form-control-feedback {\n    top: (@line-height-computed + 5); // Height of the `label` and its margin\n  }\n  &.sr-only ~ .form-control-feedback {\n    top: 0;\n  }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n  // Kick in the inline\n  @media (min-width: @screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n\n    // Make static controls behave like regular ones\n    .form-control-static {\n      display: inline-block;\n    }\n\n    .input-group {\n      display: inline-table;\n      vertical-align: middle;\n\n      .input-group-addon,\n      .input-group-btn,\n      .form-control {\n        width: auto;\n      }\n    }\n\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match.\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      vertical-align: middle;\n\n      label {\n        padding-left: 0;\n      }\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      position: relative;\n      margin-left: 0;\n    }\n\n    // Re-override the feedback icon.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of radios and checkboxes\n  //\n  // Labels also get some reset styles, but that is scoped to a media query below.\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: (@line-height-computed + (@padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    .make-row();\n  }\n\n  // Reset spacing and right align labels, but scope to media queries so that\n  // labels on narrow viewports stack the same as a default form example.\n  @media (min-width: @screen-sm-min) {\n    .control-label {\n      text-align: right;\n      margin-bottom: 0;\n      padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    right: floor((@grid-gutter-width / 2));\n  }\n\n  // Form group sizes\n  //\n  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n  // inputs and labels within a `.form-group`.\n  .form-group-lg {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n        font-size: @font-size-large;\n      }\n    }\n  }\n  .form-group-sm {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-small-vertical + 1);\n        font-size: @font-size-small;\n      }\n    }\n  }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n  // Color the label and help text\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  &.radio label,\n  &.checkbox label,\n  &.radio-inline label,\n  &.checkbox-inline label  {\n    color: @text-color;\n  }\n  // Set the border and box shadow on specific inputs to match\n  .form-control {\n    border-color: @border-color;\n    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n    &:focus {\n      border-color: darken(@border-color, 10%);\n      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n      .box-shadow(@shadow);\n    }\n  }\n  // Set validation states also for addons\n  .input-group-addon {\n    color: @text-color;\n    border-color: @border-color;\n    background-color: @background-color;\n  }\n  // Optional feedback icon\n  .form-control-feedback {\n    color: @text-color;\n  }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n  &:focus {\n    border-color: @color;\n    outline: 0;\n    .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n  }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  height: @input-height;\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n\n  select& {\n    height: @input-height;\n    line-height: @input-height;\n  }\n\n  textarea&,\n  select[multiple]& {\n    height: auto;\n  }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  white-space: nowrap;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus,\n    &.focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus,\n  &.focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n    .opacity(.65);\n    .box-shadow(none);\n  }\n\n  a& {\n    &.disabled,\n    fieldset[disabled] & {\n      pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n    }\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: @link-color;\n  font-weight: normal;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &.active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:focus,\n  &.focus {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 25%);\n  }\n  &:hover {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n\n    &:hover,\n    &:focus,\n    &.focus {\n      color: @color;\n      background-color: darken(@background, 17%);\n          border-color: darken(@border, 25%);\n    }\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    background-image: none;\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &.focus,\n    &:active,\n    &.active {\n      background-color: @background;\n          border-color: @border;\n    }\n  }\n\n  .badge {\n    color: @background;\n    background-color: @color;\n  }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n  opacity: @opacity;\n  // IE8 filter\n  @opacity-ie: (@opacity * 100);\n  filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n\n  &.in      { display: block; }\n  tr&.in    { display: table-row; }\n  tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition-property(~\"height, visibility\");\n  .transition-duration(.35s);\n  .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   @caret-width-base dashed;\n  border-top:   @caret-width-base solid ~\"\\9\"; // IE8\n  border-right: @caret-width-base solid transparent;\n  border-left:  @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: @font-size-base;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  background-color: @dropdown-bg;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @dropdown-link-hover-color;\n    background-color: @dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: @dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n\n  // Nuke hover/focus effects\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n    cursor: @cursor-disabled;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  left: auto; // Reset the default from `.dropdown-menu`\n  right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    border-top: 0;\n    border-bottom: @caret-width-base dashed;\n    border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 2px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n  height: 1px;\n  margin: ((@line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn,\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    border-top-right-radius: @btn-border-radius-base;\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    border-bottom-left-radius: @btn-border-radius-base;\n    .border-top-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n\n  > .btn-group .dropdown-menu {\n    left: auto;\n  }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n  > .btn,\n  > .btn-group > .btn {\n    input[type=\"radio\"],\n    input[type=\"checkbox\"] {\n      position: absolute;\n      clip: rect(0,0,0,0);\n      pointer-events: none;\n    }\n  }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n  border-top-right-radius: @radius;\n   border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n  border-bottom-right-radius: @radius;\n     border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n  border-bottom-right-radius: @radius;\n   border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n  border-bottom-left-radius: @radius;\n     border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @input-border-radius;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @input-border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @input-border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      z-index: 2;\n      margin-left: -1px;\n    }\n  }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  margin-bottom: 0;\n  padding-left: 0; // Override default ul/ol\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        background-color: transparent;\n        cursor: @cursor-disabled;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n        cursor: default;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n    > a {\n      text-align: center;\n      margin-bottom: 5px;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: @navbar-padding-horizontal;\n  padding-left:  @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  .navbar-collapse {\n    max-height: @navbar-collapse-max-height;\n\n    @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n      max-height: 200px;\n    }\n  }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left:  -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left:  0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n  height: @navbar-height;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  > img {\n    display: block;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: @navbar-padding-horizontal;\n  padding: 9px 10px;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: 0;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top:    10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top:    @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n  }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  margin-left: -@navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  padding: 10px @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    .box-shadow(none);\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  .border-top-radius(@navbar-border-radius);\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-left: @navbar-padding-horizontal;\n    margin-right: @navbar-padding-horizontal;\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right {\n    .pull-right();\n    margin-right: -@navbar-padding-horizontal;\n\n    ~ .navbar-right {\n      margin-right: 0;\n    }\n  }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n  // Dropdown menu items\n  .navbar-nav {\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-default-link-active-bg;\n        color: @navbar-default-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-default-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n      }\n    }\n  }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  // Dropdowns\n  .navbar-nav {\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-inverse-link-active-bg;\n        color: @navbar-inverse-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-inverse-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n      }\n    }\n  }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n  margin-top: ((@navbar-height - @element-height) / 2);\n  margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: @breadcrumb-color;\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      line-height: @line-height-base;\n      text-decoration: none;\n      color: @pagination-color;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n      margin-left: -1px;\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > li > a,\n  > li > span {\n    &:hover,\n    &:focus {\n      z-index: 2;\n      color: @pagination-hover-color;\n      background-color: @pagination-hover-bg;\n      border-color: @pagination-hover-border;\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 3;\n      color: @pagination-active-color;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n      cursor: default;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n      cursor: @cursor-disabled;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: @padding-vertical @padding-horizontal;\n      font-size: @font-size;\n      line-height: @line-height;\n    }\n    &:first-child {\n      > a,\n      > span {\n        .border-left-radius(@border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius);\n      }\n    }\n  }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  list-style: none;\n  text-align: center;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      background-color: @pager-bg;\n      cursor: @cursor-disabled;\n    }\n  }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n  background-color: @color;\n\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken(@color, 10%);\n    }\n  }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  color: @badge-color;\n  line-height: @badge-line-height;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n\n  .btn-xs &,\n  .btn-group-xs > .btn & {\n    top: 0;\n    padding: 1px 5px;\n  }\n\n  // Hover state, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @badge-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Account for badges in navs\n  .list-group-item.active > &,\n  .nav-pills > .active > a > & {\n    color: @badge-active-color;\n    background-color: @badge-active-bg;\n  }\n\n  .list-group-item > & {\n    float: right;\n  }\n\n  .list-group-item > & + & {\n    margin-right: 5px;\n  }\n\n  .nav-pills > li > a > & {\n    margin-left: 3px;\n  }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding-top:    @jumbotron-padding;\n  padding-bottom: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  > hr {\n    border-top-color: darken(@jumbotron-bg, 10%);\n  }\n\n  .container &,\n  .container-fluid & {\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top:    (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container &,\n    .container-fluid & {\n      padding-left:  (@jumbotron-padding * 2);\n      padding-right: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: @jumbotron-heading-font-size;\n    }\n  }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(border .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing @headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n  padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n  background-color: @background;\n  border-color: @border;\n  color: @text-color;\n\n  hr {\n    border-top-color: darken(@border, 5%);\n  }\n  .alert-link {\n    color: darken(@text-color, 10%);\n  }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  overflow: hidden;\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  background-color: @progress-bg;\n  border-radius: @progress-border-radius;\n  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n  background-color: @color;\n\n  // Deprecated parent class requirement as of v3.2.0\n  .progress-striped & {\n    #gradient > .striped();\n  }\n}\n",".media {\n  // Proper spacing between instances of .media\n  margin-top: 15px;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n\n.media-body {\n  width: 10000px;\n}\n\n.media-object {\n  display: block;\n\n  // Fix collapse in webkit from max-width: 100% and display: table-cell.\n  &.img-thumbnail {\n    max-width: none;\n  }\n}\n\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n\n.media-middle {\n  vertical-align: middle;\n}\n\n.media-bottom {\n  vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // No need to set list-style: none; since .list-group-item is block level\n  margin-bottom: 20px;\n  padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  // Place the border on the list items and negative margin up for better styling\n  margin-bottom: -1px;\n  background-color: @list-group-bg;\n  border: 1px solid @list-group-border;\n\n  // Round the first and last items\n  &:first-child {\n    .border-top-radius(@list-group-border-radius);\n  }\n  &:last-child {\n    margin-bottom: 0;\n    .border-bottom-radius(@list-group-border-radius);\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n  color: @list-group-link-color;\n\n  .list-group-item-heading {\n    color: @list-group-link-heading-color;\n  }\n\n  // Hover state\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @list-group-link-hover-color;\n    background-color: @list-group-hover-bg;\n  }\n}\n\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n\n.list-group-item {\n  // Disabled state\n  &.disabled,\n  &.disabled:hover,\n  &.disabled:focus {\n    background-color: @list-group-disabled-bg;\n    color: @list-group-disabled-color;\n    cursor: @cursor-disabled;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-disabled-text-color;\n    }\n  }\n\n  // Active class on item itself, not parent\n  &.active,\n  &.active:hover,\n  &.active:focus {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: @list-group-active-color;\n    background-color: @list-group-active-bg;\n    border-color: @list-group-active-border;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading,\n    .list-group-item-heading > small,\n    .list-group-item-heading > .small {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-active-text-color;\n    }\n  }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n  .list-group-item-@{state} {\n    color: @color;\n    background-color: @background;\n\n    a&,\n    button& {\n      color: @color;\n\n      .list-group-item-heading {\n        color: inherit;\n      }\n\n      &:hover,\n      &:focus {\n        color: @color;\n        background-color: darken(@background, 5%);\n      }\n      &.active,\n      &.active:hover,\n      &.active:focus {\n        color: #fff;\n        background-color: @color;\n        border-color: @color;\n      }\n    }\n  }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n  margin-bottom: @line-height-computed;\n  background-color: @panel-bg;\n  border: 1px solid transparent;\n  border-radius: @panel-border-radius;\n  .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n  padding: @panel-body-padding;\n  &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n  padding: @panel-heading-padding;\n  border-bottom: 1px solid transparent;\n  .border-top-radius((@panel-border-radius - 1));\n\n  > .dropdown .dropdown-toggle {\n    color: inherit;\n  }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: ceil((@font-size-base * 1.125));\n  color: inherit;\n\n  > a,\n  > small,\n  > .small,\n  > small > a,\n  > .small > a {\n    color: inherit;\n  }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n  padding: @panel-footer-padding;\n  background-color: @panel-footer-bg;\n  border-top: 1px solid @panel-inner-border;\n  .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n  > .list-group,\n  > .panel-collapse > .list-group {\n    margin-bottom: 0;\n\n    .list-group-item {\n      border-width: 1px 0;\n      border-radius: 0;\n    }\n\n    // Add border top radius for first one\n    &:first-child {\n      .list-group-item:first-child {\n        border-top: 0;\n        .border-top-radius((@panel-border-radius - 1));\n      }\n    }\n\n    // Add border bottom radius for last one\n    &:last-child {\n      .list-group-item:last-child {\n        border-bottom: 0;\n        .border-bottom-radius((@panel-border-radius - 1));\n      }\n    }\n  }\n  > .panel-heading + .panel-collapse > .list-group {\n    .list-group-item:first-child {\n      .border-top-radius(0);\n    }\n  }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n  .list-group-item:first-child {\n    border-top-width: 0;\n  }\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n  > .table,\n  > .table-responsive > .table,\n  > .panel-collapse > .table {\n    margin-bottom: 0;\n\n    caption {\n      padding-left: @panel-body-padding;\n      padding-right: @panel-body-padding;\n    }\n  }\n  // Add border top radius for first one\n  > .table:first-child,\n  > .table-responsive:first-child > .table:first-child {\n    .border-top-radius((@panel-border-radius - 1));\n\n    > thead:first-child,\n    > tbody:first-child {\n      > tr:first-child {\n        border-top-left-radius: (@panel-border-radius - 1);\n        border-top-right-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-top-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-top-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  // Add border bottom radius for last one\n  > .table:last-child,\n  > .table-responsive:last-child > .table:last-child {\n    .border-bottom-radius((@panel-border-radius - 1));\n\n    > tbody:last-child,\n    > tfoot:last-child {\n      > tr:last-child {\n        border-bottom-left-radius: (@panel-border-radius - 1);\n        border-bottom-right-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-bottom-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-bottom-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  > .panel-body + .table,\n  > .panel-body + .table-responsive,\n  > .table + .panel-body,\n  > .table-responsive + .panel-body {\n    border-top: 1px solid @table-border-color;\n  }\n  > .table > tbody:first-child > tr:first-child th,\n  > .table > tbody:first-child > tr:first-child td {\n    border-top: 0;\n  }\n  > .table-bordered,\n  > .table-responsive > .table-bordered {\n    border: 0;\n    > thead,\n    > tbody,\n    > tfoot {\n      > tr {\n        > th:first-child,\n        > td:first-child {\n          border-left: 0;\n        }\n        > th:last-child,\n        > td:last-child {\n          border-right: 0;\n        }\n      }\n    }\n    > thead,\n    > tbody {\n      > tr:first-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n    > tbody,\n    > tfoot {\n      > tr:last-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n  }\n  > .table-responsive {\n    border: 0;\n    margin-bottom: 0;\n  }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n  margin-bottom: @line-height-computed;\n\n  // Tighten up margin so it's only between panels\n  .panel {\n    margin-bottom: 0;\n    border-radius: @panel-border-radius;\n\n    + .panel {\n      margin-top: 5px;\n    }\n  }\n\n  .panel-heading {\n    border-bottom: 0;\n\n    + .panel-collapse > .panel-body,\n    + .panel-collapse > .list-group {\n      border-top: 1px solid @panel-inner-border;\n    }\n  }\n\n  .panel-footer {\n    border-top: 0;\n    + .panel-collapse .panel-body {\n      border-bottom: 1px solid @panel-inner-border;\n    }\n  }\n}\n\n\n// Contextual variations\n.panel-default {\n  .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n  .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n  .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n  .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n  .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n  .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n  border-color: @border;\n\n  & > .panel-heading {\n    color: @heading-text-color;\n    background-color: @heading-bg-color;\n    border-color: @heading-border;\n\n    + .panel-collapse > .panel-body {\n      border-top-color: @border;\n    }\n    .badge {\n      color: @heading-bg-color;\n      background-color: @heading-text-color;\n    }\n  }\n  & > .panel-footer {\n    + .panel-collapse > .panel-body {\n      border-bottom-color: @border;\n    }\n  }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n\n  .embed-responsive-item,\n  iframe,\n  embed,\n  object,\n  video {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    height: 100%;\n    width: 100%;\n    border: 0;\n  }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: @well-bg;\n  border: 1px solid @well-border;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n  blockquote {\n    border-color: #ddd;\n    border-color: rgba(0,0,0,.15);\n  }\n}\n\n// Sizes\n.well-lg {\n  padding: 24px;\n  border-radius: @border-radius-large;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: (@font-size-base * 1.5);\n  font-weight: @close-font-weight;\n  line-height: 1;\n  color: @close-color;\n  text-shadow: @close-text-shadow;\n  .opacity(.2);\n\n  &:hover,\n  &:focus {\n    color: @close-color;\n    text-decoration: none;\n    cursor: pointer;\n    .opacity(.5);\n  }\n\n  // Additional properties for button version\n  // iOS requires the button element instead of an anchor tag.\n  // If you want the anchor version, it requires `href=\"#\"`.\n  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n  button& {\n    padding: 0;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    -webkit-appearance: none;\n  }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n  overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal;\n  -webkit-overflow-scrolling: touch;\n\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n\n  // When fading in the modal, animate it to slide down\n  &.fade .modal-dialog {\n    .translate(0, -25%);\n    .transition-transform(~\"0.3s ease-out\");\n  }\n  &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  background-color: @modal-content-bg;\n  border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n  border: 1px solid @modal-content-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 3px 9px rgba(0,0,0,.5));\n  background-clip: padding-box;\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal-background;\n  background-color: @modal-backdrop-bg;\n  // Fade for backdrop\n  &.fade { .opacity(0); }\n  &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  padding: @modal-title-padding;\n  border-bottom: 1px solid @modal-header-border-color;\n  min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n  margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n  margin: 0;\n  line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  padding: @modal-inner-padding;\n  text-align: right; // right align buttons\n  border-top: 1px solid @modal-footer-border-color;\n  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n  // Properly space out buttons\n  .btn + .btn {\n    margin-left: 5px;\n    margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n  }\n  // but override that for button groups\n  .btn-group .btn + .btn {\n    margin-left: -1px;\n  }\n  // and override it for block buttons as well\n  .btn-block + .btn-block {\n    margin-left: 0;\n  }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    width: @modal-md;\n    margin: 30px auto;\n  }\n  .modal-content {\n    .box-shadow(0 5px 15px rgba(0,0,0,.5));\n  }\n\n  // Modal sizes\n  .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n  .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n  position: absolute;\n  z-index: @zindex-tooltip;\n  display: block;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-small;\n\n  .opacity(0);\n\n  &.in     { .opacity(@tooltip-opacity); }\n  &.top    { margin-top:  -3px; padding: @tooltip-arrow-width 0; }\n  &.right  { margin-left:  3px; padding: 0 @tooltip-arrow-width; }\n  &.bottom { margin-top:   3px; padding: @tooltip-arrow-width 0; }\n  &.left   { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: @tooltip-max-width;\n  padding: 3px 8px;\n  color: @tooltip-color;\n  text-align: center;\n  background-color: @tooltip-bg;\n  border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n  &.top .tooltip-arrow {\n    bottom: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-left .tooltip-arrow {\n    bottom: 0;\n    right: @tooltip-arrow-width;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-right .tooltip-arrow {\n    bottom: 0;\n    left: @tooltip-arrow-width;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.right .tooltip-arrow {\n    top: 50%;\n    left: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-right-color: @tooltip-arrow-color;\n  }\n  &.left .tooltip-arrow {\n    top: 50%;\n    right: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-left-color: @tooltip-arrow-color;\n  }\n  &.bottom .tooltip-arrow {\n    top: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-left .tooltip-arrow {\n    top: 0;\n    right: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-right .tooltip-arrow {\n    top: 0;\n    left: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n}\n",".reset-text() {\n  font-family: @font-family-base;\n  // We deliberately do NOT reset font-size.\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: @line-height-base;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: @zindex-popover;\n  display: none;\n  max-width: @popover-max-width;\n  padding: 1px;\n  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-base;\n\n  background-color: @popover-bg;\n  background-clip: padding-box;\n  border: 1px solid @popover-fallback-border-color;\n  border: 1px solid @popover-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n  // Offset the popover to account for the popover arrow\n  &.top     { margin-top: -@popover-arrow-width; }\n  &.right   { margin-left: @popover-arrow-width; }\n  &.bottom  { margin-top: @popover-arrow-width; }\n  &.left    { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n  margin: 0; // reset heading margin\n  padding: 8px 14px;\n  font-size: @font-size-base;\n  background-color: @popover-title-bg;\n  border-bottom: 1px solid darken(@popover-title-bg, 5%);\n  border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n  &,\n  &:after {\n    position: absolute;\n    display: block;\n    width: 0;\n    height: 0;\n    border-color: transparent;\n    border-style: solid;\n  }\n}\n.popover > .arrow {\n  border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n  border-width: @popover-arrow-width;\n  content: \"\";\n}\n\n.popover {\n  &.top > .arrow {\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-bottom-width: 0;\n    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-top-color: @popover-arrow-outer-color;\n    bottom: -@popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      bottom: 1px;\n      margin-left: -@popover-arrow-width;\n      border-bottom-width: 0;\n      border-top-color: @popover-arrow-color;\n    }\n  }\n  &.right > .arrow {\n    top: 50%;\n    left: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-left-width: 0;\n    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-right-color: @popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      left: 1px;\n      bottom: -@popover-arrow-width;\n      border-left-width: 0;\n      border-right-color: @popover-arrow-color;\n    }\n  }\n  &.bottom > .arrow {\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-top-width: 0;\n    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-bottom-color: @popover-arrow-outer-color;\n    top: -@popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      top: 1px;\n      margin-left: -@popover-arrow-width;\n      border-top-width: 0;\n      border-bottom-color: @popover-arrow-color;\n    }\n  }\n\n  &.left > .arrow {\n    top: 50%;\n    right: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-right-width: 0;\n    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-left-color: @popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      right: 1px;\n      border-right-width: 0;\n      border-left-color: @popover-arrow-color;\n      bottom: -@popover-arrow-width;\n    }\n  }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    position: relative;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n\n    // WebKit CSS3 transforms for supported devices\n    @media all and (transform-3d), (-webkit-transform-3d) {\n      .transition-transform(~'0.6s ease-in-out');\n      .backface-visibility(~'hidden');\n      .perspective(1000px);\n\n      &.next,\n      &.active.right {\n        .translate3d(100%, 0, 0);\n        left: 0;\n      }\n      &.prev,\n      &.active.left {\n        .translate3d(-100%, 0, 0);\n        left: 0;\n      }\n      &.next.left,\n      &.prev.right,\n      &.active {\n        .translate3d(0, 0, 0);\n        left: 0;\n      }\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev {\n    display: block;\n  }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: @carousel-control-width;\n  .opacity(@carousel-control-opacity);\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n  }\n  &.right {\n    left: auto;\n    right: 0;\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    outline: 0;\n    color: @carousel-control-color;\n    text-decoration: none;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    margin-top: -10px;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n    margin-left: -10px;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n    margin-right: -10px;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    line-height: 1;\n    font-family: serif;\n  }\n\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n    cursor: pointer;\n\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0,0,0,0); // IE9\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: 30px;\n      height: 30px;\n      margin-top: -15px;\n      font-size: 30px;\n    }\n    .glyphicon-chevron-left,\n    .icon-prev {\n      margin-left: -15px;\n    }\n    .glyphicon-chevron-right,\n    .icon-next {\n      margin-right: -15px;\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n//    contenteditable attribute is included anywhere else in the document.\n//    Otherwise it causes space to appear at the top and bottom of elements\n//    that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n//    `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n  &:before,\n  &:after {\n    content: \" \"; // 1\n    display: table; // 2\n  }\n  &:after {\n    clear: both;\n  }\n}\n","// Center-align a block level element\n\n.center-block() {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n  font: ~\"0/0\" a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n  .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n  width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n\n.visible-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-visibility();\n  }\n}\n.visible-xs-block {\n  @media (max-width: @screen-xs-max) {\n    display: block !important;\n  }\n}\n.visible-xs-inline {\n  @media (max-width: @screen-xs-max) {\n    display: inline !important;\n  }\n}\n.visible-xs-inline-block {\n  @media (max-width: @screen-xs-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-visibility();\n  }\n}\n.visible-sm-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: block !important;\n  }\n}\n.visible-sm-inline {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline !important;\n  }\n}\n.visible-sm-inline-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-visibility();\n  }\n}\n.visible-md-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: block !important;\n  }\n}\n.visible-md-inline {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline !important;\n  }\n}\n.visible-md-inline-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-visibility();\n  }\n}\n.visible-lg-block {\n  @media (min-width: @screen-lg-min) {\n    display: block !important;\n  }\n}\n.visible-lg-inline {\n  @media (min-width: @screen-lg-min) {\n    display: inline !important;\n  }\n}\n.visible-lg-inline-block {\n  @media (min-width: @screen-lg-min) {\n    display: inline-block !important;\n  }\n}\n\n.hidden-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-invisibility();\n  }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n  .responsive-invisibility();\n\n  @media print {\n    .responsive-visibility();\n  }\n}\n.visible-print-block {\n  display: none !important;\n\n  @media print {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n\n  @media print {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n\n  @media print {\n    display: inline-block !important;\n  }\n}\n\n.hidden-print {\n  @media print {\n    .responsive-invisibility();\n  }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n  display: block !important;\n  table&  { display: table !important; }\n  tr&     { display: table-row !important; }\n  th&,\n  td&     { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n  display: none !important;\n}\n"]}
\ No newline at end of file
diff --git a/src/main/jbake/assets/css/cardio.css b/src/main/jbake/assets/css/cardio.css
new file mode 100755
index 0000000..71c6ad6
--- /dev/null
+++ b/src/main/jbake/assets/css/cardio.css
@@ -0,0 +1,1173 @@
+@import url(http://fonts.googleapis.com/css?family=Roboto:300,400,500,700);
+body {
+	font-family: 'Roboto', 'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif;
+	font-size: 14px;
+	overflow-x: hidden;
+	color: #2a3237;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+
+.parallax {
+	position: absolute;
+	overflow: hidden;
+	width: 100%;
+	-webkit-transform: translateZ(0);
+	-ms-transform: translateZ(0);
+	transform: translateZ(0);
+}
+
+.parallax img {
+	width: 100%;
+	height: 100%;
+}
+/* Preloader */
+
+.preloader {
+	position: fixed;
+	z-index: 9999;
+	width: 100%;
+	height: 100%;
+	background-color: white;
+}
+
+.preloader img {
+	position: absolute;
+	top: calc(50% - 32px);
+	left: calc(50% - 32px);
+}
+
+.preloader div {
+	display: none;
+	/* Preload the Second Pricing Image */
+	background: url(../img/pricing2.jpg) no-repeat 9999px 9999px;
+	background-position: 9999px 9999px;
+}
+
+/* Typography */
+
+.bigp {
+	font-size: 18px;
+	line-height: 1.5;
+	color: #80287a;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+	font-family: 'Roboto', 'Avenir Next', 'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif;
+	position: relative;
+	margin: 10px 0;
+}
+
+h1 {
+	font-size: 60px;
+}
+
+h2 {
+	font-size: 48px;
+}
+
+h3 {
+	font-size: 30px;
+}
+
+h4 {
+	font-size: 24px;
+}
+
+h5 {
+	font-size: 18px;
+}
+
+h6 {
+	font-size: 16px;
+}
+
+ul.white-list {
+	padding: 0;
+	list-style-type: none;
+}
+
+ul.white-list li {
+	font-size: 18px;
+	margin: 10px 0;
+	color: #fff;
+}
+
+ul.white-list li:before {
+	content: ' ';
+	position: relative;
+	top: -3px;
+	display: inline-block;
+	width: 6px;
+	height: 6px;
+	margin-right: 15px;
+	background: white;
+}
+
+header {
+	position: relative;
+	width: 100%;
+	color: #80287a;
+	background: rgba(28, 36, 65, 0.93);
+	background: url('../img/header.jpg');
+	background-size: cover;
+}
+
+header .table {
+	display: table;
+	height: 100%;
+}
+
+header .container {
+	height: 100%;
+}
+
+header .header-text {
+	display: table-cell;
+	text-align: center;
+	vertical-align: middle;
+	color: #80287a;
+}
+
+header .typed {
+	display: inline-block;
+	margin: 0;
+}
+
+header .typed-cursor {
+	font-size: 60px;
+	display: inline-block;
+	margin: 0 10px;
+	color: #80287a;
+	-webkit-animation-name: flash;
+	animation-name: flash;
+	-webkit-animation-duration: 1s;
+	animation-duration: 1s;
+	-webkit-animation-iteration-count: infinite;
+	animation-iteration-count: infinite;
+}
+
+a {
+	text-decoration: none;
+	color: #80287a;
+	-webkit-transition: all 0.3s ease;
+	transition: all 0.3s ease;
+}
+/* Navigation Bar ( Navbar ) */
+
+nav.navbar {
+	position: absolute;
+	z-index: 9500;
+	width: 100%;
+	width: 100vw;
+	-webkit-transition: all 0.3s ease;
+	transition: all 0.3s ease;
+}
+
+nav.navbar .navbar-nav li.active a:not(.btn) {
+	color: #80287a !important;
+}
+
+nav.navbar-fixed-top {
+	z-index: 9499;
+	top: 0;
+	padding-top: 10px;
+	padding-bottom: 10px;
+	opacity: 1;
+	background: white;
+	box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.05);
+}
+
+nav.navbar-fixed-top .navbar-nav > li > a:not(.btn) {
+	color: #bbb;
+}
+
+.icon-bar {
+	background: #bbb;
+}
+/* Buttons */
+
+.btn {
+	font-size: 18px;
+	display: inline-block;
+	padding: 15px 30px;
+	color: #80287a;
+	border: 2px solid transparent;
+	border-radius: 2px;
+	background: transparent;
+	-webkit-transition: all 0.3s ease;
+	transition: all 0.3s ease;
+}
+
+.btn:hover,
+.btn:focus {
+	color: #CE2D34;
+}
+
+.btn.btn-blue {
+	background: #80287a;
+	color: #fff;
+}
+
+.btn.btn-blue:hover {
+	background: #31b9ff;
+}
+
+.btn.btn-blue-fill {
+	color: #80287a;
+	border-color: #80287a;
+	background: transparent;
+}
+
+.btn.btn-blue-fill:hover {
+	color: white;
+	background: #80287a;
+}
+
+.btn.btn-white-fill {
+	color: #fff;
+	border-color: #fff;
+	background: transparent;
+}
+
+.btn.btn-white-fill:hover {
+	color: #80287a;
+	background: #fff;
+}
+
+.btn.btn-gray-fill {
+	color: #fff;
+	border-color: #fff;
+	background: transparent;
+}
+
+.btn.btn-gray-fill:hover {
+	border-color: #bbb;
+	background: #bbb;
+}
+
+/* Blink Cursor */
+
+.blink {
+	position: relative;
+	top: 4px;
+	display: inline-block;
+	width: 4px;
+	height: 50px;
+	height: 5vh;
+	margin: 0 10px;
+}
+
+.navbar {
+	top: 50px;
+}
+
+.container {
+	position: relative;
+	z-index: 1;
+}
+/* Sections */
+section {
+	position: relative;
+}
+
+.section {
+	padding: 40px 0;
+	background: #fff;
+}
+
+.section-padded {
+	padding: 50px 0 40px;
+}
+
+.cut-top {
+	content: ' ';
+	position: absolute;
+	z-index: 1;
+	top: -80px;
+	left: 0;
+	width: 0;
+	height: 0;
+	border-top: 80px solid transparent;
+	border-right: 30px solid white;
+}
+
+.cut-bottom {
+	content: ' ';
+	position: absolute;
+	z-index: 1;
+	bottom: -80px;
+	left: 0;
+	width: 0;
+	height: 0;
+	border-bottom: 80px solid transparent;
+	border-left: 30px solid white;
+}
+
+.intro-tables {
+	top: -130px;
+	position: relative;
+}
+
+.intro-table {
+	-webkit-background-size: cover;
+	background-size: cover;
+	background-repeat: repeat;
+	background-position: 0% 0%;
+}
+
+
+.intro-table-hover:hover {
+	-webkit-transition: background-image 0.3s ease, background-position 0.3s;
+	transition: background-image 0.3s ease, background-position 0.3s;
+}
+
+
+.intro-table1 {
+	background-image: url('../img/table-1.jpg');
+}
+
+.intro-table2 {
+	background-image: url('../img/table-2.jpg');
+}
+
+.intro-table3 {
+	background-image: url('../img/table-3.jpg');
+}
+
+.intro-table-hover1:hover {
+	background-image: url('../img/table-1-hover.jpg');
+}
+
+.intro-table-hover2:hover {
+	background-image: url('../img/table-2-hover.jpg');
+}
+
+.intro-table-hover3:hover {
+	background-image: url('../img/table-3-hover.jpg');
+}
+
+.intro-table-hover h4 {
+	-webkit-transform: translateY(170px);
+	transform: translateY(170px);
+	-webkit-transition: -webkit-transform 0.3s;
+	transition: transform 0.3s;
+}
+
+.intro-table-hover {
+	background-position: 50% 50%;
+}
+
+
+.intro-table-hover .expand {
+    margin-top: 120px;
+    margin: 30px;
+	opacity: 0;
+	-webkit-transition: -webkit-transform 0.3s, opacity 0.3s;
+	transition: transform 0.3s ease, opacity 0.3s;
+	-webkit-transform: scale(0.6);
+	-ms-transform: scale(0.6);
+	transform: scale(0.6);
+}
+
+.intro-table-hover:hover h4 {
+	-webkit-transform: translateY(0);
+	transform: translateY(0);
+}
+
+.intro-table-hover:hover .expand {
+	opacity: 1;
+	-webkit-transform: scale(1);
+	-ms-transform: scale(1);
+	transform: scale(1);
+}
+
+.intro-table-hover .hide-hover {
+	-webkit-transition: opacity 0.3s ease;
+	transition: opacity 0.3s ease;
+}
+
+.intro-table-hover:hover .hide-hover {
+	opacity: 0;
+}
+
+.intro-tables .intro-table {
+	position: relative;
+	width: 100%;
+	height: 300px;
+	margin: 20px 0;
+}
+
+.intro-tables .intro-table .heading {
+	margin: 0;
+	padding: 30px;
+}
+
+.intro-tables .intro-table .small-heading {
+	margin: 0;
+	padding: 0 30px;
+}
+
+.intro-tables .intro-table .bottom {
+	position: absolute;
+	bottom: 0;
+}
+
+.intro-tables .intro-table .owl-schedule .schedule-row {
+	padding: 10px 30px;
+	color: #80287a;
+	transition: all 0.3s ease;
+}
+
+.owl-schedule .schedule-row:not(:last-child) {
+	border-bottom: 1px solid rgba(255, 255, 255, 0.4);
+}
+
+.owl-testimonials .author {
+	margin-top: 50px;
+}
+
+.ripple-effect {
+	position: absolute;
+	width: 50px;
+	height: 50px;
+	border-radius: 50%;
+	background: #80287a;
+	-webkit-animation: ripple-animation 2s;
+	animation: ripple-animation 2s;
+}
+
+@-webkit-keyframes ripple-animation {
+	from {
+		opacity: 0.2;
+		-webkit-transform: scale(1);
+		transform: scale(1);
+	}
+	to {
+		opacity: 0;
+		-webkit-transform: scale(100);
+		transform: scale(100);
+	}
+}
+
+@keyframes ripple-animation {
+	from {
+		opacity: 0.2;
+		-webkit-transform: scale(1);
+		transform: scale(1);
+	}
+	to {
+		opacity: 0;
+		-webkit-transform: scale(100);
+		transform: scale(100);
+	}
+}
+
+.services {
+	margin: 40px 0;
+}
+
+.service {
+	width: 100%;
+	height: 320px;
+	margin: 80px 0;
+	text-align: center;
+	border: 1px solid #ddd;
+	-webkit-transition: all 0.3s ease;
+	transition: all 0.3s ease;
+}
+
+.service .icon-holder {
+	position: relative;
+	top: 100px;
+	display: inline-block;
+	margin-bottom: 40px;
+	padding: 10px;
+	background: #80287a;
+	-webkit-transition: all 0.3s ease;
+	transition: all 0.3s ease;
+}
+
+.service .heading {
+	position: relative;
+	top: 80px;
+	-webkit-transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
+	transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
+}
+
+.service .icon-holder > img.icon {
+	width: 40px;
+}
+
+.service:hover {
+	border-color: #80287a;
+}
+
+.service:hover .icon-holder {
+	top: -30px;
+}
+
+.service:hover .heading {
+	top: -30px;
+}
+
+.service .description {
+	width: 80%;
+	margin: 0 auto;
+	opacity: 0;
+	-webkit-transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
+	transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
+	-webkit-transform: scale(0);
+	-ms-transform: scale(0);
+	transform: scale(0);
+}
+
+.service:hover .description {
+	opacity: 1;
+	-webkit-transform: scale(1);
+	-ms-transform: scale(1);
+	transform: scale(1);
+}
+
+.team {
+	margin: 80px 0;
+	padding-bottom: 60px;
+	background: #80287a;
+	box-shadow: 0 2px 3px rgba(0, 0, 0, 0.07);
+}
+
+.team .cover .overlay {
+	height: 250px;
+	padding-top: 60px;
+	opacity: 0;
+	background: rgba(0, 168, 255, 0.9);
+	-webkit-transition: opacity 0.45s ease;
+	transition: opacity 0.45s ease;
+}
+
+.team:hover .cover .overlay {
+	opacity: 1;
+}
+
+.team .avatar {
+	position: relative;
+	z-index: 2;
+	margin-top: -60px;
+	border-radius: 50%;
+}
+
+.team .title {
+	margin: 50px 0;
+}
+/* Pricing */
+
+#pricing {
+	background: #80287a url('../img/pricing1.jpg') no-repeat center center;
+	-webkit-background-size: cover;
+	background-size: cover;
+	-webkit-transition: background-image 0.6s linear 0.3s;
+	transition: background-image 0.6s linear 0.3s;
+}
+
+.owl-pricing img {
+	width: 100%;
+}
+
+.owl-pricing,
+.pricings {
+	margin-top: 100px;
+	margin-bottom: 100px;
+}
+
+.pricing {
+	position: relative;
+	width: 100%;
+}
+
+.pricings .pricing .box-main,
+.pricings .pricing .box-second {
+	position: relative;
+	left: 25%;
+	display: inline-block;
+	width: 50%;
+	height: 300px;
+	padding: 50px 40px;
+	background: #bbb;
+	-webkit-transition: -webkit-transform 0.3s, background-image 0.3s, opacity 0.3s;
+	transition: transform 0.3s, background-image 0.3s, opacity 0.3s;
+	-webkit-backface-visibility: hidden;
+	backface-visibility: hidden;
+}
+
+.pricings .pricing .box-main {
+	z-index: 10;
+	padding-top: 40px;
+}
+
+.pricings .pricing .box-main:not(.active) {
+	cursor: pointer;
+}
+
+.pricings .pricing .box-main .info-icon {
+	font-size: 14px;
+	position: absolute;
+	top: 20px;
+	right: 20px;
+	pointer-events: none;
+	opacity: 0;
+	color: #fff;
+	-webkit-transition: opacity 0.3s;
+	transition: opacity 0.3s;
+}
+
+.pricings .pricing .box-main:not(.active) .info-icon {
+	opacity: 1;
+	-webkit-transition-delay: 0.2s;
+	transition-delay: 0.2s;
+}
+
+.pricings .pricing .box-main:not(.active):hover {
+	background: #afafaf;
+}
+
+.pricings .pricing .box-main.active {
+	background: #80287a;
+	-webkit-transform: translateX(-99%);
+	-ms-transform: translateX(-99%);
+	transform: translateX(-99%);
+}
+
+.pricings .pricing .box-second {
+	position: absolute;
+	top: 0;
+	right: 0% !important;
+	left: auto;
+	opacity: 0;
+	background: #afafaf;
+}
+
+.pricings .pricing .box-second.active {
+	opacity: 1;
+	background: #80287a;
+}
+
+.pricings .pricing.active .box-main,
+.pricings .pricing .box-second {
+	background: #80287a;
+}
+
+.pricings .pricing .box-main a.btn {
+	margin-top: 50px;
+}
+
+.owl-twitter i.icon {
+	font-size: 36px;
+	margin-bottom: 60px;
+	color: #80287a;
+}
+/* Footer */
+
+footer {
+	padding: 60px 0 40px;
+    background-image:linear-gradient(to right, #f59423, #e2632a, #ca2136, #832778);
+	-webkit-background-size: cover;
+	background-size: cover;
+}
+
+footer .trial-button {
+	overflow: hidden !important;
+	margin: 40px 0;
+}
+
+footer .open-blink {
+	content: ' ';
+	position: relative;
+	display: inline-block;
+	width: 14px;
+	height: 14px;
+	margin: 0 20px;
+	border-radius: 50%;
+	background-color: #4caf50;
+	-webkit-animation-name: flash;
+	animation-name: flash;
+	-webkit-animation-duration: 1s;
+	animation-duration: 1s;
+	-webkit-animation-iteration-count: infinite;
+	animation-iteration-count: infinite;
+}
+
+footer .open-blink:before {
+	content: ' ';
+	position: absolute;
+	top: -8px;
+	left: -8px;
+	display: inline-block;
+	width: 30px;
+	height: 30px;
+	opacity: 0.1;
+	border-radius: 50%;
+	background-color: #4caf50;
+}
+
+
+footer .social-footer {
+	padding: 0;
+	margin-left: -.5em;
+	list-style: none;
+}
+
+footer .social-footer li {
+	display: inline-block;
+	margin: 0 10px;
+}
+
+footer .social-footer li a {
+	font-size: 24px;
+	color: #fff;
+}
+
+footer .social-footer li:hover a {
+	color: #80287a;
+}
+/* Form Control */
+
+.form-control {
+	font-size: 18px;
+	position: relative;
+	left: 0;
+	height: auto;
+	padding: 20px 30px;
+	border: 1px;
+	border-radius: 0;
+	box-shadow: 0;
+}
+
+.form-control.form-white {
+	color: #fff;
+	border: 2px solid white;
+	background: transparent;
+	-webkit-transition: background-color 0.3s;
+	transition: background-color 0.3s;
+}
+
+.form-control.form-white::-webkit-input-placeholder {
+	/* WebKit browsers */
+	color: #fff;
+}
+
+.form-control.form-white:-moz-placeholder {
+	opacity: 1;
+	/* Mozilla Firefox 4 to 18 */
+	color: #fff;
+}
+
+.form-control.form-white::-moz-placeholder {
+	opacity: 1;
+	/* Mozilla Firefox 19+ */
+	color: #fff;
+}
+
+.form-control.form-white:-ms-input-placeholder {
+	/* Internet Explorer 10+ */
+	color: #fff;
+}
+
+.form-control.form-white:focus {
+	background: rgba(255,255,255,0.2);
+}
+
+/* Popup */
+.modal {
+	padding: 0 25px !important;
+}
+
+.modal-dialog {
+	width: 100%;
+	max-width: 560px;
+	margin: 0 auto;
+}
+
+.modal-popup {
+	position: relative;
+	padding: 45px 30px;
+	text-align: center;
+	background: url('../img/popup.jpg');
+	box-shadow: none;
+	border-radius: 2px;
+}
+
+.modal-popup a.close-link {
+	font-size: 22px;
+	position: absolute;
+	top: 20px;
+	right: 30px;
+	color: #fff;
+}
+
+.popup-form {
+	width: 90%;
+	max-width: 375px;
+	margin: 60px auto;
+}
+
+.popup-form .form-control {
+	margin: 20px 0;
+}
+
+.popup-form .form-control.dropdown {
+	text-align: left;
+}
+
+.popup-form .form-control.dropdown:after {
+	content: '\f0d7';
+	font-family: 'FontAwesome';
+	display: inline-block;
+	float: right;
+	color: white;
+}
+
+.popup-form .dropdown .dropdown-menu {
+	top: 65px;
+	width: 100%;
+	padding: 0;
+	border: 2px solid white;
+	border-top: 0;
+	border-radius: 0;
+	background: white;
+	box-shadow: none;
+}
+
+.popup-form .dropdown .dropdown-menu li {
+	font-size: 16px;
+	width: 100%;
+	background: transparent;
+}
+
+.popup-form .dropdown .dropdown-menu li a {
+	width: 100%;
+	padding: 15px 30px;
+	color: #80287a;
+}
+
+.popup-form .dropdown .dropdown-menu li:hover a {
+	color: #fff;
+	background: #80287a;
+}
+
+/* Checkbox */
+
+.checkbox-holder {
+	white-space: nowrap;
+}
+
+.checkbox {
+	position: relative;
+	display: block;
+}
+
+.checkbox {
+	position: relative;
+}
+
+.checkbox label:before {
+	content: '';
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+	border: 2px solid white;
+	background: transparent;
+	-webkit-transition: background-color 0.3s;
+	transition: background-color 0.3s;
+}
+
+.checkbox input[type=checkbox]:focus + label:before {
+	background: rgba(255,255,255,0.2);
+}
+
+.checkbox label:after {
+	content: '';
+	position: absolute;
+	top: 6px;
+	left: 6px;
+	width: 8px;
+	height: 8px;
+	opacity: 0;
+	background: white;
+	-webkit-transition: all 0.3s ease;
+	transition: all 0.3s ease;
+}
+
+.checkbox input[type=checkbox] {
+	opacity: 0;
+	position: absolute;
+	width: 0;
+	height: 0;
+}
+
+.checkbox input[type=checkbox]:checked + label:after {
+	opacity: 1;
+}
+
+.checkbox-holder span {
+	position: relative;
+	display: inline-block;
+	margin: 0 0 0 10px;
+	white-space: normal;
+	color: #fff;
+}
+
+.btn.btn-submit {
+	width: 100%;
+	margin-top: 30px;
+	color: #80287a;
+	border: 2px solid #fff;
+	background: #fff;
+}
+
+.btn.btn-submit:focus {
+	font-weight: bold;
+}
+
+.btn.btn-submit:hover {
+	color: #80287a;
+	background: #fff;
+}
+
+/* Mobile Nav */
+.mobile-nav {
+	position: fixed;
+	z-index: 9999;
+	top: 0;
+	left: 0;
+	display: table;
+	width: 100%;
+	height: 100%;
+	text-align: center;
+	opacity: 0;
+	background: rgba(255, 255, 255, 0.98);
+	-webkit-transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
+	transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
+	-webkit-transform: scale(0);
+	-ms-transform: scale(0);
+	transform: scale(0);
+}
+
+.mobile-nav.active {
+	opacity: 1;
+	-webkit-transform: scale(1);
+	-ms-transform: scale(1);
+	transform: scale(1);
+}
+
+.mobile-nav ul {
+	display: table-cell;
+	padding: 0;
+	list-style: none;
+	vertical-align: middle;
+}
+
+.mobile-nav ul li {
+	margin: 25px 0;
+}
+
+.mobile-nav ul li a:not(.btn) {
+	color: #aaa;
+}
+
+.mobile-nav a.close-link {
+	font-size: 24px;
+	position: absolute;
+	bottom: 0px;
+	left: calc(50% - 10px);
+	left: 0;
+	width: 100%;
+	padding: 15px 0;
+	color: #fff;
+	background: #80287a;
+}
+
+.light {
+	font-weight: 300;
+}
+
+.regular {
+	font-weight: 400;
+}
+
+.bold {
+	font-weight: bold;
+}
+/* Colors */
+
+.white {
+	color: white;
+}
+
+.light-white {
+	color: rgba(255, 255, 255, 0.5);
+}
+
+.white-bg {
+	background: white;
+}
+
+.gray-bg {
+	background: #f7f7f7;
+}
+
+.blue {
+	color: #80287a;
+}
+
+.blue-bg {
+	background: #80287a;
+}
+
+.muted {
+	color: #989da0;
+}
+
+.margin-top {
+	margin-top: 150px;
+}
+
+@media(max-width:992px) {
+	h1 {
+		font-size: 36px;
+	}
+	h2 {
+		font-size: 28px;
+	}
+	h3 {
+		font-size: 24px;
+	}
+	h4 {
+		font-size: 20px;
+	}
+	h5 {
+		font-size: 16px;
+	}
+	h6 {
+		font-size: 12px;
+	}
+	.section {
+		padding: 30px 0;
+	}
+}
+
+/* Media Queries */
+
+@media(max-width:991px) {
+	.text-center-mobile {
+		text-align: center !important;
+	}
+}
+
+@media(max-width: 768px) {
+	.pricing {
+		margin-bottom: 30px;
+	}
+	.pricings .pricing .info-icon {
+		display: none;
+	}
+	.pricings .pricing .box-main,
+	.pricings .pricing .box-second {
+		left: 0;
+		width: 100%;
+		padding: 50px 50px 0;
+		text-align: left;
+		background: #80287a;
+	}
+	.pricings .pricing .box-main.active {
+		background: #80287a;
+		-webkit-transform: translateX(0%);
+		-ms-transform: translateX(0%);
+		transform: translateX(0%);
+	}
+	.pricings .pricing .box-second {
+		position: relative;
+		opacity: 1;
+	}
+	.popup-form {
+		width: 100%;
+		margin: 60px auto;
+	}
+	.modal {
+		padding: 0 10px !important;
+	}
+	.popup-form .form-control:not(.dropdown):focus {
+		position: relative;
+		padding-right: 30px;
+		padding-left: 30px;
+	}
+}
+
+@media(max-width: 400px) {
+	header .typed-cursor {
+		display: none;
+	}
+	.pricings .pricing .box-second {
+		padding-top: 0;
+	}
+}
+
+.index-title {
+    font-size: 80px;
+}
+
+
+.contributor-name {
+    color: #80287a;
+    font-size: 1.7em;
+    margin-bottom: 0.5em;
+}
+
+.photo {
+    border: 1px solid #ddd;
+    box-shadow: 0 1px 3px rgba(0,0,0,0.055);
+    border-radius: 4px;
+    padding: 4px;
+}
+
+
+.bs-callout {
+    min-height: 160px;
+    padding: 20px;
+    border: 1px solid #eee;
+    border-left-width: 5px;
+    border-radius: 3px;
+}
+.bs-callout h4 {
+    margin-top: 0;
+    margin-bottom: 5px;
+}
+.bs-callout p:last-child {
+    margin-bottom: 0;
+}
+.bs-callout code {
+    border-radius: 3px;
+}
+.bs-callout+.bs-callout {
+    margin-top: -5px;
+}
+.bs-callout-primary {
+
+    border-left-color: #80287a;
+}
+.bs-callout-primary h4 {
+    color: #80287a;
+}
+h2 { /*ensure downlooad as PDF are clickable*/
+    z-index: -1;
+}
+vspace {
+    height: 1em;
+}
\ No newline at end of file
diff --git a/src/main/jbake/assets/css/et-icons.css b/src/main/jbake/assets/css/et-icons.css
new file mode 100755
index 0000000..3774618
--- /dev/null
+++ b/src/main/jbake/assets/css/et-icons.css
@@ -0,0 +1,1159 @@
+@font-face {
+	font-family: 'ElegantIcons';
+	src:url('../fonts/eleganticons/ElegantIcons.eot');
+	src:url('../fonts/eleganticons/ElegantIcons.eot?#iefix') format('embedded-opentype'),
+		url('../fonts/eleganticons/ElegantIcons.woff') format('woff'),
+		url('../fonts/eleganticons/ElegantIcons.ttf') format('truetype'),
+		url('../fonts/eleganticons/ElegantIcons.svg#ElegantIcons') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+/* Use the following CSS code if you want to use data attributes for inserting your icons */
+[data-icon]:before {
+	font-family: 'ElegantIcons';
+	content: attr(data-icon);
+	speak: none;
+	font-weight: normal;
+	font-variant: normal;
+	text-transform: none;
+	line-height: 1;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+
+/* Use the following CSS code if you want to have a class per icon */
+/*
+Instead of a list of all class selectors,
+you can use the generic selector below, but it's slower:
+[class*="your-class-prefix"] {
+*/
+.arrow_up, .arrow_down, .arrow_left, .arrow_right, .arrow_left-up, .arrow_right-up, .arrow_right-down, .arrow_left-down, .arrow-up-down, .arrow_up-down_alt, .arrow_left-right_alt, .arrow_left-right, .arrow_expand_alt2, .arrow_expand_alt, .arrow_condense, .arrow_expand, .arrow_move, .arrow_carrot-up, .arrow_carrot-down, .arrow_carrot-left, .arrow_carrot-right, .arrow_carrot-2up, .arrow_carrot-2down, .arrow_carrot-2left, .arrow_carrot-2right, .arrow_carrot-up_alt2, .arrow_carrot-down_alt2, .arrow_carrot-left_alt2, .arrow_carrot-right_alt2, .arrow_carrot-2up_alt2, .arrow_carrot-2down_alt2, .arrow_carrot-2left_alt2, .arrow_carrot-2right_alt2, .arrow_triangle-up, .arrow_triangle-down, .arrow_triangle-left, .arrow_triangle-right, .arrow_triangle-up_alt2, .arrow_triangle-down_alt2, .arrow_triangle-left_alt2, .arrow_triangle-right_alt2, .arrow_back, .icon_minus-06, .icon_plus, .icon_close, .icon_check, .icon_minus_alt2, .icon_plus_alt2, .icon_close_alt2, .icon_check_alt2, .icon_zoom-out_alt, .icon_zoom-in_alt, .icon_search, .icon_box-empty, .icon_box-selected, .icon_minus-box, .icon_plus-box, .icon_box-checked, .icon_circle-empty, .icon_circle-slelected, .icon_stop_alt2, .icon_stop, .icon_pause_alt2, .icon_pause, .icon_menu, .icon_menu-square_alt2, .icon_menu-circle_alt2, .icon_ul, .icon_ol, .icon_adjust-horiz, .icon_adjust-vert, .icon_document_alt, .icon_documents_alt, .icon_pencil, .icon_pencil-edit_alt, .icon_pencil-edit, .icon_folder-alt, .icon_folder-open_alt, .icon_folder-add_alt, .icon_info_alt, .icon_error-oct_alt, .icon_error-circle_alt, .icon_error-triangle_alt, .icon_question_alt2, .icon_question, .icon_comment_alt, .icon_chat_alt, .icon_vol-mute_alt, .icon_volume-low_alt, .icon_volume-high_alt, .icon_quotations, .icon_quotations_alt2, .icon_clock_alt, .icon_lock_alt, .icon_lock-open_alt, .icon_key_alt, .icon_cloud_alt, .icon_cloud-upload_alt, .icon_cloud-download_alt, .icon_image, .icon_images, .icon_lightbulb_alt, .icon_gift_alt, .icon_house_alt, .icon_genius, .icon_mobile, .icon_tablet, .icon_laptop, .icon_desktop, .icon_camera_alt, .icon_mail_alt, .icon_cone_alt, .icon_ribbon_alt, .icon_bag_alt, .icon_creditcard, .icon_cart_alt, .icon_paperclip, .icon_tag_alt, .icon_tags_alt, .icon_trash_alt, .icon_cursor_alt, .icon_mic_alt, .icon_compass_alt, .icon_pin_alt, .icon_pushpin_alt, .icon_map_alt, .icon_drawer_alt, .icon_toolbox_alt, .icon_book_alt, .icon_calendar, .icon_film, .icon_table, .icon_contacts_alt, .icon_headphones, .icon_lifesaver, .icon_piechart, .icon_refresh, .icon_link_alt, .icon_link, .icon_loading, .icon_blocked, .icon_archive_alt, .icon_heart_alt, .icon_star_alt, .icon_star-half_alt, .icon_star, .icon_star-half, .icon_tools, .icon_tool, .icon_cog, .icon_cogs, .arrow_up_alt, .arrow_down_alt, .arrow_left_alt, .arrow_right_alt, .arrow_left-up_alt, .arrow_right-up_alt, .arrow_right-down_alt, .arrow_left-down_alt, .arrow_condense_alt, .arrow_expand_alt3, .arrow_carrot_up_alt, .arrow_carrot-down_alt, .arrow_carrot-left_alt, .arrow_carrot-right_alt, .arrow_carrot-2up_alt, .arrow_carrot-2dwnn_alt, .arrow_carrot-2left_alt, .arrow_carrot-2right_alt, .arrow_triangle-up_alt, .arrow_triangle-down_alt, .arrow_triangle-left_alt, .arrow_triangle-right_alt, .icon_minus_alt, .icon_plus_alt, .icon_close_alt, .icon_check_alt, .icon_zoom-out, .icon_zoom-in, .icon_stop_alt, .icon_menu-square_alt, .icon_menu-circle_alt, .icon_document, .icon_documents, .icon_pencil_alt, .icon_folder, .icon_folder-open, .icon_folder-add, .icon_folder_upload, .icon_folder_download, .icon_info, .icon_error-circle, .icon_error-oct, .icon_error-triangle, .icon_question_alt, .icon_comment, .icon_chat, .icon_vol-mute, .icon_volume-low, .icon_volume-high, .icon_quotations_alt, .icon_clock, .icon_lock, .icon_lock-open, .icon_key, .icon_cloud, .icon_cloud-upload, .icon_cloud-download, .icon_lightbulb, .icon_gift, .icon_house, .icon_camera, .icon_mail, .icon_cone, .icon_ribbon, .icon_bag, .icon_cart, .icon_tag, .icon_tags, .icon_trash, .icon_cursor, .icon_mic, .icon_compass, .icon_pin, .icon_pushpin, .icon_map, .icon_drawer, .icon_toolbox, .icon_book, .icon_contacts, .icon_archive, .icon_heart, .icon_profile, .icon_group, .icon_grid-2x2, .icon_grid-3x3, .icon_music, .icon_pause_alt, .icon_phone, .icon_upload, .icon_download, .social_facebook, .social_twitter, .social_pinterest, .social_googleplus, .social_tumblr, .social_tumbleupon, .social_wordpress, .social_instagram, .social_dribbble, .social_vimeo, .social_linkedin, .social_rss, .social_deviantart, .social_share, .social_myspace, .social_skype, .social_youtube, .social_picassa, .social_googledrive, .social_flickr, .social_blogger, .social_spotify, .social_delicious, .social_facebook_circle, .social_twitter_circle, .social_pinterest_circle, .social_googleplus_circle, .social_tumblr_circle, .social_stumbleupon_circle, .social_wordpress_circle, .social_instagram_circle, .social_dribbble_circle, .social_vimeo_circle, .social_linkedin_circle, .social_rss_circle, .social_deviantart_circle, .social_share_circle, .social_myspace_circle, .social_skype_circle, .social_youtube_circle, .social_picassa_circle, .social_googledrive_alt2, .social_flickr_circle, .social_blogger_circle, .social_spotify_circle, .social_delicious_circle, .social_facebook_square, .social_twitter_square, .social_pinterest_square, .social_googleplus_square, .social_tumblr_square, .social_stumbleupon_square, .social_wordpress_square, .social_instagram_square, .social_dribbble_square, .social_vimeo_square, .social_linkedin_square, .social_rss_square, .social_deviantart_square, .social_share_square, .social_myspace_square, .social_skype_square, .social_youtube_square, .social_picassa_square, .social_googledrive_square, .social_flickr_square, .social_blogger_square, .social_spotify_square, .social_delicious_square, .icon_printer, .icon_calulator, .icon_building, .icon_floppy, .icon_drive, .icon_search-2, .icon_id, .icon_id-2, .icon_puzzle, .icon_like, .icon_dislike, .icon_mug, .icon_currency, .icon_wallet, .icon_pens, .icon_easel, .icon_flowchart, .icon_datareport, .icon_briefcase, .icon_shield, .icon_percent, .icon_globe, .icon_globe-2, .icon_target, .icon_hourglass, .icon_balance, .icon_rook, .icon_printer-alt, .icon_calculator_alt, .icon_building_alt, .icon_floppy_alt, .icon_drive_alt, .icon_search_alt, .icon_id_alt, .icon_id-2_alt, .icon_puzzle_alt, .icon_like_alt, .icon_dislike_alt, .icon_mug_alt, .icon_currency_alt, .icon_wallet_alt, .icon_pens_alt, .icon_easel_alt, .icon_flowchart_alt, .icon_datareport_alt, .icon_briefcase_alt, .icon_shield_alt, .icon_percent_alt, .icon_globe_alt, .icon_clipboard {
+	font-family: 'ElegantIcons';
+	speak: none;
+	font-style: normal;
+	font-weight: normal;
+	font-variant: normal;
+	text-transform: none;
+	line-height: 1;
+	-webkit-font-smoothing: antialiased;
+}
+.arrow_up:before {
+	content: "\21";
+}
+.arrow_down:before {
+	content: "\22";
+}
+.arrow_left:before {
+	content: "\23";
+}
+.arrow_right:before {
+	content: "\24";
+}
+.arrow_left-up:before {
+	content: "\25";
+}
+.arrow_right-up:before {
+	content: "\26";
+}
+.arrow_right-down:before {
+	content: "\27";
+}
+.arrow_left-down:before {
+	content: "\28";
+}
+.arrow-up-down:before {
+	content: "\29";
+}
+.arrow_up-down_alt:before {
+	content: "\2a";
+}
+.arrow_left-right_alt:before {
+	content: "\2b";
+}
+.arrow_left-right:before {
+	content: "\2c";
+}
+.arrow_expand_alt2:before {
+	content: "\2d";
+}
+.arrow_expand_alt:before {
+	content: "\2e";
+}
+.arrow_condense:before {
+	content: "\2f";
+}
+.arrow_expand:before {
+	content: "\30";
+}
+.arrow_move:before {
+	content: "\31";
+}
+.arrow_carrot-up:before {
+	content: "\32";
+}
+.arrow_carrot-down:before {
+	content: "\33";
+}
+.arrow_carrot-left:before {
+	content: "\34";
+}
+.arrow_carrot-right:before {
+	content: "\35";
+}
+.arrow_carrot-2up:before {
+	content: "\36";
+}
+.arrow_carrot-2down:before {
+	content: "\37";
+}
+.arrow_carrot-2left:before {
+	content: "\38";
+}
+.arrow_carrot-2right:before {
+	content: "\39";
+}
+.arrow_carrot-up_alt2:before {
+	content: "\3a";
+}
+.arrow_carrot-down_alt2:before {
+	content: "\3b";
+}
+.arrow_carrot-left_alt2:before {
+	content: "\3c";
+}
+.arrow_carrot-right_alt2:before {
+	content: "\3d";
+}
+.arrow_carrot-2up_alt2:before {
+	content: "\3e";
+}
+.arrow_carrot-2down_alt2:before {
+	content: "\3f";
+}
+.arrow_carrot-2left_alt2:before {
+	content: "\40";
+}
+.arrow_carrot-2right_alt2:before {
+	content: "\41";
+}
+.arrow_triangle-up:before {
+	content: "\42";
+}
+.arrow_triangle-down:before {
+	content: "\43";
+}
+.arrow_triangle-left:before {
+	content: "\44";
+}
+.arrow_triangle-right:before {
+	content: "\45";
+}
+.arrow_triangle-up_alt2:before {
+	content: "\46";
+}
+.arrow_triangle-down_alt2:before {
+	content: "\47";
+}
+.arrow_triangle-left_alt2:before {
+	content: "\48";
+}
+.arrow_triangle-right_alt2:before {
+	content: "\49";
+}
+.arrow_back:before {
+	content: "\4a";
+}
+.icon_minus-06:before {
+	content: "\4b";
+}
+.icon_plus:before {
+	content: "\4c";
+}
+.icon_close:before {
+	content: "\4d";
+}
+.icon_check:before {
+	content: "\4e";
+}
+.icon_minus_alt2:before {
+	content: "\4f";
+}
+.icon_plus_alt2:before {
+	content: "\50";
+}
+.icon_close_alt2:before {
+	content: "\51";
+}
+.icon_check_alt2:before {
+	content: "\52";
+}
+.icon_zoom-out_alt:before {
+	content: "\53";
+}
+.icon_zoom-in_alt:before {
+	content: "\54";
+}
+.icon_search:before {
+	content: "\55";
+}
+.icon_box-empty:before {
+	content: "\56";
+}
+.icon_box-selected:before {
+	content: "\57";
+}
+.icon_minus-box:before {
+	content: "\58";
+}
+.icon_plus-box:before {
+	content: "\59";
+}
+.icon_box-checked:before {
+	content: "\5a";
+}
+.icon_circle-empty:before {
+	content: "\5b";
+}
+.icon_circle-slelected:before {
+	content: "\5c";
+}
+.icon_stop_alt2:before {
+	content: "\5d";
+}
+.icon_stop:before {
+	content: "\5e";
+}
+.icon_pause_alt2:before {
+	content: "\5f";
+}
+.icon_pause:before {
+	content: "\60";
+}
+.icon_menu:before {
+	content: "\61";
+}
+.icon_menu-square_alt2:before {
+	content: "\62";
+}
+.icon_menu-circle_alt2:before {
+	content: "\63";
+}
+.icon_ul:before {
+	content: "\64";
+}
+.icon_ol:before {
+	content: "\65";
+}
+.icon_adjust-horiz:before {
+	content: "\66";
+}
+.icon_adjust-vert:before {
+	content: "\67";
+}
+.icon_document_alt:before {
+	content: "\68";
+}
+.icon_documents_alt:before {
+	content: "\69";
+}
+.icon_pencil:before {
+	content: "\6a";
+}
+.icon_pencil-edit_alt:before {
+	content: "\6b";
+}
+.icon_pencil-edit:before {
+	content: "\6c";
+}
+.icon_folder-alt:before {
+	content: "\6d";
+}
+.icon_folder-open_alt:before {
+	content: "\6e";
+}
+.icon_folder-add_alt:before {
+	content: "\6f";
+}
+.icon_info_alt:before {
+	content: "\70";
+}
+.icon_error-oct_alt:before {
+	content: "\71";
+}
+.icon_error-circle_alt:before {
+	content: "\72";
+}
+.icon_error-triangle_alt:before {
+	content: "\73";
+}
+.icon_question_alt2:before {
+	content: "\74";
+}
+.icon_question:before {
+	content: "\75";
+}
+.icon_comment_alt:before {
+	content: "\76";
+}
+.icon_chat_alt:before {
+	content: "\77";
+}
+.icon_vol-mute_alt:before {
+	content: "\78";
+}
+.icon_volume-low_alt:before {
+	content: "\79";
+}
+.icon_volume-high_alt:before {
+	content: "\7a";
+}
+.icon_quotations:before {
+	content: "\7b";
+}
+.icon_quotations_alt2:before {
+	content: "\7c";
+}
+.icon_clock_alt:before {
+	content: "\7d";
+}
+.icon_lock_alt:before {
+	content: "\7e";
+}
+.icon_lock-open_alt:before {
+	content: "\e000";
+}
+.icon_key_alt:before {
+	content: "\e001";
+}
+.icon_cloud_alt:before {
+	content: "\e002";
+}
+.icon_cloud-upload_alt:before {
+	content: "\e003";
+}
+.icon_cloud-download_alt:before {
+	content: "\e004";
+}
+.icon_image:before {
+	content: "\e005";
+}
+.icon_images:before {
+	content: "\e006";
+}
+.icon_lightbulb_alt:before {
+	content: "\e007";
+}
+.icon_gift_alt:before {
+	content: "\e008";
+}
+.icon_house_alt:before {
+	content: "\e009";
+}
+.icon_genius:before {
+	content: "\e00a";
+}
+.icon_mobile:before {
+	content: "\e00b";
+}
+.icon_tablet:before {
+	content: "\e00c";
+}
+.icon_laptop:before {
+	content: "\e00d";
+}
+.icon_desktop:before {
+	content: "\e00e";
+}
+.icon_camera_alt:before {
+	content: "\e00f";
+}
+.icon_mail_alt:before {
+	content: "\e010";
+}
+.icon_cone_alt:before {
+	content: "\e011";
+}
+.icon_ribbon_alt:before {
+	content: "\e012";
+}
+.icon_bag_alt:before {
+	content: "\e013";
+}
+.icon_creditcard:before {
+	content: "\e014";
+}
+.icon_cart_alt:before {
+	content: "\e015";
+}
+.icon_paperclip:before {
+	content: "\e016";
+}
+.icon_tag_alt:before {
+	content: "\e017";
+}
+.icon_tags_alt:before {
+	content: "\e018";
+}
+.icon_trash_alt:before {
+	content: "\e019";
+}
+.icon_cursor_alt:before {
+	content: "\e01a";
+}
+.icon_mic_alt:before {
+	content: "\e01b";
+}
+.icon_compass_alt:before {
+	content: "\e01c";
+}
+.icon_pin_alt:before {
+	content: "\e01d";
+}
+.icon_pushpin_alt:before {
+	content: "\e01e";
+}
+.icon_map_alt:before {
+	content: "\e01f";
+}
+.icon_drawer_alt:before {
+	content: "\e020";
+}
+.icon_toolbox_alt:before {
+	content: "\e021";
+}
+.icon_book_alt:before {
+	content: "\e022";
+}
+.icon_calendar:before {
+	content: "\e023";
+}
+.icon_film:before {
+	content: "\e024";
+}
+.icon_table:before {
+	content: "\e025";
+}
+.icon_contacts_alt:before {
+	content: "\e026";
+}
+.icon_headphones:before {
+	content: "\e027";
+}
+.icon_lifesaver:before {
+	content: "\e028";
+}
+.icon_piechart:before {
+	content: "\e029";
+}
+.icon_refresh:before {
+	content: "\e02a";
+}
+.icon_link_alt:before {
+	content: "\e02b";
+}
+.icon_link:before {
+	content: "\e02c";
+}
+.icon_loading:before {
+	content: "\e02d";
+}
+.icon_blocked:before {
+	content: "\e02e";
+}
+.icon_archive_alt:before {
+	content: "\e02f";
+}
+.icon_heart_alt:before {
+	content: "\e030";
+}
+.icon_star_alt:before {
+	content: "\e031";
+}
+.icon_star-half_alt:before {
+	content: "\e032";
+}
+.icon_star:before {
+	content: "\e033";
+}
+.icon_star-half:before {
+	content: "\e034";
+}
+.icon_tools:before {
+	content: "\e035";
+}
+.icon_tool:before {
+	content: "\e036";
+}
+.icon_cog:before {
+	content: "\e037";
+}
+.icon_cogs:before {
+	content: "\e038";
+}
+.arrow_up_alt:before {
+	content: "\e039";
+}
+.arrow_down_alt:before {
+	content: "\e03a";
+}
+.arrow_left_alt:before {
+	content: "\e03b";
+}
+.arrow_right_alt:before {
+	content: "\e03c";
+}
+.arrow_left-up_alt:before {
+	content: "\e03d";
+}
+.arrow_right-up_alt:before {
+	content: "\e03e";
+}
+.arrow_right-down_alt:before {
+	content: "\e03f";
+}
+.arrow_left-down_alt:before {
+	content: "\e040";
+}
+.arrow_condense_alt:before {
+	content: "\e041";
+}
+.arrow_expand_alt3:before {
+	content: "\e042";
+}
+.arrow_carrot_up_alt:before {
+	content: "\e043";
+}
+.arrow_carrot-down_alt:before {
+	content: "\e044";
+}
+.arrow_carrot-left_alt:before {
+	content: "\e045";
+}
+.arrow_carrot-right_alt:before {
+	content: "\e046";
+}
+.arrow_carrot-2up_alt:before {
+	content: "\e047";
+}
+.arrow_carrot-2dwnn_alt:before {
+	content: "\e048";
+}
+.arrow_carrot-2left_alt:before {
+	content: "\e049";
+}
+.arrow_carrot-2right_alt:before {
+	content: "\e04a";
+}
+.arrow_triangle-up_alt:before {
+	content: "\e04b";
+}
+.arrow_triangle-down_alt:before {
+	content: "\e04c";
+}
+.arrow_triangle-left_alt:before {
+	content: "\e04d";
+}
+.arrow_triangle-right_alt:before {
+	content: "\e04e";
+}
+.icon_minus_alt:before {
+	content: "\e04f";
+}
+.icon_plus_alt:before {
+	content: "\e050";
+}
+.icon_close_alt:before {
+	content: "\e051";
+}
+.icon_check_alt:before {
+	content: "\e052";
+}
+.icon_zoom-out:before {
+	content: "\e053";
+}
+.icon_zoom-in:before {
+	content: "\e054";
+}
+.icon_stop_alt:before {
+	content: "\e055";
+}
+.icon_menu-square_alt:before {
+	content: "\e056";
+}
+.icon_menu-circle_alt:before {
+	content: "\e057";
+}
+.icon_document:before {
+	content: "\e058";
+}
+.icon_documents:before {
+	content: "\e059";
+}
+.icon_pencil_alt:before {
+	content: "\e05a";
+}
+.icon_folder:before {
+	content: "\e05b";
+}
+.icon_folder-open:before {
+	content: "\e05c";
+}
+.icon_folder-add:before {
+	content: "\e05d";
+}
+.icon_folder_upload:before {
+	content: "\e05e";
+}
+.icon_folder_download:before {
+	content: "\e05f";
+}
+.icon_info:before {
+	content: "\e060";
+}
+.icon_error-circle:before {
+	content: "\e061";
+}
+.icon_error-oct:before {
+	content: "\e062";
+}
+.icon_error-triangle:before {
+	content: "\e063";
+}
+.icon_question_alt:before {
+	content: "\e064";
+}
+.icon_comment:before {
+	content: "\e065";
+}
+.icon_chat:before {
+	content: "\e066";
+}
+.icon_vol-mute:before {
+	content: "\e067";
+}
+.icon_volume-low:before {
+	content: "\e068";
+}
+.icon_volume-high:before {
+	content: "\e069";
+}
+.icon_quotations_alt:before {
+	content: "\e06a";
+}
+.icon_clock:before {
+	content: "\e06b";
+}
+.icon_lock:before {
+	content: "\e06c";
+}
+.icon_lock-open:before {
+	content: "\e06d";
+}
+.icon_key:before {
+	content: "\e06e";
+}
+.icon_cloud:before {
+	content: "\e06f";
+}
+.icon_cloud-upload:before {
+	content: "\e070";
+}
+.icon_cloud-download:before {
+	content: "\e071";
+}
+.icon_lightbulb:before {
+	content: "\e072";
+}
+.icon_gift:before {
+	content: "\e073";
+}
+.icon_house:before {
+	content: "\e074";
+}
+.icon_camera:before {
+	content: "\e075";
+}
+.icon_mail:before {
+	content: "\e076";
+}
+.icon_cone:before {
+	content: "\e077";
+}
+.icon_ribbon:before {
+	content: "\e078";
+}
+.icon_bag:before {
+	content: "\e079";
+}
+.icon_cart:before {
+	content: "\e07a";
+}
+.icon_tag:before {
+	content: "\e07b";
+}
+.icon_tags:before {
+	content: "\e07c";
+}
+.icon_trash:before {
+	content: "\e07d";
+}
+.icon_cursor:before {
+	content: "\e07e";
+}
+.icon_mic:before {
+	content: "\e07f";
+}
+.icon_compass:before {
+	content: "\e080";
+}
+.icon_pin:before {
+	content: "\e081";
+}
+.icon_pushpin:before {
+	content: "\e082";
+}
+.icon_map:before {
+	content: "\e083";
+}
+.icon_drawer:before {
+	content: "\e084";
+}
+.icon_toolbox:before {
+	content: "\e085";
+}
+.icon_book:before {
+	content: "\e086";
+}
+.icon_contacts:before {
+	content: "\e087";
+}
+.icon_archive:before {
+	content: "\e088";
+}
+.icon_heart:before {
+	content: "\e089";
+}
+.icon_profile:before {
+	content: "\e08a";
+}
+.icon_group:before {
+	content: "\e08b";
+}
+.icon_grid-2x2:before {
+	content: "\e08c";
+}
+.icon_grid-3x3:before {
+	content: "\e08d";
+}
+.icon_music:before {
+	content: "\e08e";
+}
+.icon_pause_alt:before {
+	content: "\e08f";
+}
+.icon_phone:before {
+	content: "\e090";
+}
+.icon_upload:before {
+	content: "\e091";
+}
+.icon_download:before {
+	content: "\e092";
+}
+.social_facebook:before {
+	content: "\e093";
+}
+.social_twitter:before {
+	content: "\e094";
+}
+.social_pinterest:before {
+	content: "\e095";
+}
+.social_googleplus:before {
+	content: "\e096";
+}
+.social_tumblr:before {
+	content: "\e097";
+}
+.social_tumbleupon:before {
+	content: "\e098";
+}
+.social_wordpress:before {
+	content: "\e099";
+}
+.social_instagram:before {
+	content: "\e09a";
+}
+.social_dribbble:before {
+	content: "\e09b";
+}
+.social_vimeo:before {
+	content: "\e09c";
+}
+.social_linkedin:before {
+	content: "\e09d";
+}
+.social_rss:before {
+	content: "\e09e";
+}
+.social_deviantart:before {
+	content: "\e09f";
+}
+.social_share:before {
+	content: "\e0a0";
+}
+.social_myspace:before {
+	content: "\e0a1";
+}
+.social_skype:before {
+	content: "\e0a2";
+}
+.social_youtube:before {
+	content: "\e0a3";
+}
+.social_picassa:before {
+	content: "\e0a4";
+}
+.social_googledrive:before {
+	content: "\e0a5";
+}
+.social_flickr:before {
+	content: "\e0a6";
+}
+.social_blogger:before {
+	content: "\e0a7";
+}
+.social_spotify:before {
+	content: "\e0a8";
+}
+.social_delicious:before {
+	content: "\e0a9";
+}
+.social_facebook_circle:before {
+	content: "\e0aa";
+}
+.social_twitter_circle:before {
+	content: "\e0ab";
+}
+.social_pinterest_circle:before {
+	content: "\e0ac";
+}
+.social_googleplus_circle:before {
+	content: "\e0ad";
+}
+.social_tumblr_circle:before {
+	content: "\e0ae";
+}
+.social_stumbleupon_circle:before {
+	content: "\e0af";
+}
+.social_wordpress_circle:before {
+	content: "\e0b0";
+}
+.social_instagram_circle:before {
+	content: "\e0b1";
+}
+.social_dribbble_circle:before {
+	content: "\e0b2";
+}
+.social_vimeo_circle:before {
+	content: "\e0b3";
+}
+.social_linkedin_circle:before {
+	content: "\e0b4";
+}
+.social_rss_circle:before {
+	content: "\e0b5";
+}
+.social_deviantart_circle:before {
+	content: "\e0b6";
+}
+.social_share_circle:before {
+	content: "\e0b7";
+}
+.social_myspace_circle:before {
+	content: "\e0b8";
+}
+.social_skype_circle:before {
+	content: "\e0b9";
+}
+.social_youtube_circle:before {
+	content: "\e0ba";
+}
+.social_picassa_circle:before {
+	content: "\e0bb";
+}
+.social_googledrive_alt2:before {
+	content: "\e0bc";
+}
+.social_flickr_circle:before {
+	content: "\e0bd";
+}
+.social_blogger_circle:before {
+	content: "\e0be";
+}
+.social_spotify_circle:before {
+	content: "\e0bf";
+}
+.social_delicious_circle:before {
+	content: "\e0c0";
+}
+.social_facebook_square:before {
+	content: "\e0c1";
+}
+.social_twitter_square:before {
+	content: "\e0c2";
+}
+.social_pinterest_square:before {
+	content: "\e0c3";
+}
+.social_googleplus_square:before {
+	content: "\e0c4";
+}
+.social_tumblr_square:before {
+	content: "\e0c5";
+}
+.social_stumbleupon_square:before {
+	content: "\e0c6";
+}
+.social_wordpress_square:before {
+	content: "\e0c7";
+}
+.social_instagram_square:before {
+	content: "\e0c8";
+}
+.social_dribbble_square:before {
+	content: "\e0c9";
+}
+.social_vimeo_square:before {
+	content: "\e0ca";
+}
+.social_linkedin_square:before {
+	content: "\e0cb";
+}
+.social_rss_square:before {
+	content: "\e0cc";
+}
+.social_deviantart_square:before {
+	content: "\e0cd";
+}
+.social_share_square:before {
+	content: "\e0ce";
+}
+.social_myspace_square:before {
+	content: "\e0cf";
+}
+.social_skype_square:before {
+	content: "\e0d0";
+}
+.social_youtube_square:before {
+	content: "\e0d1";
+}
+.social_picassa_square:before {
+	content: "\e0d2";
+}
+.social_googledrive_square:before {
+	content: "\e0d3";
+}
+.social_flickr_square:before {
+	content: "\e0d4";
+}
+.social_blogger_square:before {
+	content: "\e0d5";
+}
+.social_spotify_square:before {
+	content: "\e0d6";
+}
+.social_delicious_square:before {
+	content: "\e0d7";
+}
+.icon_printer:before {
+	content: "\e103";
+}
+.icon_calulator:before {
+	content: "\e0ee";
+}
+.icon_building:before {
+	content: "\e0ef";
+}
+.icon_floppy:before {
+	content: "\e0e8";
+}
+.icon_drive:before {
+	content: "\e0ea";
+}
+.icon_search-2:before {
+	content: "\e101";
+}
+.icon_id:before {
+	content: "\e107";
+}
+.icon_id-2:before {
+	content: "\e108";
+}
+.icon_puzzle:before {
+	content: "\e102";
+}
+.icon_like:before {
+	content: "\e106";
+}
+.icon_dislike:before {
+	content: "\e0eb";
+}
+.icon_mug:before {
+	content: "\e105";
+}
+.icon_currency:before {
+	content: "\e0ed";
+}
+.icon_wallet:before {
+	content: "\e100";
+}
+.icon_pens:before {
+	content: "\e104";
+}
+.icon_easel:before {
+	content: "\e0e9";
+}
+.icon_flowchart:before {
+	content: "\e109";
+}
+.icon_datareport:before {
+	content: "\e0ec";
+}
+.icon_briefcase:before {
+	content: "\e0fe";
+}
+.icon_shield:before {
+	content: "\e0f6";
+}
+.icon_percent:before {
+	content: "\e0fb";
+}
+.icon_globe:before {
+	content: "\e0e2";
+}
+.icon_globe-2:before {
+	content: "\e0e3";
+}
+.icon_target:before {
+	content: "\e0f5";
+}
+.icon_hourglass:before {
+	content: "\e0e1";
+}
+.icon_balance:before {
+	content: "\e0ff";
+}
+.icon_rook:before {
+	content: "\e0f8";
+}
+.icon_printer-alt:before {
+	content: "\e0fa";
+}
+.icon_calculator_alt:before {
+	content: "\e0e7";
+}
+.icon_building_alt:before {
+	content: "\e0fd";
+}
+.icon_floppy_alt:before {
+	content: "\e0e4";
+}
+.icon_drive_alt:before {
+	content: "\e0e5";
+}
+.icon_search_alt:before {
+	content: "\e0f7";
+}
+.icon_id_alt:before {
+	content: "\e0e0";
+}
+.icon_id-2_alt:before {
+	content: "\e0fc";
+}
+.icon_puzzle_alt:before {
+	content: "\e0f9";
+}
+.icon_like_alt:before {
+	content: "\e0dd";
+}
+.icon_dislike_alt:before {
+	content: "\e0f1";
+}
+.icon_mug_alt:before {
+	content: "\e0dc";
+}
+.icon_currency_alt:before {
+	content: "\e0f3";
+}
+.icon_wallet_alt:before {
+	content: "\e0d8";
+}
+.icon_pens_alt:before {
+	content: "\e0db";
+}
+.icon_easel_alt:before {
+	content: "\e0f0";
+}
+.icon_flowchart_alt:before {
+	content: "\e0df";
+}
+.icon_datareport_alt:before {
+	content: "\e0f2";
+}
+.icon_briefcase_alt:before {
+	content: "\e0f4";
+}
+.icon_shield_alt:before {
+	content: "\e0d9";
+}
+.icon_percent_alt:before {
+	content: "\e0da";
+}
+.icon_globe_alt:before {
+	content: "\e0de";
+}
+.icon_clipboard:before {
+	content: "\e0e6";
+}
+
+
+	.glyph {
+		float: left;
+		text-align: center;
+		padding: .75em;
+		margin: .4em 1.5em .75em 0;
+		width: 6em;
+text-shadow: none;
+	}
+        .glyph_big {
+        font-size: 128px;
+        color: #59c5dc;
+        float: left;
+        margin-right: 20px;
+        }
+
+        .glyph div { padding-bottom: 10px;}
+
+	.glyph input {
+		font-family: consolas, monospace;
+		font-size: 12px;
+		width: 100%;
+		text-align: center;
+		border: 0;
+		box-shadow: 0 0 0 1px #ccc;
+		padding: .2em;
+                -moz-border-radius: 5px;
+                -webkit-border-radius: 5px;
+	}
+	.centered {
+		margin-left: auto;
+		margin-right: auto;
+	}
+	.glyph .fs1 {
+		font-size: 2em;
+	}
+
+	
diff --git a/src/main/jbake/assets/css/idea.css b/src/main/jbake/assets/css/idea.css
new file mode 100755
index 0000000..a0ec680
--- /dev/null
+++ b/src/main/jbake/assets/css/idea.css
@@ -0,0 +1,123 @@
+/*
+Intellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net>
+*/
+
+.hljs {
+  display: block; padding: 0.5em;
+  color: #000;
+  background: #fff;
+}
+
+.hljs-subst,
+.hljs-title {
+  font-weight: normal;
+  color: #000;
+}
+
+.hljs-comment,
+.hljs-template_comment,
+.hljs-javadoc,
+.diff .hljs-header {
+  color: #808080;
+  font-style: italic;
+}
+
+.hljs-annotation,
+.hljs-decorator,
+.hljs-preprocessor,
+.hljs-pragma,
+.hljs-doctype,
+.hljs-pi,
+.hljs-chunk,
+.hljs-shebang,
+.apache .hljs-cbracket,
+.hljs-prompt,
+.http .hljs-title {
+  color: #808000;
+}
+
+.hljs-tag,
+.hljs-pi {
+  background: #efefef;
+}
+
+.hljs-tag .hljs-title,
+.hljs-id,
+.hljs-attr_selector,
+.hljs-pseudo,
+.hljs-literal,
+.hljs-keyword,
+.hljs-hexcolor,
+.css .hljs-function,
+.ini .hljs-title,
+.css .hljs-class,
+.hljs-list .hljs-title,
+.clojure .hljs-title,
+.nginx .hljs-title,
+.tex .hljs-command,
+.hljs-request,
+.hljs-status, .hljs-name {
+  font-weight: bold;
+  color: #000080;
+}
+
+.hljs-attribute,
+.hljs-rules .hljs-keyword,
+.hljs-number,
+.hljs-date,
+.hljs-regexp,
+.tex .hljs-special {
+  font-weight: bold;
+  color: #0000ff;
+}
+
+.hljs-number,
+.hljs-regexp {
+  font-weight: normal;
+}
+
+.hljs-string,
+.hljs-value,
+.hljs-filter .hljs-argument,
+.css .hljs-function .hljs-params,
+.apache .hljs-tag {
+  color: #008000;
+  font-weight: bold;
+}
+
+.hljs-symbol,
+.ruby .hljs-symbol .hljs-string,
+.hljs-char,
+.tex .hljs-formula {
+  color: #000;
+  background: #d0eded;
+  font-style: italic;
+}
+
+.hljs-phpdoc,
+.hljs-yardoctag,
+.hljs-javadoctag {
+  text-decoration: underline;
+}
+
+.hljs-variable,
+.hljs-envvar,
+.apache .hljs-sqbracket,
+.nginx .hljs-built_in {
+  color: #660e7a;
+}
+
+.hljs-addition {
+  background: #baeeba;
+}
+
+.hljs-deletion {
+  background: #ffc8bd;
+}
+
+.diff .hljs-change {
+  background: #bccff9;
+}
+.hljs-meta {
+    color: #808000;
+}
\ No newline at end of file
diff --git a/src/main/jbake/assets/css/jqtree.css b/src/main/jbake/assets/css/jqtree.css
new file mode 100755
index 0000000..6d07f16
--- /dev/null
+++ b/src/main/jbake/assets/css/jqtree.css
@@ -0,0 +1,132 @@
+ul.jqtree-tree {
+  list-style: none outside;
+  margin-left: 0;
+  margin-bottom: 0;
+  padding: 0; }
+  ul.jqtree-tree ul.jqtree_common {
+    list-style: none outside;
+    margin-left: 12px;
+    margin-right: 0;
+    margin-bottom: 0;
+    padding: 0;
+    display: block; }
+  ul.jqtree-tree li.jqtree-closed > ul.jqtree_common {
+    display: none; }
+  ul.jqtree-tree li.jqtree_common {
+    clear: both;
+    list-style-type: none; }
+  ul.jqtree-tree .jqtree-toggler {
+    border-bottom: none;
+    color: #333;
+    text-decoration: none;
+    vertical-align: middle; }
+    ul.jqtree-tree .jqtree-toggler:hover {
+      color: #000;
+      text-decoration: none; }
+    ul.jqtree-tree .jqtree-toggler.jqtree-closed {
+      background-position: 0 0; }
+    ul.jqtree-tree .jqtree-toggler.jqtree-toggler-left {
+      margin-right: 0.5em; }
+    ul.jqtree-tree .jqtree-toggler.jqtree-toggler-right {
+      margin-left: 0.5em; }
+  ul.jqtree-tree .jqtree-element {
+    cursor: pointer;
+    position: relative; }
+  ul.jqtree-tree .jqtree-title {
+    color: #1C4257;
+    vertical-align: middle;
+    margin-left: 1.5em; }
+    ul.jqtree-tree .jqtree-title.jqtree-title-folder {
+      margin-left: 0; }
+  ul.jqtree-tree li.jqtree-folder {
+    margin-bottom: 4px; }
+    ul.jqtree-tree li.jqtree-folder.jqtree-closed {
+      margin-bottom: 1px; }
+  ul.jqtree-tree li.jqtree-ghost {
+    position: relative;
+    z-index: 10;
+    margin-right: 10px;
+    /* todo: add classes to span? */ }
+    ul.jqtree-tree li.jqtree-ghost span {
+      display: block; }
+    ul.jqtree-tree li.jqtree-ghost span.jqtree-circle {
+      border: solid 2px #0000ff;
+      -webkit-border-radius: 100px;
+      -moz-border-radius: 100px;
+      border-radius: 100px;
+      height: 8px;
+      width: 8px;
+      position: absolute;
+      top: -4px;
+      left: -6px;
+      -webkit-box-sizing: border-box;
+      -moz-box-sizing: border-box;
+      box-sizing: border-box; }
+    ul.jqtree-tree li.jqtree-ghost span.jqtree-line {
+      background-color: #0000ff;
+      height: 2px;
+      padding: 0;
+      position: absolute;
+      top: -1px;
+      left: 2px;
+      width: 100%; }
+    ul.jqtree-tree li.jqtree-ghost.jqtree-inside {
+      margin-left: 48px; }
+  ul.jqtree-tree span.jqtree-border {
+    position: absolute;
+    display: block;
+    left: -2px;
+    top: 0;
+    border: solid 2px #0000ff;
+    border-radius: 6px;
+    margin: 0;
+    box-sizing: content-box; }
+  ul.jqtree-tree li.jqtree-selected > .jqtree-element,
+  ul.jqtree-tree li.jqtree-selected > .jqtree-element:hover {
+    background-color: #97BDD6;
+    background: -webkit-gradient(linear, left top, left bottom, from(#BEE0F5), to(#89AFCA));
+    background: -moz-linear-gradient(top, #BEE0F5, #89AFCA);
+    background: -ms-linear-gradient(top, #BEE0F5, #89AFCA);
+    background: -o-linear-gradient(top, #BEE0F5, #89AFCA);
+    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); }
+  ul.jqtree-tree .jqtree-moving > .jqtree-element .jqtree-title {
+    outline: dashed 1px #0000ff; }
+
+ul.jqtree-tree.jqtree-rtl {
+  direction: rtl; }
+  ul.jqtree-tree.jqtree-rtl ul.jqtree_common {
+    margin-left: 0;
+    margin-right: 12px; }
+  ul.jqtree-tree.jqtree-rtl .jqtree-toggler {
+    margin-left: 0.5em;
+    margin-right: 0; }
+  ul.jqtree-tree.jqtree-rtl .jqtree-title {
+    margin-left: 0;
+    margin-right: 1.5em; }
+    ul.jqtree-tree.jqtree-rtl .jqtree-title.jqtree-title-folder {
+      margin-right: 0; }
+  ul.jqtree-tree.jqtree-rtl li.jqtree-ghost {
+    margin-right: 0;
+    margin-left: 10px; }
+    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost span.jqtree-circle {
+      right: -6px; }
+    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost span.jqtree-line {
+      right: 2px; }
+    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost.jqtree-inside {
+      margin-left: 0;
+      margin-right: 48px; }
+  ul.jqtree-tree.jqtree-rtl span.jqtree-border {
+    right: -2px; }
+
+span.jqtree-dragging {
+  color: #fff;
+  background: #000;
+  opacity: 0.6;
+  cursor: pointer;
+  padding: 2px 8px; }
+
+/* IE 6, 7, 8 */
+@media \0screen\,screen\9  {
+  ul.jqtree-tree li.jqtree-ghost span.jqtree-circle {
+    background: url(jqtree-circle.png) no-repeat;
+    border: 0 none; } }
diff --git a/src/main/jbake/assets/css/normalize.css b/src/main/jbake/assets/css/normalize.css
new file mode 100755
index 0000000..a356585
--- /dev/null
+++ b/src/main/jbake/assets/css/normalize.css
@@ -0,0 +1,432 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+  font-family: sans-serif; /* 1 */
+  -ms-text-size-adjust: 100%; /* 2 */
+  -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+  margin: 0;
+}
+
+/* HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+  display: inline-block; /* 1 */
+  vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+  display: none;
+}
+
+/* Links
+   ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+  background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+  outline: 0;
+  text-decoration: none;
+}
+a:focus {
+  text-decoration: none;
+  outline: 0;
+}
+
+/* Text-level semantics
+   ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+  font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+  font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+  background: #ff0;
+  color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+  font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sup {
+  top: -0.5em;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+/* Embedded content
+   ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+  border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+  overflow: hidden;
+}
+
+/* Grouping content
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+  margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+  overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+
+/* Forms
+   ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ *    Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  color: inherit; /* 1 */
+  font: inherit; /* 2 */
+  margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+  overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+  text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button; /* 2 */
+  cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+  line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box; /* 1 */
+  padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+  -webkit-appearance: textfield; /* 1 */
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box; /* 2 */
+  box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+  border: 0; /* 1 */
+  padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+  overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+  font-weight: bold;
+}
+
+/* Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+td,
+th {
+  padding: 0;
+}
diff --git a/src/main/jbake/assets/css/owl.css b/src/main/jbake/assets/css/owl.css
new file mode 100755
index 0000000..fd3669c
--- /dev/null
+++ b/src/main/jbake/assets/css/owl.css
@@ -0,0 +1,208 @@
+/* 
+ *  Core Owl Carousel CSS File
+ *  v1.3.3
+ */
+
+/* clearfix */
+.owl-carousel .owl-wrapper:after {
+  content: ".";
+  display: block;
+  clear: both;
+  visibility: hidden;
+  line-height: 0;
+  height: 0;
+}
+/* display none until init */
+.owl-carousel{
+  display: none;
+  position: relative;
+  width: 100%;
+  -ms-touch-action: pan-y;
+}
+.owl-carousel .owl-wrapper{
+  display: none;
+  position: relative;
+  -webkit-transform: translate3d(0px, 0px, 0px);
+}
+.owl-carousel .owl-wrapper-outer{
+  overflow: hidden;
+  position: relative;
+  width: 100%;
+}
+.owl-carousel .owl-wrapper-outer.autoHeight{
+  -webkit-transition: height 500ms ease-in-out;
+  transition: height 500ms ease-in-out;
+}
+  
+.owl-carousel .owl-item{
+  float: left;
+}
+.owl-controls .owl-page,
+.owl-controls .owl-buttons div{
+  cursor: pointer;
+}
+.owl-controls {
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+.owl-controls .owl-page,
+.owl-controls .owl-page span {
+  -webkit-transition: all 0.3s ease;
+  transition: all 0.3s ease;
+}
+
+/* mouse grab icon */
+.grabbing { 
+    cursor:url(grabbing.png) 8 8, move;
+}
+
+/* fix */
+.owl-carousel  .owl-wrapper,
+.owl-carousel  .owl-item{
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility:    hidden;
+  -ms-backface-visibility:     hidden;
+  -webkit-transform: translate3d(0,0,0);
+  -moz-transform: translate3d(0,0,0);
+  -ms-transform: translate3d(0,0,0);
+}
+
+/*
+*   Owl Carousel Owl Demo Theme 
+* v1.3.3
+*/
+
+.owl-theme .owl-controls{
+  margin-top: 10px;
+  text-align: center;
+}
+
+/* Styling Next and Prev buttons */
+
+.owl-theme .owl-controls .owl-buttons div{
+  color: #FFF;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;/*IE7 life-saver */
+  margin: 5px;
+  padding: 3px 10px;
+  font-size: 12px;
+  -webkit-border-radius: 30px;
+  -moz-border-radius: 30px;
+  border-radius: 30px;
+  background: #869791;
+  filter: Alpha(Opacity=50);/*IE7 fix*/
+  opacity: 0.5;
+}
+/* Clickable class fix problem with hover on touch devices */
+/* Use it for non-touch hover action */
+.owl-theme .owl-controls.clickable .owl-buttons div:hover{
+  filter: Alpha(Opacity=100);/*IE7 fix*/
+  opacity: 1;
+  text-decoration: none;
+}
+
+/* Styling Pagination*/
+
+.owl-theme .owl-controls .owl-page{
+  display: inline-block;
+  zoom: 1;
+  *display: inline;/*IE7 life-saver */
+}
+.owl-theme .owl-controls .owl-page span{
+  display: block;
+  width: 12px;
+  height: 12px;
+  margin: 5px 7px;
+  -webkit-border-radius: 20px;
+  -moz-border-radius: 20px;
+  border-radius: 20px;
+  background: #869791;
+}
+
+.owl-theme .owl-controls .owl-page.active span,
+.owl-theme .owl-controls.clickable .owl-page:hover span{
+}
+
+/* If PaginationNumbers is true */
+
+.owl-theme .owl-controls .owl-page span.owl-numbers{
+  height: auto;
+  width: auto;
+  color: #FFF;
+  padding: 2px 10px;
+  font-size: 12px;
+  -webkit-border-radius: 30px;
+  -moz-border-radius: 30px;
+  border-radius: 30px;
+}
+
+/* preloading images */
+.owl-item.loading{
+  min-height: 150px;
+  background: url(AjaxLoader.gif) no-repeat center center
+}
+
+.owl-schedule .owl-controls {
+  -webkit-transform:translateY(-1200%);
+  transform:translateY(-1200%);
+  position: absolute;
+  right:20px;
+}
+
+.owl-schedule .owl-controls .owl-page span {
+  background: transparent;
+  border-radius:0;
+  border:2px solid white;
+  width:8px;
+  height: 8px;
+}
+
+.owl-schedule .owl-controls .owl-page.active span,
+.owl-schedule .owl-controls .owl-page:hover span {
+  background: white;
+}
+
+/* Owl Testimonals */
+.owl-testimonials .owl-controls {
+  -webkit-transform:translateY(-1200%);
+  transform:translateY(-1200%);
+  position: absolute;
+  right:20px;
+}
+
+.owl-testimonials .owl-controls .owl-page span {
+  background: transparent;
+  border-radius:0;
+  border:2px solid white;
+  width:8px;
+  height: 8px;
+}
+
+.owl-testimonials .owl-controls .owl-page.active span,
+.owl-testimonials .owl-controls .owl-page:hover span {
+  background: white;
+}
+
+/* Twitter */
+.owl-twitter .owl-controls {
+  margin-top:100px;
+}
+
+.owl-twitter .owl-controls .owl-page span {
+  background: transparent;
+  border-radius:0;
+  border:2px solid white;
+  width:8px;
+  height: 8px;
+}
+
+.owl-twitter .owl-controls .owl-page.active span,
+.owl-twitter .owl-controls .owl-page:hover span {
+  background: white;
+}
\ No newline at end of file
diff --git a/src/main/jbake/assets/favicon.ico b/src/main/jbake/assets/favicon.ico
new file mode 100755
index 0000000..f90c480
--- /dev/null
+++ b/src/main/jbake/assets/favicon.ico
Binary files differ
diff --git a/src/main/jbake/assets/favicon.png b/src/main/jbake/assets/favicon.png
new file mode 100755
index 0000000..0ab5f3d
--- /dev/null
+++ b/src/main/jbake/assets/favicon.png
Binary files differ
diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.eot b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.eot
new file mode 100755
index 0000000..2fe8892
--- /dev/null
+++ b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.eot
Binary files differ
diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg
new file mode 100755
index 0000000..93538d7
--- /dev/null
+++ b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg
@@ -0,0 +1,1832 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG font generated by IcoMoon.
+<iconset grid="16"></iconset>
+</metadata>
+<defs>
+<font id="ElegantIcons" horiz-adv-x="512" >
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
+<glyph unicode="&#x21;" d="M 272,32C 280.832,32, 288,39.168, 288,48L 288,361.376 l 68.672-68.672c 6.24-6.24, 16.384-6.24, 22.624,0
+		c 6.24,6.24, 6.24,16.384,0,22.624l-96,96C 281.824,412.8, 280.064,413.952, 278.112,414.752c-3.904,1.632-8.32,1.632-12.224,0
+		C 263.968,413.984, 262.272,412.832, 260.8,411.392C 260.768,411.36, 260.736,411.36, 260.672,411.328l-96-96c-6.24-6.24-6.24-16.384,0-22.624
+		c 6.24-6.24, 16.384-6.24, 22.624,0L 256,361.376L 256,48 C 256,39.168, 263.168,32, 272,32z"  />
+<glyph unicode="&#x22;" d="M 272,416C 263.168,416, 256,408.832, 256,400l0-313.376 l-68.672,68.672c-6.24,6.24-16.384,6.24-22.624,0
+		c-6.24-6.24-6.24-16.384,0-22.624l 96-96c 0.032-0.032, 0.096-0.032, 0.128-0.096c 1.44-1.408, 3.168-2.592, 5.056-3.36
+		c 3.904-1.632, 8.32-1.632, 12.224,0c 1.952,0.8, 3.712,1.984, 5.184,3.456l 96,96c 6.24,6.24, 6.24,16.384,0,22.624
+		c-6.24,6.24-16.384,6.24-22.624,0L 288,86.624L 288,400 C 288,408.832, 280.832,416, 272,416z"  />
+<glyph unicode="&#x23;" d="M 64,239.936C 64,237.888, 64.448,235.84, 65.248,233.888c 0.768-1.888, 1.92-3.584, 3.328-5.024
+		C 68.608,228.8, 68.64,228.736, 68.672,228.672l 96-96c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624L 118.624,224L 432,224 
+		C 440.832,224, 448,231.168, 448,240C 448,248.832, 440.832,256, 432,256L 118.624,256 l 68.672,68.672c 6.24,6.24, 6.24,16.384,0,22.624
+		c-6.24,6.24-16.384,6.24-22.624,0l-96-96C 68.64,251.264, 68.608,251.168, 68.576,251.136C 67.168,249.696, 66.016,248, 65.248,246.112
+		C 64.416,244.16, 64,242.080, 64,240l0,0C 64,239.968, 64,239.968, 64,239.936z"  />
+<glyph unicode="&#x24;" d="M 64,240C 64,231.168, 71.168,224, 80,224l 313.376,0 l-68.672-68.672c-6.24-6.24-6.24-16.384,0-22.624
+		c 6.24-6.24, 16.384-6.24, 22.624,0l 96,96c 1.472,1.472, 2.656,3.232, 3.456,5.184C 447.552,235.84, 448,237.888, 448,239.936c0,0.032,0,0.032,0,0.064
+		l0,0c0,2.080-0.416,4.16-1.248,6.112c-0.8,1.952-1.984,3.712-3.456,5.184l-96,96c-6.24,6.24-16.384,6.24-22.624,0
+		c-6.24-6.24-6.24-16.384,0-22.624L 393.376,256L 80,256 C 71.168,256, 64,248.832, 64,240z"  />
+<glyph unicode="&#x25;" d="M 64,240C 64,231.168, 71.168,224, 80,224S 96,231.168, 96,240L 96,361.376 l 324.672-324.672c 6.24-6.24, 16.384-6.24, 22.624,0
+		c 6.24,6.24, 6.24,16.384,0,22.624L 118.624,384L 240,384 C 248.832,384, 256,391.168, 256,400C 256,408.832, 248.832,416, 240,416l-160,0 C 77.92,416, 75.84,415.584, 73.888,414.752
+		C 71.968,413.984, 70.272,412.832, 68.8,411.392C 68.768,411.36, 68.736,411.36, 68.672,411.328C 68.64,411.264, 68.608,411.168, 68.576,411.136
+		C 67.168,409.696, 66.016,408, 65.248,406.112C 64.416,404.16, 64,402.080, 64,400l0,0L 64,240 z"  />
+<glyph unicode="&#x26;" d="M 68.672,36.672c 6.24-6.24, 16.384-6.24, 22.624,0L 416,361.376L 416,240 C 416,231.168, 423.168,224, 432,224S 448,231.168, 448,240l0,160 
+		l0,0c0,2.080-0.416,4.16-1.248,6.112c-1.632,3.904-4.736,7.040-8.64,8.64C 436.16,415.584, 434.080,416, 432,416l-160,0 C 263.168,416, 256,408.832, 256,400
+		C 256,391.168, 263.168,384, 272,384l 121.376,0 L 68.672,59.328C 62.432,53.056, 62.432,42.944, 68.672,36.672z"  />
+<glyph unicode="&#x27;" d="M 432,224C 423.168,224, 416,216.832, 416,208l0-121.376 L 91.328,411.328c-6.24,6.24-16.384,6.24-22.624,0
+		c-6.24-6.24-6.24-16.384,0-22.624L 393.376,64L 272,64 C 263.168,64, 256,56.832, 256,48C 256,39.168, 263.168,32, 272,32l 160,0 
+		c 2.080,0, 4.16,0.416, 6.112,1.248c 3.904,1.632, 7.040,4.736, 8.64,8.64C 447.552,43.84, 448,45.888, 448,47.936c0,0.032,0,0.032,0,0.064l0,160 
+		C 448,216.832, 440.832,224, 432,224z"  />
+<glyph unicode="&#x28;" d="M 80,224C 71.168,224, 64,216.832, 64,208l0-160 c0-0.032,0-0.032,0-0.064c0-2.080, 0.416-4.128, 1.216-6.048
+		c 0.768-1.888, 1.92-3.584, 3.328-5.024c 0.064-0.064, 0.064-0.128, 0.128-0.192c 0.032-0.032, 0.096-0.032, 0.128-0.096
+		c 1.44-1.408, 3.168-2.592, 5.056-3.36C 75.84,32.416, 77.92,32, 80,32l 160,0 C 248.832,32, 256,39.168, 256,48C 256,56.832, 248.832,64, 240,64L 118.624,64 
+		L 443.328,388.672c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0L 96,86.624L 96,208 C 96,216.832, 88.832,224, 80,224z"  />
+<glyph unicode="&#x29;" d="M 324.672,388.672c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624l-64,64
+		C 281.824,476.8, 280.064,477.952, 278.112,478.752c-3.904,1.632-8.32,1.632-12.224,0C 263.968,477.984, 262.272,476.832, 260.8,475.392
+		C 260.768,475.36, 260.736,475.36, 260.672,475.328l-64-64c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0L 256,425.376l0-402.752 
+		l-36.672,36.672c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624l 64-64c 0.032-0.032, 0.096-0.032, 0.128-0.096
+		c 1.44-1.408, 3.168-2.592, 5.056-3.36c 3.904-1.632, 8.32-1.632, 12.224,0c 1.952,0.8, 3.712,1.984, 5.184,3.456l 64,64
+		c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0L 288,22.624L 288,425.376 L 324.672,388.672z"  />
+<glyph unicode="&#x2a;" d="M 292.48-27.488c 3.136-3.136, 7.264-4.704, 11.36-4.672c 4.128,0, 8.224,1.536, 11.36,4.672l 61.632,61.632
+		c 6.24,6.24, 6.24,16.384,0,22.624s-16.384,6.24-22.624,0L 320,22.56l0,281.28 c0,8.832-7.168,16-16,16S 288,312.672, 288,303.84l0-281.6 
+		l-36.864,36.864c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624L 292.48-27.488zM 208,127.84c 8.832,0, 16,7.168, 16,16l0,281.6 l 36.864-36.864c 6.24-6.24, 16.384-6.24, 22.624,0
+		c 6.24,6.24, 6.24,16.384,0,22.624L 219.52,475.168C 216.384,478.304, 212.288,479.84, 208.16,479.84c-4.128,0-8.224-1.536-11.36-4.672L 135.168,413.536
+		c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0L 192,425.12l0-281.28 C 192,135.008, 199.168,127.84, 208,127.84z"  />
+<glyph unicode="&#x2b;" d="M 88.928,103.008c 6.24,6.24, 6.24,16.384,0,22.624L 54.56,160L 336,160 c 8.832,0, 16,7.168, 16,16
+		C 352,184.832, 344.832,192, 336,192L 54.56,192 l 36.704,36.704c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0L 4.672,187.36
+		C 1.536,184.224,0,180.128,0,176c0-4.128, 1.536-8.224, 4.672-11.36l 61.632-61.632C 72.576,96.736, 82.688,96.736, 88.928,103.008zM 507.328,283.040l-61.632,61.632c-6.24,6.24-16.384,6.24-22.624,0s-6.24-16.384,0-22.624l 34.368-34.368L 176,287.68 
+		C 167.168,287.68, 160,280.512, 160,271.68s 7.168-16, 16-16l 281.44,0 l-36.704-36.704c-6.24-6.24-6.24-16.384,0-22.624
+		c 6.24-6.24, 16.384-6.24, 22.624,0l 63.968,63.968C 510.464,263.456, 512,267.552, 512,271.68C 512,275.808, 510.464,279.904, 507.328,283.040z"  />
+<glyph unicode="&#x2c;" d="M 510.752,214.112c-0.8,1.952-1.984,3.712-3.456,5.184l-64,64c-6.24,6.24-16.384,6.24-22.624,0
+		c-6.24-6.24-6.24-16.384,0-22.624L 457.376,224L 54.624,224 l 36.672,36.672c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0
+		l-64-64C 4.64,219.264, 4.608,219.168, 4.576,219.136C 3.168,217.696, 2.016,216, 1.248,214.112C 0.416,212.16,0,210.080,0,208l0,0
+		c0-0.032,0-0.032,0-0.064C0,205.888, 0.448,203.84, 1.248,201.888c 0.768-1.888, 1.92-3.584, 3.328-5.024C 4.608,196.8, 4.64,196.736, 4.672,196.672
+		l 64-64c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624L 54.624,192l 402.752,0 l-36.672-36.672
+		c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0l 64,64c 1.472,1.472, 2.656,3.232, 3.456,5.184
+		C 511.552,203.84, 512,205.888, 512,207.936c0,0.032,0,0.032,0,0.064l0,0C 512,210.080, 511.584,212.16, 510.752,214.112z"  />
+<glyph unicode="&#x2d;" d="M 64,240C 64,231.168, 71.168,224, 80,224S 96,231.168, 96,240L 96,361.376 L 393.376,64L 272,64 C 263.168,64, 256,56.832, 256,48
+		C 256,39.168, 263.168,32, 272,32l 160,0 c 2.080,0, 4.16,0.416, 6.112,1.248c 3.904,1.632, 7.040,4.736, 8.64,8.64C 447.552,43.84, 448,45.888, 448,47.936
+		c0,0.032,0,0.032,0,0.064l0,160 C 448,216.832, 440.832,224, 432,224S 416,216.832, 416,208l0-121.376 L 118.624,384L 240,384 C 248.832,384, 256,391.168, 256,400
+		C 256,408.832, 248.832,416, 240,416l-160,0 C 77.92,416, 75.84,415.584, 73.888,414.752C 71.968,413.984, 70.272,412.832, 68.8,411.392
+		C 68.768,411.36, 68.736,411.36, 68.672,411.328C 68.64,411.264, 68.608,411.168, 68.576,411.136C 67.168,409.696, 66.016,408, 65.248,406.112
+		C 64.416,404.16, 64,402.080, 64,400l0,0L 64,240 z"  />
+<glyph unicode="&#x2e;" d="M 80,224C 71.168,224, 64,216.832, 64,208l0-160 c0-0.032,0-0.032,0-0.064c0-2.080, 0.416-4.128, 1.216-6.048
+		c 0.768-1.888, 1.92-3.584, 3.328-5.024c 0.064-0.064, 0.064-0.128, 0.128-0.192c 0.032-0.032, 0.096-0.032, 0.128-0.096
+		c 1.44-1.408, 3.168-2.592, 5.056-3.36C 75.84,32.416, 77.92,32, 80,32l 160,0 C 248.832,32, 256,39.168, 256,48C 256,56.832, 248.832,64, 240,64L 118.624,64 
+		L 416,361.376L 416,240 C 416,231.168, 423.168,224, 432,224S 448,231.168, 448,240l0,160 l0,0c0,2.080-0.416,4.16-1.248,6.112c-1.632,3.904-4.736,7.040-8.64,8.64
+		C 436.16,415.584, 434.080,416, 432,416l-160,0 C 263.168,416, 256,408.832, 256,400C 256,391.168, 263.168,384, 272,384l 121.376,0 L 96,86.624L 96,208 C 96,216.832, 88.832,224, 80,224z"  />
+<glyph unicode="&#x2f;" d="M 475.328,443.328c-6.24,6.24-16.384,6.24-22.624,0L 320,310.624L 320,400 C 320,408.832, 312.832,416, 304,416S 288,408.832, 288,400l0-128 
+		c0-0.032,0-0.032,0-0.064C 288,269.888, 288.448,267.84, 289.248,265.888c 0.768-1.888, 1.92-3.584, 3.328-5.024C 292.608,260.8, 292.64,260.736, 292.672,260.672
+		C 292.736,260.64, 292.768,260.64, 292.8,260.608c 1.44-1.408, 3.168-2.592, 5.056-3.36C 299.84,256.416, 301.92,256, 304,256l 128,0 C 440.832,256, 448,263.168, 448,272
+		C 448,280.832, 440.832,288, 432,288l-89.376,0 l 132.672,132.672C 481.568,426.944, 481.568,437.056, 475.328,443.328zM 36.672,4.672c 6.24-6.24, 16.384-6.24, 22.624,0L 192,137.376L 192,48 C 192,39.168, 199.168,32, 208,32S 224,39.168, 224,48l0,128 
+		l0,0c0,2.080-0.416,4.16-1.248,6.112c-1.632,3.904-4.736,7.040-8.64,8.64C 212.16,191.584, 210.080,192, 208,192l-128,0 C 71.168,192, 64,184.832, 64,176
+		C 64,167.168, 71.168,160, 80,160l 89.376,0 l-132.672-132.672C 30.432,21.056, 30.432,10.944, 36.672,4.672z"  />
+<glyph unicode="&#x30;" d="M 478.752,438.112c-1.632,3.904-4.736,7.040-8.64,8.64C 468.16,447.584, 466.080,448, 464,448l-128,0 C 327.168,448, 320,440.832, 320,432
+		C 320,423.168, 327.168,416, 336,416l 89.376,0 L 292.672,283.328c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0L 448,393.376L 448,304 
+		C 448,295.168, 455.168,288, 464,288S 480,295.168, 480,304l0,128 l0,0C 480,434.080, 479.584,436.16, 478.752,438.112zM 48,160C 39.168,160, 32,152.832, 32,144l0-128 c0-0.032,0-0.032,0-0.064c0-2.080, 0.416-4.128, 1.216-6.048
+		c 0.768-1.888, 1.92-3.584, 3.328-5.024c 0.064-0.064, 0.064-0.128, 0.128-0.192c 0.032-0.032, 0.096-0.032, 0.128-0.096
+		c 1.44-1.408, 3.168-2.592, 5.056-3.36C 43.84,0.416, 45.92,0, 48,0l 128,0 C 184.832,0, 192,7.168, 192,16C 192,24.832, 184.832,32, 176,32L 86.624,32 
+		l 132.672,132.672c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0L 64,54.624L 64,144 C 64,152.832, 56.832,160, 48,160z"  />
+<glyph unicode="&#x31;" d="M 510.752,214.112c-0.8,1.952-1.984,3.712-3.456,5.184l-64,64c-6.24,6.24-16.384,6.24-22.624,0
+		c-6.24-6.24-6.24-16.384,0-22.624L 457.376,224L 288,224 L 288,393.376 l 36.672-36.672c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624
+		l-64,64C 283.264,443.36, 283.168,443.392, 283.136,443.424C 281.696,444.832, 280,445.984, 278.112,446.752C 276.16,447.584, 274.080,448, 272,448C 271.968,448, 271.968,448, 271.936,448
+		C 269.888,448, 267.84,447.552, 265.888,446.752C 264,445.984, 262.304,444.832, 260.864,443.424C 260.8,443.392, 260.736,443.36, 260.672,443.328l-64-64
+		c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0L 256,393.376L 256,224 L 86.624,224 l 36.672,36.672c 6.24,6.24, 6.24,16.384,0,22.624
+		c-6.24,6.24-16.384,6.24-22.624,0l-64-64C 36.64,219.264, 36.608,219.168, 36.576,219.136C 35.168,217.696, 34.016,216, 33.248,214.112
+		C 32.416,212.16, 32,210.080, 32,208c0-0.032,0-0.032,0-0.064C 32,205.888, 32.448,203.84, 33.248,201.888c 0.768-1.888, 1.92-3.584, 3.328-5.024
+		C 36.608,196.8, 36.64,196.736, 36.672,196.672l 64-64c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624L 86.624,192L 256,192 l0-169.376 
+		l-36.672,36.672c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624l 64-64c 1.472-1.472, 3.232-2.656, 5.184-3.456
+		C 267.84-31.552, 269.888-32, 271.936-32c 0.032,0, 0.032,0, 0.064,0c 2.080,0, 4.16,0.416, 6.112,1.248c 1.952,0.8, 3.712,1.984, 5.184,3.456l 64,64
+		c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0L 288,22.624L 288,192 l 169.376,0 l-36.672-36.672
+		c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0l 64,64c 1.472,1.472, 2.656,3.232, 3.456,5.184
+		C 511.552,203.84, 512,205.888, 512,207.936c0,0.032,0,0.032,0,0.064C 512,210.080, 511.584,212.16, 510.752,214.112z"  />
+<glyph unicode="&#x32;" d="M 179.488,156.8L 272,249.312l 92.512-92.512c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624
+		L 283.36,283.2C 280.224,286.336, 276.128,287.872, 272,287.872c-4.128,0-8.224-1.536-11.36-4.672L 156.864,179.424c-6.24-6.24-6.24-16.384,0-22.624
+		C 163.104,150.56, 173.248,150.56, 179.488,156.8z"  />
+<glyph unicode="&#x33;" d="M 364.512,259.2L 272,166.688L 179.488,259.2c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624
+		l 103.776-103.776c 3.136-3.136, 7.264-4.704, 11.36-4.672c 4.128,0, 8.224,1.536, 11.36,4.672l 103.776,103.776c 6.24,6.24, 6.24,16.384,0,22.624
+		C 380.896,265.44, 370.752,265.44, 364.512,259.2z"  />
+<glyph unicode="&#x34;" d="M 196.8,196.64l 103.776-103.776c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624L 230.688,208
+		L 323.2,300.512c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0L 196.8,219.36C 193.664,216.224, 192.128,212.128, 192.128,208
+		C 192.128,203.872, 193.664,199.776, 196.8,196.64z"  />
+<glyph unicode="&#x35;" d="M 220.8,92.864c 6.24-6.24, 16.384-6.24, 22.624,0l 103.776,103.776c 3.136,3.136, 4.704,7.264, 4.672,11.36
+		c0,4.128-1.536,8.224-4.672,11.36L 243.424,323.136c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624L 313.312,208
+		L 220.8,115.488C 214.56,109.248, 214.56,99.104, 220.8,92.864z"  />
+<glyph unicode="&#x36;" d="M 375.232,252.608L 268.192,347.296c-3.2,3.2-7.392,4.736-11.584,4.672C 252.384,352.032, 248.192,350.496, 244.992,347.296
+		L 137.952,252.608c-6.272-6.272-6.272-16.48,0-22.752c 6.272-6.272, 16.48-6.272, 22.752,0l 95.872,84.832l 95.872-84.832
+		c 6.272-6.272, 16.48-6.272, 22.752,0C 381.536,236.128, 381.536,246.304, 375.232,252.608zM 268.192,232.544c-3.2,3.2-7.392,4.736-11.584,4.672C 252.384,237.28, 248.192,235.744, 244.992,232.544l-107.040-94.688
+		c-6.272-6.272-6.272-16.48,0-22.752c 6.272-6.272, 16.48-6.272, 22.752,0l 95.872,84.8l 95.872-84.8c 6.272-6.272, 16.48-6.272, 22.752,0
+		c 6.272,6.272, 6.272,16.48,0,22.752L 268.192,232.544z"  />
+<glyph unicode="&#x37;" d="M 351.296,218.176l-95.872-84.8l-95.872,84.8c-6.272,6.272-16.48,6.272-22.752,0c-6.272-6.272-6.272-16.48,0-22.752
+		l 107.040-94.688c 3.2-3.2, 7.392-4.736, 11.584-4.672C 259.616,96, 263.808,97.504, 267.008,100.704l 107.040,94.688c 6.272,6.272, 6.272,16.48,0,22.752
+		S 357.568,224.448, 351.296,218.176zM 374.048,332.928c-6.272,6.272-16.48,6.272-22.752,0l-95.872-84.8l-95.872,84.8C 153.248,339.2, 143.040,339.2, 136.768,332.928
+		c-6.272-6.272-6.272-16.48,0-22.752l 107.040-94.688c 3.2-3.2, 7.392-4.736, 11.584-4.672c 4.192-0.064, 8.416,1.472, 11.584,4.672l 107.040,94.688
+		C 380.352,316.448, 380.352,326.624, 374.048,332.928z"  />
+<glyph unicode="&#x38;" d="M 132.704,212.992l 94.688-107.040c 6.272-6.272, 16.48-6.272, 22.752,0s 6.272,16.48,0,22.752l-84.8,95.872l 84.8,95.872
+		c 6.272,6.272, 6.272,16.48,0,22.752s-16.48,6.272-22.752,0L 132.704,236.192C 129.504,232.992, 128,228.8, 128.032,224.608
+		C 128,220.416, 129.504,216.192, 132.704,212.992zM 364.928,343.232c-6.272,6.272-16.48,6.272-22.752,0L 247.456,236.192c-3.2-3.2-4.736-7.392-4.672-11.584
+		C 242.752,220.416, 244.256,216.192, 247.456,212.992l 94.688-107.040c 6.272-6.272, 16.48-6.272, 22.752,0s 6.272,16.48,0,22.752l-84.8,95.872l 84.8,95.872
+		C 371.2,326.752, 371.2,336.96, 364.928,343.232z"  />
+<glyph unicode="&#x39;" d="M 379.296,235.008L 284.608,342.048c-6.272,6.272-16.48,6.272-22.752,0s-6.272-16.48,0-22.752l 84.8-95.872l-84.8-95.872
+		c-6.272-6.272-6.272-16.48,0-22.752s 16.48-6.272, 22.752,0l 94.688,107.040c 3.2,3.2, 4.736,7.392, 4.672,11.584
+		C 384,227.616, 382.496,231.808, 379.296,235.008zM 147.072,104.768c 6.272-6.272, 16.48-6.272, 22.752,0l 94.688,107.040c 3.2,3.2, 4.736,7.392, 4.672,11.584
+		c 0.064,4.192-1.472,8.416-4.672,11.584L 169.856,342.048c-6.272,6.272-16.48,6.272-22.752,0s-6.272-16.48,0-22.752l 84.8-95.872l-84.8-95.872
+		C 140.8,121.248, 140.8,111.040, 147.072,104.768z"  />
+<glyph unicode="&#x3a;" d="M 283.36,283.2C 280.224,286.336, 276.128,287.872, 272,287.872c-4.128,0-8.224-1.536-11.36-4.672L 156.864,179.424
+		c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0L 272,249.312l 92.512-92.512c 6.24-6.24, 16.384-6.24, 22.624,0
+		c 6.24,6.24, 6.24,16.384,0,22.624L 283.36,283.2zM 273.056,445.856c-131.968,0-238.944-106.976-238.944-238.944S 141.12-32, 273.056-32S 512,74.976, 512,206.944
+		S 405.024,445.856, 273.056,445.856z M 273.056,0c-114.112,0-206.944,92.832-206.944,206.944s 92.832,206.944, 206.944,206.944S 480,321.024, 480,206.944
+		S 387.168,0, 273.056,0z"  />
+<glyph unicode="&#x3b;" d="M 364.512,259.2L 272,166.688L 179.488,259.2c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624
+		l 103.776-103.776c 3.136-3.136, 7.264-4.704, 11.36-4.672c 4.128,0, 8.224,1.536, 11.36,4.672l 103.776,103.776c 6.24,6.24, 6.24,16.384,0,22.624
+		C 380.896,265.44, 370.752,265.44, 364.512,259.2zM 273.152,445.728c-131.904,0-238.848-106.944-238.848-238.848C 34.272,74.944, 141.216-32, 273.152-32
+		C 405.056-32, 512,74.944, 512,206.848C 512,338.784, 405.056,445.728, 273.152,445.728z M 273.152,0c-114.048,0-206.848,92.8-206.848,206.848
+		c0,114.048, 92.8,206.848, 206.848,206.848C 387.2,413.728, 480,320.928, 480,206.848C 480,92.8, 387.2,0, 273.152,0z"  />
+<glyph unicode="&#x3c;" d="M 323.2,323.136c-6.24,6.24-16.384,6.24-22.624,0L 196.8,219.36C 193.664,216.224, 192.128,212.128, 192.128,208
+		c0-4.128, 1.536-8.224, 4.672-11.36l 103.776-103.776c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624L 230.688,208
+		L 323.2,300.512C 329.44,306.752, 329.44,316.896, 323.2,323.136zM 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0z"  />
+<glyph unicode="&#x3d;" d="M 347.2,219.36L 243.424,323.136c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624L 313.312,208
+		L 220.8,115.488c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0l 103.776,103.776c 3.136,3.136, 4.704,7.264, 4.672,11.36
+		C 351.872,212.128, 350.336,216.224, 347.2,219.36zM 273.152,445.696c-131.904,0-238.848-106.944-238.848-238.848S 141.248-32, 273.152-32S 512,74.944, 512,206.848
+		S 405.056,445.696, 273.152,445.696z M 273.152,0c-114.048,0-206.848,92.8-206.848,206.848s 92.8,206.848, 206.848,206.848S 480,320.896, 480,206.848S 387.2,0, 273.152,0z"  />
+<glyph unicode="&#x3e;" d="M 284.192,331.296c-3.2,3.2-7.392,4.736-11.584,4.672C 268.384,336.032, 264.192,334.496, 260.992,331.296L 153.952,236.608
+		c-6.272-6.272-6.272-16.48,0-22.752c 6.272-6.272, 16.48-6.272, 22.752,0l 95.872,84.832l 95.872-84.832c 6.272-6.272, 16.48-6.272, 22.752,0
+		c 6.272,6.272, 6.272,16.48,0,22.752L 284.192,331.296zM 284.192,216.544c-3.2,3.2-7.392,4.736-11.584,4.672C 268.384,221.28, 264.192,219.744, 260.992,216.544l-107.040-94.688
+		c-6.272-6.272-6.272-16.48,0-22.752c 6.272-6.272, 16.48-6.272, 22.752,0l 95.872,84.8l 95.872-84.8c 6.272-6.272, 16.48-6.272, 22.752,0
+		c 6.272,6.272, 6.272,16.48,0,22.752L 284.192,216.544zM 273.152,445.696c-131.904,0-238.848-106.944-238.848-238.848S 141.248-32, 273.152-32S 512,74.944, 512,206.848
+		S 405.056,445.696, 273.152,445.696z M 273.152,0c-114.048,0-206.848,92.8-206.848,206.848s 92.8,206.848, 206.848,206.848S 480,320.896, 480,206.848S 387.2,0, 273.152,0z"  />
+<glyph unicode="&#x3f;" d="M 367.296,202.176l-95.872-84.8l-95.872,84.8c-6.272,6.272-16.48,6.272-22.752,0c-6.272-6.272-6.272-16.48,0-22.752
+		l 107.040-94.688c 3.2-3.2, 7.392-4.736, 11.584-4.672c 4.192-0.064, 8.416,1.472, 11.584,4.672l 107.040,94.688c 6.272,6.272, 6.272,16.48,0,22.752
+		S 373.568,208.448, 367.296,202.176zM 367.296,316.928l-95.872-84.8l-95.872,84.8C 169.248,323.2, 159.040,323.2, 152.768,316.928c-6.272-6.272-6.272-16.48,0-22.752
+		l 107.040-94.688c 3.2-3.2, 7.392-4.736, 11.584-4.672c 4.192-0.064, 8.416,1.472, 11.584,4.672l 107.040,94.688c 6.272,6.272, 6.272,16.48,0,22.752
+		S 373.568,323.2, 367.296,316.928zM 273.152,445.696c-131.904,0-238.848-106.944-238.848-238.848S 141.248-32, 273.152-32S 512,74.944, 512,206.848
+		S 405.056,445.696, 273.152,445.696z M 273.152,0c-114.048,0-206.848,92.8-206.848,206.848s 92.8,206.848, 206.848,206.848S 480,320.896, 480,206.848S 387.2,0, 273.152,0z"  />
+<glyph unicode="&#x40;" d="M 181.344,208.608l 84.8,95.872c 6.272,6.272, 6.272,16.48,0,22.752s-16.48,6.272-22.752,0L 148.704,220.192
+		c-3.2-3.2-4.736-7.392-4.672-11.584C 144,204.416, 145.504,200.192, 148.704,196.992l 94.688-107.040c 6.272-6.272, 16.48-6.272, 22.752,0
+		s 6.272,16.48,0,22.752L 181.344,208.608zM 380.928,327.232c-6.272,6.272-16.48,6.272-22.752,0L 263.456,220.192c-3.2-3.2-4.736-7.392-4.672-11.584
+		C 258.752,204.416, 260.256,200.192, 263.456,196.992l 94.688-107.040c 6.272-6.272, 16.48-6.272, 22.752,0s 6.272,16.48,0,22.752l-84.8,95.872l 84.8,95.872
+		C 387.2,310.752, 387.2,320.96, 380.928,327.232zM 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0z"  />
+<glyph unicode="&#x41;" d="M 395.296,219.008L 300.608,326.048c-6.272,6.272-16.48,6.272-22.752,0s-6.272-16.48,0-22.752l 84.8-95.872l-84.8-95.872
+		c-6.272-6.272-6.272-16.48,0-22.752s 16.48-6.272, 22.752,0l 94.688,107.040c 3.2,3.2, 4.736,7.392, 4.672,11.584
+		C 400,211.616, 398.496,215.808, 395.296,219.008zM 285.216,207.424c 0.064,4.192-1.472,8.416-4.672,11.584L 185.856,326.048c-6.272,6.272-16.48,6.272-22.752,0
+		s-6.272-16.48,0-22.752l 84.8-95.872l-84.8-95.872c-6.272-6.272-6.272-16.48,0-22.752s 16.48-6.272, 22.752,0l 94.688,107.040
+		C 283.744,199.008, 285.28,203.2, 285.216,207.424zM 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0z"  />
+<glyph unicode="&#x42;" d="M 143.968,160l 223.456,0 c 4.576,0, 8.64,2.208, 11.52,5.632l 0.064-0.064c 6.24,6.944, 6.24,18.208,0,25.152L 267.040,314.784
+		c-6.24,6.944-16.352,6.944-22.56,0c-0.16-0.192-0.224-0.448-0.384-0.64L 132.352,190.72c-6.24-6.944-6.24-18.208,0-25.152
+		C 132.416,165.504, 132.48,165.472, 132.544,165.408C 135.456,162.080, 139.456,160, 143.968,160z"  />
+<glyph unicode="&#x43;" d="M 266.912,165.216c 0.16,0.192, 0.224,0.448, 0.384,0.64l 111.712,123.424c 6.24,6.944, 6.24,18.208,0,25.152
+		c-0.064,0.064-0.128,0.096-0.192,0.128C 375.936,317.92, 371.904,320, 367.424,320L 143.968,320 c-4.576,0-8.64-2.208-11.552-5.632L 132.352,314.432
+		c-6.24-6.944-6.24-18.208,0-25.152l 111.968-124.064C 250.56,158.272, 260.672,158.272, 266.912,165.216z"  />
+<glyph unicode="&#x44;" d="M 289.28,347.648L 165.216,235.648c-6.944-6.24-6.944-16.352,0-22.56c 0.192-0.16, 0.448-0.224, 0.64-0.384l 123.424-111.712
+		c 6.944-6.24, 18.208-6.24, 25.152,0c 0.064,0.064, 0.064,0.128, 0.128,0.192C 317.92,104.064, 320,108.096, 320,112.576L 320,336.032 
+		c0,4.576-2.208,8.64-5.632,11.52l 0.064,0.064C 307.488,353.856, 296.224,353.856, 289.28,347.648z"  />
+<glyph unicode="&#x45;" d="M 222.304,100.384l 122.432,112.256c 6.848,6.24, 6.848,16.384,0,22.624c-0.192,0.16-0.448,0.224-0.64,0.384
+		l-121.792,112c-6.848,6.24-17.984,6.24-24.832,0C 197.44,347.584, 197.408,347.488, 197.344,347.424C 194.080,344.544, 192,340.512, 192,336l0-224 
+		c0-4.576, 2.176-8.64, 5.536-11.552l-0.064-0.064C 204.352,94.112, 215.456,94.112, 222.304,100.384z"  />
+<glyph unicode="&#x46;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 281.6,282.784c-5.44,6.944-14.304,6.944-19.744,0c-0.16-0.192-0.192-0.448-0.352-0.64L 163.776,158.72
+		c-5.44-6.944-5.44-18.208,0-25.152c 0.032-0.064, 0.128-0.064, 0.16-0.128C 166.464,130.080, 169.984,128, 173.92,128l 195.52,0 
+		c 4,0, 7.552,2.208, 10.080,5.632l 0.064-0.064c 5.44,6.944, 5.44,18.208,0,25.152L 281.6,282.784z"  />
+<glyph unicode="&#x47;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 379.744,250.592C 377.216,253.92, 373.696,256, 369.76,256l-195.52,0 C 170.24,256, 166.688,253.792, 164.16,250.368L 164.096,250.432
+		c-5.44-6.944-5.44-18.208,0-25.152l 97.984-124.064c 5.44-6.944, 14.304-6.944, 19.744,0c 0.16,0.192, 0.192,0.448, 0.352,0.64l 97.76,123.424
+		c 5.44,6.944, 5.44,18.208,0,25.152C 379.872,250.496, 379.808,250.528, 379.744,250.592z"  />
+<glyph unicode="&#x48;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 314.432,316.224c-6.944,5.44-18.208,5.44-25.152,0L 165.216,218.24c-6.944-5.44-6.944-14.304,0-19.744
+		c 0.192-0.16, 0.448-0.192, 0.64-0.352l 123.424-97.76c 6.944-5.44, 18.208-5.44, 25.152,0c 0.064,0.032, 0.064,0.128, 0.128,0.16
+		C 317.92,103.104, 320,106.624, 320,110.56l0,195.52 C 320,310.080, 317.792,313.632, 314.368,316.16L 314.432,316.224z"  />
+<glyph unicode="&#x49;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 378.144,218.464L 254.72,316.224c-6.944,5.44-18.208,5.44-25.152,0C 229.504,316.16, 229.472,316.096, 229.408,316.064
+		C 226.080,313.536, 224,310.016, 224,306.080l0-195.52 c0-4, 2.208-7.552, 5.632-10.080l-0.064-0.064c 6.944-5.44, 18.208-5.44, 25.152,0L 378.784,198.4
+		c 6.944,5.44, 6.944,14.304,0,19.744C 378.592,218.304, 378.336,218.336, 378.144,218.464z"  />
+<glyph unicode="&#x4a;" d="M 68.672,228.672l 96-96c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624L 118.624,224L 352,224 
+		c 64,0, 96-59.072, 96-112c0-8.832, 7.168-16, 16-16s 16,7.168, 16,16C 480,182.592, 448,256, 352,256L 118.624,256 l 68.672,68.672
+		c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0l-96-96C 62.432,245.056, 62.432,234.944, 68.672,228.672z"  />
+<glyph unicode="&#x4b;" d="M 144,192l 256,0 C 408.832,192, 416,199.168, 416,208C 416,216.832, 408.832,224, 400,224l-256,0 C 135.168,224, 128,216.832, 128,208
+		C 128,199.168, 135.168,192, 144,192z"  />
+<glyph unicode="&#x4c;" d="M 144,192L 256,192 l0-112 C 256,71.168, 263.168,64, 272,64S 288,71.168, 288,80L 288,192 l 112,0 C 408.832,192, 416,199.168, 416,208
+		C 416,216.832, 408.832,224, 400,224L 288,224 L 288,336 C 288,344.832, 280.832,352, 272,352S 256,344.832, 256,336L 256,224 L 144,224 C 135.168,224, 128,216.832, 128,208C 128,199.168, 135.168,192, 144,192z"  />
+<glyph unicode="&#x4d;" d="M 160.8,96.8c 6.24-6.24, 16.384-6.24, 22.624,0L 272,185.376l 88.576-88.576c 6.24-6.24, 16.384-6.24, 22.624,0
+		c 6.24,6.24, 6.24,16.384,0,22.624L 294.624,208l 88.576,88.576c 6.24,6.24, 6.24,16.384,0,22.624c-6.24,6.24-16.384,6.24-22.624,0
+		L 272,230.624L 183.424,319.2c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624L 249.376,208l-88.576-88.576
+		C 154.56,113.184, 154.56,103.040, 160.8,96.8z"  />
+<glyph unicode="&#x4e;" d="M 220.608,70.592c 0.64-0.512, 1.024-1.216, 1.696-1.696c 0.96-0.64, 2.048-0.768, 3.072-1.216
+		c 1.216-0.576, 2.4-1.12, 3.68-1.472c 1.248-0.32, 2.464-0.48, 3.744-0.576c 1.824-0.192, 3.584-0.192, 5.376,0.064
+		c 0.736,0.128, 1.44,0.32, 2.176,0.512c 2.208,0.544, 4.256,1.408, 6.272,2.624c 0.352,0.224, 0.64,0.48, 0.992,0.704
+		c 1.312,0.896, 2.72,1.568, 3.84,2.784c 0.8,0.864, 1.152,1.984, 1.792,2.944c 0.032,0.032, 0.096,0.064, 0.096,0.096l 190.688,305.632
+		c 6.784,10.336, 3.872,24.224-6.496,31.008s-24.224,3.872-31.008-6.496l-176.128-282.272L 132.992,217.984C 123.904,226.4, 109.76,225.856, 101.344,216.768
+		C 92.96,207.68, 93.504,193.504, 102.592,185.12l 117.184-114.016C 220,70.88, 220.32,70.816, 220.608,70.592z"  />
+<glyph unicode="&#x4f;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 400,224l-256,0 C 135.168,224, 128,216.832, 128,208C 128,199.168, 135.168,192, 144,192l 256,0 C 408.832,192, 416,199.168, 416,208
+		C 416,216.832, 408.832,224, 400,224z"  />
+<glyph unicode="&#x50;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 400,224L 288,224 L 288,336 C 288,344.832, 280.832,352, 272,352S 256,344.832, 256,336L 256,224 L 144,224 C 135.168,224, 128,216.832, 128,208C 128,199.168, 135.168,192, 144,192L 256,192 
+		l0-112 C 256,71.168, 263.168,64, 272,64S 288,71.168, 288,80L 288,192 l 112,0 C 408.832,192, 416,199.168, 416,208C 416,216.832, 408.832,224, 400,224z"  />
+<glyph unicode="&#x51;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 360.576,319.2L 272.608,231.232L 193.728,319.2c-6.24,6.24-16.384,6.24-22.624,0c-6.24-6.24-6.24-16.384,0-22.624
+		l 78.912-87.968l-89.184-89.184c-6.24-6.24-6.24-16.384,0-22.624c 6.24-6.24, 16.384-6.24, 22.624,0l 87.968,87.968l 78.912-87.968
+		c 6.24-6.24, 16.384-6.24, 22.624,0s 6.24,16.384,0,22.624L 294.016,207.392l 89.184,89.184c 6.24,6.24, 6.24,16.384,0,22.624
+		C 376.96,325.44, 366.816,325.44, 360.576,319.2z"  />
+<glyph unicode="&#x52;" d="M 257.344,480c-141.376,0-256-114.624-256-256s 114.624-256, 256-256s 256,114.624, 256,256S 398.72,480, 257.344,480z M 257.344,0c-123.52,0-224,100.48-224,224
+		s 100.48,224, 224,224s 224-100.48, 224-224S 380.832,0, 257.344,0zM 369.472,325.824c-10.336,6.784-24.224,3.872-31.008-6.496L 230.432,154.24L 178.784,202.048
+		C 169.696,210.432, 155.52,209.888, 147.104,200.8S 139.264,177.568, 148.352,169.152l 71.392-66.048c 0.256-0.224, 0.576-0.288, 0.832-0.512
+		c 0.64-0.512, 1.024-1.216, 1.696-1.696c 0.96-0.64, 2.048-0.768, 3.072-1.216c 1.216-0.576, 2.4-1.12, 3.68-1.472
+		c 1.248-0.32, 2.464-0.48, 3.744-0.576c 1.824-0.192, 3.584-0.192, 5.376,0.064c 0.736,0.128, 1.44,0.32, 2.176,0.512
+		c 2.208,0.544, 4.256,1.408, 6.272,2.624c 0.352,0.224, 0.64,0.48, 0.992,0.704c 1.312,0.896, 2.72,1.568, 3.84,2.784
+		c 0.8,0.864, 1.152,1.984, 1.792,2.944c 0.032,0.032, 0.096,0.064, 0.096,0.096l 122.624,187.424C 382.72,305.152, 379.808,319.040, 369.472,325.824z"  />
+<glyph unicode="&#x53;" d="M 304,480C 189.12,480, 96,386.88, 96,272c0-49.44, 17.312-94.752, 46.112-130.464l-135.584-135.584
+		c-8.672-8.672-8.672-22.752,0-31.424c 8.672-8.672, 22.752-8.672, 31.424,0l 135.584,135.584C 209.248,81.312, 254.56,64, 304,64
+		c 114.88,0, 208,93.12, 208,208S 418.88,480, 304,480z M 304,96C 206.944,96, 128,174.944, 128,272S 206.944,448, 304,448S 480,369.056, 480,272S 401.056,96, 304,96zM 400,288l-192,0 C 199.168,288, 192,280.832, 192,272C 192,263.168, 199.168,256, 208,256l 192,0 C 408.832,256, 416,263.168, 416,272
+		C 416,280.832, 408.832,288, 400,288z"  />
+<glyph unicode="&#x54;" d="M 304,480C 189.12,480, 96,386.88, 96,272c0-49.44, 17.312-94.752, 46.112-130.464l-135.584-135.584
+		c-8.672-8.672-8.672-22.752,0-31.424c 8.672-8.672, 22.752-8.672, 31.424,0l 135.584,135.584C 209.248,81.312, 254.56,64, 304,64
+		c 114.88,0, 208,93.12, 208,208S 418.88,480, 304,480z M 304,96C 206.944,96, 128,174.944, 128,272S 206.944,448, 304,448S 480,369.056, 480,272S 401.056,96, 304,96zM 400,288L 320,288 L 320,368 C 320,376.832, 312.832,384, 304,384C 295.168,384, 288,376.832, 288,368L 288,288 L 208,288 C 199.168,288, 192,280.832, 192,272
+		C 192,263.168, 199.168,256, 208,256L 288,256 l0-80 C 288,167.168, 295.168,160, 304,160C 312.832,160, 320,167.168, 320,176L 320,256 l 80,0 C 408.832,256, 416,263.168, 416,272
+		C 416,280.832, 408.832,288, 400,288z"  />
+<glyph unicode="&#x55;" d="M 304,480C 189.12,480, 96,386.88, 96,272c0-49.44, 17.344-94.816, 46.144-130.528l-137.472-137.472c-8.64-8.64-8.64-22.688,0-31.328
+		c 8.64-8.64, 22.688-8.64, 31.328,0l 137.472,137.472C 209.184,81.344, 254.56,64, 304,64c 114.88,0, 208,93.12, 208,208S 418.88,480, 304,480z M 304,96
+		C 206.944,96, 128,174.944, 128,272S 206.944,448, 304,448S 480,369.056, 480,272S 401.056,96, 304,96z"  />
+<glyph unicode="&#x56;" d="M 416,416L 96,416 C 78.336,416, 64,401.664, 64,384l0-320 c0-17.664, 14.336-32, 32-32l 320,0 c 17.664,0, 32,14.336, 32,32L 448,384 C 448,401.664, 433.664,416, 416,416z
+		 M 416,64L 96,64 L 96,384 l 320,0 L 416,64 z"  />
+<glyph unicode="&#x57;" d="M 416,416L 96,416 C 78.336,416, 64,401.664, 64,384l0-320 c0-17.664, 14.336-32, 32-32l 320,0 c 17.664,0, 32,14.336, 32,32L 448,384 C 448,401.664, 433.664,416, 416,416z
+		 M 416,64L 96,64 L 96,384 l 320,0 L 416,64 zM 192,128l 128,0 c 17.664,0, 32,14.336, 32,32L 352,288 c0,17.664-14.336,32-32,32L 192,320 C 174.336,320, 160,305.664, 160,288l0-128 C 160,142.336, 174.336,128, 192,128z"  />
+<glyph unicode="&#x58;" d="M 128,320l0-224 c0-17.664, 14.336-32, 32-32l 224,0 c 17.664,0, 32,14.336, 32,32L 416,320 c0,17.664-14.336,32-32,32L 160,352 C 142.336,352, 128,337.664, 128,320z M 384,96L 160,96 
+		L 160,320 l 224,0 L 384,96 zM 208,192l 128,0 C 344.832,192, 352,199.168, 352,208C 352,216.832, 344.832,224, 336,224l-128,0 C 199.168,224, 192,216.832, 192,208
+		C 192,199.168, 199.168,192, 208,192z"  />
+<glyph unicode="&#x59;" d="M 128,320l0-224 c0-17.664, 14.336-32, 32-32l 224,0 c 17.664,0, 32,14.336, 32,32L 416,320 c0,17.664-14.336,32-32,32L 160,352 C 142.336,352, 128,337.664, 128,320z M 384,96L 160,96 
+		L 160,320 l 224,0 L 384,96 zM 208,192L 256,192 l0-48 C 256,135.168, 263.168,128, 272,128S 288,135.168, 288,144L 288,192 l 48,0 C 344.832,192, 352,199.168, 352,208
+		C 352,216.832, 344.832,224, 336,224L 288,224 L 288,272 C 288,280.832, 280.832,288, 272,288S 256,280.832, 256,272L 256,224 L 208,224 C 199.168,224, 192,216.832, 192,208C 192,199.168, 199.168,192, 208,192z"  />
+<glyph unicode="&#x5a;" d="M 416,64L 96,64 L 96,384 l 236.032,0 L 352,416L 96,416 C 78.336,416, 64,401.664, 64,384l0-320 c0-17.664, 14.336-32, 32-32l 320,0 c 17.664,0, 32,14.336, 32,32L 448,275.296 L 416,224L 416,64 
+		zM 469.856,444.352C 466.080,446.816, 461.824,448, 457.632,448c-7.296,0-14.464-3.584-18.752-10.144L 264.928,186.912l-67.296,76.8
+		C 188.512,272.128, 174.368,271.584, 165.952,262.496S 158.112,239.232, 167.2,230.848l 80.896-92.32c 0.512-0.832, 1.312-1.472, 1.952-2.24l 2.048-2.336
+		c 0.256-0.224, 0.576-0.288, 0.832-0.512c 0.64-0.512, 1.024-1.216, 1.696-1.696c 1.376-0.896, 2.88-1.472, 4.384-2.016
+		c 0.352-0.128, 0.64-0.352, 0.992-0.448c 2.24-0.736, 4.576-1.184, 6.88-1.184c 0.096,0, 0.192,0.064, 0.288,0.064
+		c 6.080-0.032, 12.128,2.208, 16.576,7.008c 0.832,0.896, 1.152,1.984, 1.824,2.976c 0.032,0.032, 0.064,0.064, 0.096,0.096l 190.688,275.104
+		C 483.104,423.68, 480.224,437.568, 469.856,444.352z"  />
+<glyph unicode="&#x5b;" d="M 256,416C 149.952,416, 64,330.048, 64,224s 85.952-192, 192-192s 192,85.952, 192,192S 362.048,416, 256,416z M 256,64c-88.224,0-160,71.776-160,160s 71.776,160, 160,160
+		s 160-71.776, 160-160S 344.224,64, 256,64z"  />
+<glyph unicode="&#x5c;" d="M 256,416C 149.952,416, 64,330.048, 64,224s 85.952-192, 192-192s 192,85.952, 192,192S 362.048,416, 256,416z M 256,64c-88.224,0-160,71.776-160,160s 71.776,160, 160,160
+		s 160-71.776, 160-160S 344.224,64, 256,64zM 160,224A96,96 1260 1 1 352,224A96,96 1260 1 1 160,224z"  />
+<glyph unicode="&#x5d;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,0c-123.52,0-224,100.48-224,224s 100.48,224, 224,224
+		s 224-100.48, 224-224S 379.52,0, 256,0zM 320,320L 192,320 C 174.336,320, 160,305.664, 160,288l0-128 c0-17.664, 14.336-32, 32-32l 128,0 c 17.664,0, 32,14.336, 32,32L 352,288 C 352,305.664, 337.664,320, 320,320z"  />
+<glyph unicode="&#x5e;" d="M 320,128c 17.664,0, 32,14.336, 32,32L 352,288 c0,17.664-14.336,32-32,32L 192,320 C 174.336,320, 160,305.664, 160,288l0-128 c0-17.664, 14.336-32, 32-32L 320,128 z"  />
+<glyph unicode="&#x5f;" d="M 256-32c 141.376,0, 256,114.624, 256,256s-114.624,256-256,256S0,365.376,0,224S 114.624-32, 256-32z M 256,448c 123.52,0, 224-100.48, 224-224s-100.48-224-224-224
+		s-224,100.48-224,224S 132.48,448, 256,448zM 192,128c 17.664,0, 32,14.336, 32,32L 224,288 c0,17.664-14.336,32-32,32S 160,305.664, 160,288l0-128 C 160,142.336, 174.336,128, 192,128zM 320,128c 17.664,0, 32,14.336, 32,32L 352,288 c0,17.664-14.336,32-32,32S 288,305.664, 288,288l0-128 C 288,142.336, 302.336,128, 320,128z"  />
+<glyph unicode="&#x60;" d="M 192,320C 174.336,320, 160,305.664, 160,288l0-128 c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32L 224,288 C 224,305.664, 209.664,320, 192,320zM 288,160c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32L 352,288 c0,17.664-14.336,32-32,32S 288,305.664, 288,288L 288,160 z"  />
+<glyph unicode="&#x61;" d="M 112,224l 288,0 C 408.832,224, 416,231.168, 416,240C 416,248.832, 408.832,256, 400,256l-288,0 C 103.168,256, 96,248.832, 96,240
+		C 96,231.168, 103.168,224, 112,224zM 112,320l 288,0 C 408.832,320, 416,327.168, 416,336C 416,344.832, 408.832,352, 400,352l-288,0 C 103.168,352, 96,344.832, 96,336
+		C 96,327.168, 103.168,320, 112,320zM 112,128l 288,0 c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16l-288,0 C 103.168,160, 96,152.832, 96,144
+		C 96,135.168, 103.168,128, 112,128z"  />
+<glyph unicode="&#x62;" d="M 480,448L 64,448 C 46.336,448, 32,433.664, 32,416l0-416 c0-17.664, 14.336-32, 32-32l 416,0 c 17.664,0, 32,14.336, 32,32L 512,416 C 512,433.664, 497.664,448, 480,448z
+		 M 480,0L 64,0 L 64,416 l 416,0 L 480,0 zM 144,192l 256,0 C 408.832,192, 416,199.168, 416,208C 416,216.832, 408.832,224, 400,224l-256,0 C 135.168,224, 128,216.832, 128,208
+		C 128,199.168, 135.168,192, 144,192zM 144,288l 256,0 C 408.832,288, 416,295.168, 416,304C 416,312.832, 408.832,320, 400,320l-256,0 C 135.168,320, 128,312.832, 128,304
+		C 128,295.168, 135.168,288, 144,288zM 144,96l 256,0 c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16l-256,0 C 135.168,128, 128,120.832, 128,112
+		C 128,103.168, 135.168,96, 144,96z"  />
+<glyph unicode="&#x63;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 400,224l-256,0 C 135.168,224, 128,216.832, 128,208C 128,199.168, 135.168,192, 144,192l 256,0 C 408.832,192, 416,199.168, 416,208
+		C 416,216.832, 408.832,224, 400,224zM 400,320l-256,0 C 135.168,320, 128,312.832, 128,304C 128,295.168, 135.168,288, 144,288l 256,0 C 408.832,288, 416,295.168, 416,304
+		C 416,312.832, 408.832,320, 400,320zM 400,128l-256,0 C 135.168,128, 128,120.832, 128,112C 128,103.168, 135.168,96, 144,96l 256,0 c 8.832,0, 16,7.168, 16,16
+		C 416,120.832, 408.832,128, 400,128z"  />
+<glyph unicode="&#x64;" d="M 176,224l 256,0 C 440.832,224, 448,231.168, 448,240C 448,248.832, 440.832,256, 432,256l-256,0 C 167.168,256, 160,248.832, 160,240
+		C 160,231.168, 167.168,224, 176,224zM 176,352l 256,0 C 440.832,352, 448,359.168, 448,368C 448,376.832, 440.832,384, 432,384l-256,0 C 167.168,384, 160,376.832, 160,368
+		C 160,359.168, 167.168,352, 176,352zM 176,96l 256,0 c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16l-256,0 C 167.168,128, 160,120.832, 160,112
+		C 160,103.168, 167.168,96, 176,96zM 64,368A16,16 1260 1 1 96,368A16,16 1260 1 1 64,368zM 64,240A16,16 1260 1 1 96,240A16,16 1260 1 1 64,240zM 64,112A16,16 1260 1 1 96,112A16,16 1260 1 1 64,112z"  />
+<glyph unicode="&#x65;" d="M 432,256l-256,0 C 167.168,256, 160,248.832, 160,240C 160,231.168, 167.168,224, 176,224l 256,0 C 440.832,224, 448,231.168, 448,240
+		C 448,248.832, 440.832,256, 432,256zM 432,384l-256,0 C 167.168,384, 160,376.832, 160,368C 160,359.168, 167.168,352, 176,352l 256,0 C 440.832,352, 448,359.168, 448,368
+		C 448,376.832, 440.832,384, 432,384zM 432,128l-256,0 C 167.168,128, 160,120.832, 160,112C 160,103.168, 167.168,96, 176,96l 256,0 c 8.832,0, 16,7.168, 16,16
+		C 448,120.832, 440.832,128, 432,128zM 111.36,328.544L 111.36,407.456L 102.24,407.456L 84.992,398.24L 87.072,390.112L 100.8,397.504L 101.024,397.504L 101.024,328.544 	
+		zM 85.984,215.232L 77.632,207.104l0-6.56 L 128,200.544 L 128,209.408 L 92.544,209.408 L 92.544,209.632 l 6.304,5.824c 16.64,16.032, 27.2,27.808, 27.2,42.368
+		c0,11.296-7.168,22.944-24.16,22.944c-9.12,0-16.864-3.392-22.336-8.032l 3.392-7.52c 3.648,3.040, 9.6,6.688, 16.768,6.688
+		c 11.776,0, 15.648-7.392, 15.648-15.424C 115.264,244.608, 106.144,234.4, 85.984,215.232zM 99.104,81.152c-7.392,0-14.432,3.040-17.472,4.96l-2.912-8.256c 3.872-2.56, 11.648-5.344, 20.512-5.344
+		c 18.944,0, 28.768,11.040, 28.768,23.68c0,11.040-7.904,18.336-17.6,20.288l0,0.224 c 9.728,3.52, 14.56,10.432, 14.56,18.592
+		c0,9.6-7.040,18.816-22.592,18.816c-8.512,0-16.512-3.040-20.64-6.080l 2.784-7.776c 3.392,2.432, 9.472,5.216, 15.776,5.216
+		c 9.824,0, 13.856-5.6, 13.856-11.904c0-9.344-9.824-13.344-17.6-13.344L 90.592,120.224 l0-8 l 5.952,0 c 10.336,0, 20.288-4.736, 20.384-15.776
+		C 117.088,89.888, 112.832,81.152, 99.104,81.152z"  />
+<glyph unicode="&#x66;" d="M 432,384L 384,384 c0,17.664-14.336,32-32,32l-32,0 C 302.336,416, 288,401.664, 288,384L 80,384 C 71.168,384, 64,376.832, 64,368C 64,359.168, 71.168,352, 80,352L 288,352 
+		c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l 48,0 C 440.832,352, 448,359.168, 448,368C 448,376.832, 440.832,384, 432,384z M 352,352l-32,0 L 320,384 l 32,0 L 352,352 zM 432,256L 224,256 c0,17.664-14.336,32-32,32L 160,288 C 142.336,288, 128,273.664, 128,256L 80,256 C 71.168,256, 64,248.832, 64,240C 64,231.168, 71.168,224, 80,224L 128,224 
+		c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l 208,0 C 440.832,224, 448,231.168, 448,240C 448,248.832, 440.832,256, 432,256z M 192,224L 160,224 L 160,256 l 32,0 L 192,224 zM 432,128L 320,128 c0,17.664-14.336,32-32,32L 256,160 c-17.664,0-32-14.336-32-32L 80,128 C 71.168,128, 64,120.832, 64,112
+		C 64,103.168, 71.168,96, 80,96L 224,96 c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l 112,0 c 8.832,0, 16,7.168, 16,16
+		C 448,120.832, 440.832,128, 432,128z M 288,96L 256,96 l0,32 l 32,0 L 288,96 z"  />
+<glyph unicode="&#x67;" d="M 160,352L 160,400 C 160,408.832, 152.832,416, 144,416S 128,408.832, 128,400L 128,352 C 110.336,352, 96,337.664, 96,320l0-32 c0-17.664, 14.336-32, 32-32l0-208 
+		C 128,39.168, 135.168,32, 144,32S 160,39.168, 160,48L 160,256 c 17.664,0, 32,14.336, 32,32L 192,320 C 192,337.664, 177.664,352, 160,352z M 128,320l 32,0 l0-32 L 128,288 L 128,320 zM 288,192L 288,400 C 288,408.832, 280.832,416, 272,416S 256,408.832, 256,400L 256,192 c-17.664,0-32-14.336-32-32l0-32 c0-17.664, 14.336-32, 32-32l0-48 
+		C 256,39.168, 263.168,32, 272,32S 288,39.168, 288,48L 288,96 c 17.664,0, 32,14.336, 32,32l0,32 C 320,177.664, 305.664,192, 288,192z M 256,160l 32,0 l0-32 L 256,128 L 256,160 zM 416,288L 416,400 C 416,408.832, 408.832,416, 400,416S 384,408.832, 384,400L 384,288 c-17.664,0-32-14.336-32-32l0-32 c0-17.664, 14.336-32, 32-32l0-144 
+		c0-8.832, 7.168-16, 16-16s 16,7.168, 16,16L 416,192 c 17.664,0, 32,14.336, 32,32L 448,256 C 448,273.664, 433.664,288, 416,288z M 384,256l 32,0 l0-32 l-32,0 L 384,256 z"  />
+<glyph unicode="&#x68;" d="M 64-32l 384,0 c 17.664,0, 32,14.336, 32,32L 480,448 c0,17.664-14.336,32-32,32L 64,480 C 46.336,480, 32,465.664, 32,448l0-448 C 32-17.664, 46.336-32, 64-32z
+		 M 64,448l 384,0 l0-448 L 64,0 L 64,448 zM 368,384l-128,0 C 231.168,384, 224,376.832, 224,368C 224,359.168, 231.168,352, 240,352l 128,0 C 376.832,352, 384,359.168, 384,368
+		C 384,376.832, 376.832,384, 368,384zM 368,288l-224,0 C 135.168,288, 128,280.832, 128,272C 128,263.168, 135.168,256, 144,256l 224,0 C 376.832,256, 384,263.168, 384,272
+		C 384,280.832, 376.832,288, 368,288zM 368,192l-224,0 C 135.168,192, 128,184.832, 128,176C 128,167.168, 135.168,160, 144,160l 224,0 c 8.832,0, 16,7.168, 16,16
+		C 384,184.832, 376.832,192, 368,192zM 368,96l-224,0 C 135.168,96, 128,88.832, 128,80C 128,71.168, 135.168,64, 144,64l 224,0 c 8.832,0, 16,7.168, 16,16
+		C 384,88.832, 376.832,96, 368,96z"  />
+<glyph unicode="&#x69;" d="M 64,32l 32,0 l0-32 c0-17.664, 14.336-32, 32-32l 320,0 c 17.664,0, 32,14.336, 32,32L 480,384 c0,17.664-14.336,32-32,32l-32,0 L 416,448 c0,17.664-14.336,32-32,32L 64,480 
+		C 46.336,480, 32,465.664, 32,448l0-384 C 32,46.336, 46.336,32, 64,32z M 384,64L 64,64 L 64,448 l 320,0 L 384,64 z M 448,384l0-384 L 128,0 l0,32 l 256,0 c 17.664,0, 32,14.336, 32,32L 416,384 L 448,384 zM 160,368C 160,359.168, 167.168,352, 176,352l 160,0 C 344.832,352, 352,359.168, 352,368C 352,376.832, 344.832,384, 336,384l-160,0 
+		C 167.168,384, 160,376.832, 160,368zM 112,256l 224,0 C 344.832,256, 352,263.168, 352,272C 352,280.832, 344.832,288, 336,288l-224,0 C 103.168,288, 96,280.832, 96,272
+		C 96,263.168, 103.168,256, 112,256zM 112,192l 224,0 C 344.832,192, 352,199.168, 352,208C 352,216.832, 344.832,224, 336,224l-224,0 C 103.168,224, 96,216.832, 96,208
+		C 96,199.168, 103.168,192, 112,192zM 112,128l 224,0 c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16l-224,0 C 103.168,160, 96,152.832, 96,144
+		C 96,135.168, 103.168,128, 112,128z"  />
+<glyph unicode="&#x6a;" d="M 481.952-1.952L 448.32,99.552L 176.8,371.072L 160,354.272L 108.928,303.2L 380.448,31.68 	zM 63.68,348.448L 131.552,416.32l-33.6,33.6c-18.752,18.752-49.12,18.752-67.872,0c-18.752-18.72-18.752-49.152,0-67.872
+		L 63.68,348.448z"  />
+<glyph unicode="&#x6b;" d="M 329.92,92.512L 416,64L 387.488,150.080L 223.008,314.56L 165.44,256.992 	zM 131.552,290.88L 189.12,348.448L 146.752,390.816c-15.904,15.904-41.664,15.904-57.568,0c-15.904-15.904-15.904-41.664,0-57.568
+		L 131.552,290.88zM 480,480L 32,480 C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,448 C 512,465.664, 497.664,480, 480,480z
+		 M 480,0L 32,0 L 32,448 l 448,0 L 480,0 z"  />
+<glyph unicode="&#x6c;" d="M 338.752,141.248L 310.24,227.328L 145.76,391.808L 88.192,334.24L 252.672,169.76 	zM 11.936,468.064c-15.904-15.904-15.904-41.664,0-57.568l 42.368-42.368l 57.568,57.568L 69.504,468.064
+		C 53.6,483.968, 27.84,483.968, 11.936,468.064zM 480,384L 253.152,384 l 32-32L 480,352 l0-352 L 128,0 L 128,194.848 l-32,32L 96,0 c0-17.664, 14.336-32, 32-32l 352,0 c 17.664,0, 32,14.336, 32,32L 512,352 
+		C 512,369.664, 497.664,384, 480,384z"  />
+<glyph unicode="&#x6d;" d="M 480,384l-144.512,0 C 317.824,384, 297.504,375.008, 288,352c0,0-4.16-29.344-32-32L 32,320 C 14.336,320,0,306.176,0,288.512L0,0 
+		c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,256 L 512,288.512 L 512,352 C 512,369.664, 497.664,384, 480,384z M 480,288.512L 480,256 l0-256 L 32,0 L 32,288 l 224,0 
+		c 1.024,0, 2.016,0.064, 3.040,0.16C 289.056,291.008, 307.616,312, 316.192,333.6C 324.512,354.496, 339.008,352, 339.008,352L 480,352 L 480,288.512 z"  />
+<glyph unicode="&#x6e;" d="M 512,320.512L 512,384 c0,17.664-14.336,32-32,32l-160,0 C 302.336,416, 288,401.664, 288,384c0,0-4.16-29.344-32-32L 32,352 C 14.336,352,0,338.176,0,320.512L0,288 
+		l 512,0 L 512,320.512 zM 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,256 L0,256 l0-256 C0-17.664, 14.336-32, 32-32z M 32,224l 448,0 l0-224 L 32,0 L 32,224 z"  />
+<glyph unicode="&#x6f;" d="M 480,384l-112.512,0 C 349.824,384, 329.504,375.008, 320,352c0,0-4.16-29.344-32-32L 64,320 C 46.336,320, 32,306.176, 32,288.512L 32,0 
+		c0-17.664, 14.336-32, 32-32l 416,0 c 17.664,0, 32,14.336, 32,32L 512,256 L 512,288.512 L 512,352 C 512,369.664, 497.664,384, 480,384z M 480,288.512L 480,256 l0-256 L 64,0 L 64,288 l 224,0 
+		c 1.024,0, 2.016,0.064, 3.040,0.16c 30.016,2.848, 48.576,23.872, 57.152,45.472C 356.512,354.496, 371.008,352, 371.008,352L 480,352 L 480,288.512 zM 352,160L 288,160 L 288,224 c0,8.832-7.168,16-16,16S 256,232.832, 256,224l0-64 L 192,160 c-8.832,0-16-7.168-16-16
+		C 176,135.168, 183.168,128, 192,128l 64,0 l0-64 c0-8.832, 7.168-16, 16-16S 288,55.168, 288,64l0,64 l 64,0 c 8.832,0, 16,7.168, 16,16
+		C 368,152.832, 360.832,160, 352,160z"  />
+<glyph unicode="&#x70;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,0c-123.52,0-224,100.48-224,224s 100.48,224, 224,224
+		s 224-100.48, 224-224S 379.52,0, 256,0zM 256,288C 238.336,288, 224,273.664, 224,256l0-160 c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32L 288,256 C 288,273.664, 273.664,288, 256,288zM 224,351.488A32,32 1260 1 1 288,351.488A32,32 1260 1 1 224,351.488z"  />
+<glyph unicode="&#x71;" d="M 371.424,470.624C 365.408,476.64, 357.28,480, 348.768,480L 163.232,480 c-8.48,0-16.64-3.36-22.624-9.376l-131.2-131.232
+		C 3.36,333.408,0,325.28,0,316.768l0-185.568 c0-8.48, 3.36-16.64, 9.376-22.624l 131.2-131.232C 146.592-28.64, 154.72-32, 163.232-32l 185.568,0 
+		c 8.48,0, 16.64,3.36, 22.624,9.376l 131.2,131.232C 508.64,114.592, 512,122.72, 512,131.232L 512,316.768 c0,8.48-3.36,16.64-9.376,22.624L 371.424,470.624z
+		 M 480,131.232L 348.768,0L 163.232,0 L 32,131.232L 32,316.768 L 163.232,448l 185.568,0 L 480,316.768L 480,131.232 zM 256,384C 238.336,384, 224,369.664, 224,352l0-160 c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32L 288,352 C 288,369.664, 273.664,384, 256,384zM 224,96A32,32 1260 1 1 288,96A32,32 1260 1 1 224,96z"  />
+<glyph unicode="&#x72;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,0c-123.52,0-224,100.48-224,224s 100.48,224, 224,224
+		s 224-100.48, 224-224S 379.52,0, 256,0zM 256,384C 238.336,384, 224,369.664, 224,352l0-160 c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32L 288,352 C 288,369.664, 273.664,384, 256,384zM 224,96.512A32,32 1260 1 1 288,96.512A32,32 1260 1 1 224,96.512z"  />
+<glyph unicode="&#x73;" d="M 506.24,15.072l-222.016,416C 278.688,441.472, 267.84,448, 256.032,448L 256,448 C 244.192,448, 233.376,441.504, 227.808,431.104l-223.008-416
+		c-5.312-9.92-5.024-21.888, 0.736-31.552C 11.328-26.080, 21.76-32, 32.992-32l 444.992,0 c 11.232,0, 21.664,5.888, 27.456,15.552
+		C 511.232-6.816, 511.52,5.152, 506.24,15.072z M 32.992,0L 256,416l 222.016-416L 32.992,0 zM 224,255.488l0-96 c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32l0,96 c0,17.664-14.336,32-32,32S 224,273.184, 224,255.488zM 224,64A32,32 1260 1 1 288,64A32,32 1260 1 1 224,64z"  />
+<glyph unicode="&#x74;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,0c-123.52,0-224,100.48-224,224s 100.48,224, 224,224
+		s 224-100.48, 224-224S 379.52,0, 256,0zM 220.384,63.552A32.96,32.96 1260 1 1 286.304,63.55200000000002A32.96,32.96 1260 1 1 220.384,63.55200000000002zM 253.344,416c-62.048,0-128-45.088-128-128.672c0-17.664, 14.304-32, 32-32s 32,14.336, 32,32c0,44.448, 33.184,64.672, 64,64.672
+		c 23.904,0, 64-7.008, 64-54.016c0-16.672-4.384-36.128-36.768-53.984C 258.56,231.936, 221.344,200.608, 221.344,160c0-17.664, 14.304-32, 32-32s 32,14.336, 32,32
+		c0,5.952, 12.672,20.576, 26.080,27.968c 46.368,25.536, 69.92,62.56, 69.92,110.016C 381.344,379.52, 317.056,416, 253.344,416z"  />
+<glyph unicode="&#x75;" d="M 220.384,63.552A32.96,32.96 1260 1 1 286.304,63.55200000000002A32.96,32.96 1260 1 1 220.384,63.55200000000002zM 311.424,187.968c 46.368,25.536, 69.92,62.56, 69.92,110.016c0,81.504-64.288,118.016-128,118.016c-62.048,0-128-45.088-128-128.672
+		c0-17.664, 14.304-32, 32-32s 32,14.336, 32,32c0,44.448, 33.184,64.672, 64,64.672c 23.904,0, 64-7.008, 64-54.016c0-16.672-4.384-36.128-36.768-53.984
+		C 258.56,231.936, 221.344,200.608, 221.344,160c0-17.664, 14.304-32, 32-32s 32,14.336, 32,32C 285.344,165.952, 297.984,180.576, 311.424,187.968z"  />
+<glyph unicode="&#x76;" d="M 30.368,9.888c 2.624-5.632, 8.288-9.216, 14.496-9.216c 45.92,0, 84.768,11.168, 128.896,37.184
+		C 195.168,34.464, 237.44,30.272, 256,30.272c 140.096,0, 254.048,93.536, 254.048,208.544S 396.096,447.328, 256,447.328S 1.952,353.824, 1.952,238.816
+		c0-54.208, 26.144-106.592, 72.16-145.408c-10.432-23.68-24.352-46.016-41.504-66.464C 28.64,22.144, 27.744,15.488, 30.368,9.888z M 33.952,238.816
+		c0,97.344, 99.616,176.544, 222.048,176.544s 222.048-79.2, 222.048-176.544S 378.432,62.272, 256,62.272c-18.368,0-66.176,4.928-82.336,8.064
+		c-3.904,0.704-7.968-0.032-11.36-2.048C 132.48,50.048, 106.464,39.616, 78.624,35.2c 12,18.176, 21.984,37.376, 29.76,57.376
+		c 2.592,6.688, 0.48,14.24-5.248,18.56C 58.496,144.928, 33.952,190.304, 33.952,238.816z"  />
+<glyph unicode="&#x77;" d="M 446.56,291.36c 2.816-12.672, 4.448-25.696, 4.448-39.072c0-103.296-87.68-189.408-203.136-207.904
+		c 24.416-9.856, 51.776-15.616, 80.928-15.616c 27.488,0, 53.44,5.056, 76.864,13.856c 29.664-10.112, 62.048-12.736, 88.832-12.736
+		c-13.92,16.704-23.584,33.088-30.496,47.488C 493.696,103.872, 512,138.976, 512,177.632C 512,223.328, 486.496,264.064, 446.56,291.36zM 23.552,73.312c 2.784-5.28, 8.256-8.576, 14.176-8.576c 0.256,0, 0.544,0, 0.768,0.032
+		c 16.928,0.8, 50.592,12.032, 86.24,34.656c 19.072-3.36, 61.792-9.696, 76.704-9.696c 112.544,0, 200.672,78.368, 200.672,178.432
+		c0,98.4-89.984,178.432-200.672,178.432S 0.832,366.592, 0.832,268.192c0-45.792, 20.16-90.048, 55.648-123.168c-7.968-19.392-18.528-37.728-31.424-54.528
+		C 21.248,85.568, 20.672,78.848, 23.552,73.312z M 32.832,268.192c0,80.736, 75.648,146.432, 168.672,146.432s 168.672-65.696, 168.672-146.432
+		c0-83.456-72.512-146.432-168.672-146.432c-12.64,0-62.944,7.328-76.768,10.24c-4.224,0.832-8.608,0.064-12.128-2.336
+		c-13.728-9.088-26.656-15.968-37.92-21.024c 6.112,11.488, 11.392,23.392, 15.808,35.68c 2.272,6.368, 0.32,13.472-4.864,17.76
+		C 51.584,190.080, 32.832,227.776, 32.832,268.192z"  />
+<glyph unicode="&#x78;" d="M 32,91.936l 73.312,0 c 5.792-5.76, 139.232-118.080, 139.232-118.080C 251.488-30.368, 257.536-32, 262.816-32
+		c 0.8,0, 1.6,0.032, 2.368,0.096c 11.84,1.12, 20.288,11.040, 22.816,21.504L 288,458.368 C 285.504,468.864, 277.024,478.784, 265.184,479.904
+		C 264.416,479.968, 263.648,480, 262.816,480C 257.536,480, 251.488,478.368, 244.544,474.176c0,0-133.44-116.416-139.232-122.176L 32,352 C 14.336,352,0,337.664,0,320l0-4.064 L0,128 l0-4.064 
+		C0,106.24, 14.336,91.936, 32,91.936z M 32,128L 32,315.936 L 32,320 l 73.312,0 c 8.192,0, 16.384,3.424, 22.304,9.056C 133.44,334.592, 205.76,397.856, 256,441.696l0-435.68 
+		c-49.92,42.048-122.24,103.136-128.128,108.576c-5.984,5.984-14.112,9.312-22.592,9.312L 32,123.904 L 32,128 zM 506.272,306.848c-7.616,7.616-20,7.616-27.616,0l-55.232-55.232l-55.232,55.232
+		c-7.616,7.616-20,7.616-27.616,0c-7.616-7.616-7.616-20,0-27.616L 395.808,224l-55.232-55.232c-7.616-7.616-7.616-20,0-27.616
+		c 7.616-7.616, 20-7.616, 27.616,0l 55.232,55.232l 55.232-55.232c 7.616-7.616, 20-7.616, 27.616,0c 7.616,7.616, 7.616,20,0,27.616
+		L 451.040,224l 55.232,55.232C 513.92,286.848, 513.92,299.232, 506.272,306.848z"  />
+<glyph unicode="&#x79;" d="M 326.816,480c-5.28,0-11.328-1.632-18.272-5.824c0,0-133.44-116.416-139.232-122.176L 96,352 C 78.336,352, 64,337.664, 64,320l0-4.064 L 64,128 
+		l0-4.064 c0-17.664, 14.336-32, 32-32l 73.312,0 c 5.792-5.76, 139.232-118.080, 139.232-118.080C 315.488-30.368, 321.536-32, 326.816-32
+		c 0.8,0, 1.6,0.032, 2.368,0.096c 11.84,1.12, 20.288,11.040, 22.816,21.504L 352,458.368 c-2.496,10.496-10.976,20.416-22.816,21.504
+		C 328.416,479.968, 327.648,480, 326.816,480z M 320,6.016c-49.92,42.048-122.24,103.136-128.128,108.576c-5.984,5.984-14.112,9.312-22.592,9.312L 96,123.904 L 96,128 L 96,315.936 
+		L 96,320 l 73.312,0 c 8.192,0, 16.384,3.424, 22.304,9.056C 197.44,334.592, 269.76,397.856, 320,441.696L 320,6.016 zM 401.312,168.096c-7.904-4-11.072-13.6-7.104-21.504c 2.816-5.568, 8.448-8.8, 14.272-8.8
+		c 2.432,0, 4.864,0.544, 7.2,1.696C 448.032,155.808, 468.128,188.16, 468.128,224s-20.096,68.192-52.448,84.512
+		c-7.904,4-17.504,0.8-21.472-7.104c-3.968-7.904-0.8-17.504, 7.104-21.504C 422.784,269.088, 436.128,247.68, 436.128,224
+		S 422.784,178.912, 401.312,168.096z"  />
+<glyph unicode="&#x7a;" d="M 32,91.936l 73.312,0 c 5.792-5.76, 139.232-118.080, 139.232-118.080C 251.488-30.368, 257.536-32, 262.816-32
+		c 0.8,0, 1.6,0.032, 2.368,0.096c 11.84,1.12, 20.288,11.040, 22.816,21.504L 288,458.368 C 285.504,468.864, 277.024,478.784, 265.184,479.904
+		C 264.416,479.968, 263.648,480, 262.816,480C 257.536,480, 251.488,478.368, 244.544,474.176c0,0-133.44-116.416-139.232-122.176L 32,352 C 14.336,352,0,337.664,0,320l0-4.064 L0,128 l0-4.064 
+		C0,106.24, 14.336,91.936, 32,91.936z M 32,128L 32,315.936 L 32,320 l 73.312,0 c 8.192,0, 16.384,3.424, 22.304,9.056C 133.44,334.592, 205.76,397.856, 256,441.696l0-435.68 
+		c-49.92,42.048-122.24,103.136-128.128,108.576c-5.984,5.984-14.112,9.312-22.592,9.312L 32,123.904 L 32,128 zM 337.312,168.096c-7.904-4-11.072-13.6-7.104-21.504c 2.816-5.568, 8.448-8.8, 14.272-8.8
+		c 2.432,0, 4.864,0.544, 7.2,1.696C 384.032,155.808, 404.128,188.16, 404.128,224s-20.096,68.192-52.448,84.512
+		c-7.904,4-17.504,0.8-21.472-7.104c-3.968-7.904-0.8-17.504, 7.104-21.504C 358.784,269.088, 372.128,247.68, 372.128,224
+		S 358.784,178.912, 337.312,168.096zM 315.296,40.352c 1.504-7.648, 8.192-12.928, 15.68-12.928c 1.024,0, 2.048,0.096, 3.104,0.288
+		C 427.904,46.016, 496,128.576, 496,224s-68.096,177.984-161.952,196.288C 325.536,422.016, 316.96,416.32, 315.296,407.648
+		C 313.6,398.976, 319.264,390.56, 327.936,388.864C 406.784,373.504, 464,304.16, 464,224s-57.216-149.504-136.064-164.864
+		C 319.264,57.44, 313.6,49.024, 315.296,40.352z"  />
+<glyph unicode="&#x7b;" d="M 127.968,270.112c0-27.040, 21.12-48.96, 47.136-48.96c 8.352,0, 16.064,2.432, 22.88,6.4
+		c-2.336-26.176-15.52-64.352-63.84-103.264c-6.752-5.472-8-15.584-2.752-22.592c 3.072-4.096, 7.648-6.24, 12.256-6.24
+		c 3.328,0, 6.656,1.088, 9.504,3.392c 59.296,47.84, 74.112,96.992, 76.096,129.824C 232.64,270.656, 219.904,292.736, 208.256,304.256
+		C 207.2,305.376, 206.208,306.592, 205.024,307.584C 202.24,309.952, 199.744,311.616, 197.568,312.864C 197.472,312.928, 197.408,313.024, 197.312,313.056
+		c-0.16,0.096-0.32,0.128-0.48,0.192C 193.664,315.008, 191.392,315.84, 191.392,315.84l 0.16-0.384C 186.4,317.568, 180.992,319.072, 175.104,319.072
+		C 149.056,319.072, 127.968,297.152, 127.968,270.112zM 283.104,270.112c0-27.040, 21.088-48.96, 47.136-48.96c 8.352,0, 16.064,2.432, 22.88,6.4
+		c-2.336-26.176-15.52-64.352-63.84-103.264c-6.784-5.472-8-15.584-2.752-22.592c 3.072-4.096, 7.648-6.24, 12.256-6.24
+		c 3.328,0, 6.656,1.088, 9.504,3.392c 59.296,47.84, 74.112,96.992, 76.096,129.824c 3.392,41.984-9.376,64.064-20.992,75.584
+		c-1.088,1.12-2.080,2.336-3.264,3.328c-2.784,2.368-5.28,4.032-7.456,5.28c-0.096,0.064-0.16,0.128-0.256,0.192
+		c-0.16,0.096-0.32,0.128-0.48,0.192c-3.168,1.728-5.44,2.592-5.44,2.592l 0.16-0.384c-5.152,2.112-10.592,3.616-16.448,3.616
+		C 304.192,319.072, 283.104,297.152, 283.104,270.112z"  />
+<glyph unicode="&#x7c;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,0c-123.52,0-224,100.48-224,224s 100.48,224, 224,224
+		s 224-100.48, 224-224S 379.52,0, 256,0zM 205.024,307.584C 202.24,309.952, 199.744,311.616, 197.568,312.864C 197.472,312.928, 197.408,313.024, 197.312,313.056
+		c-0.16,0.096-0.32,0.128-0.48,0.192C 193.664,315.008, 191.392,315.84, 191.392,315.84l 0.16-0.384C 186.4,317.568, 180.992,319.072, 175.104,319.072
+		c-26.048,0-47.136-21.92-47.136-48.96c0-27.040, 21.12-48.96, 47.136-48.96c 8.352,0, 16.064,2.432, 22.88,6.4
+		c-2.336-26.176-15.52-64.352-63.84-103.264c-6.752-5.472-8-15.584-2.752-22.592c 3.072-4.096, 7.648-6.24, 12.256-6.24
+		c 3.328,0, 6.656,1.088, 9.504,3.392c 59.296,47.84, 74.112,96.992, 76.096,129.824C 232.64,270.656, 219.904,292.736, 208.256,304.256
+		C 207.2,305.376, 206.208,306.592, 205.024,307.584zM 360.16,307.584c-2.784,2.368-5.28,4.032-7.456,5.28c-0.096,0.064-0.16,0.128-0.256,0.192
+		c-0.16,0.096-0.32,0.128-0.48,0.192c-3.168,1.728-5.44,2.592-5.44,2.592l 0.16-0.384c-5.152,2.112-10.592,3.616-16.448,3.616
+		c-26.048,0-47.136-21.92-47.136-48.96c0-27.040, 21.088-48.96, 47.136-48.96c 8.352,0, 16.064,2.432, 22.88,6.4
+		c-2.336-26.176-15.52-64.352-63.84-103.264c-6.784-5.472-8-15.584-2.752-22.592c 3.072-4.096, 7.648-6.24, 12.256-6.24
+		c 3.328,0, 6.656,1.088, 9.504,3.392c 59.296,47.84, 74.112,96.992, 76.096,129.824c 3.392,41.984-9.376,64.064-20.992,75.584
+		C 362.336,305.376, 361.344,306.592, 360.16,307.584z"  />
+<glyph unicode="&#x7d;" d="M 273.056,445.856c-61.152,0-122.304-23.328-168.96-69.984c-93.312-93.312-93.312-244.608,0-337.888
+		C 150.784-8.672, 211.904-32, 273.056-32s 122.304,23.328, 168.96,69.984c 93.312,93.312, 93.312,244.608,0,337.888C 395.36,422.528, 334.208,445.856, 273.056,445.856z
+		 M 419.392,60.608C 380.32,21.536, 328.352,0, 273.056,0c-55.264,0-107.232,21.536-146.336,60.608c-39.072,39.072-60.608,91.040-60.608,146.336
+		s 21.536,107.232, 60.608,146.336c 39.072,39.072, 91.040,60.608, 146.336,60.608c 55.264,0, 107.232-21.536, 146.336-60.608S 480,262.208, 480,206.944
+		S 458.464,99.68, 419.392,60.608zM 368,224L 288,224 L 288,336.224 c0,8.832-7.168,16-16,16S 256,345.056, 256,336.224l0-128.128 c0,0,0-0.032,0-0.032L 256,208
+		C 256,199.168, 263.168,192, 272,192l 96,0 C 376.832,192, 384,199.168, 384,208C 384,216.832, 376.832,224, 368,224z"  />
+<glyph unicode="&#x7e;" d="M 256,480C 167.648,480, 96,407.264, 96,317.536L 96,288 L 64,288 C 46.336,288, 32,273.664, 32,256l0-256 c0-17.664, 14.336-32, 32-32l 384,0 c 17.664,0, 32,14.336, 32,32L 480,256 
+		c0,17.664-14.336,32-32,32l-32,0 L 416,317.536 C 416,407.264, 344.352,480, 256,480z M 128,317.536C 128,389.472, 185.408,448, 256,448s 128-58.528, 128-130.464L 384,288 L 128,288 L 128,317.536 z M 448,0L 64,0 L 64,256 l 384,0 L 448,0 z
+		M 320,128c0,35.36-28.64,64-64,64s-64-28.64-64-64s 28.64-64, 64-64S 320,92.64, 320,128z M 256,96c-17.632,0-32,14.368-32,32
+		s 14.368,32, 32,32s 32-14.368, 32-32S 273.632,96, 256,96z"  />
+<glyph unicode="&#xe000;" d="M 480,0L 480,256 c0,17.664-14.336,32-32,32L 127.84,288 L 128,301.568C 128,387.776, 181.248,448, 257.536,448c 55.84,0, 105.6-32.096, 129.888-83.776
+		c 3.744-8, 13.248-11.424, 21.28-7.648c 8,3.744, 11.424,13.28, 7.648,21.28C 386.752,440.832, 325.92,480, 257.536,480C 163.936,480, 96,404.96, 96,301.76
+		L 95.84,288L 64,288 C 46.336,288, 32,273.664, 32,256l0-256 c0-17.664, 14.336-32, 32-32l 384,0 C 465.664-32, 480-17.664, 480,0z M 64,256l 384,0 l0-256 L 64,0 L 64,256 zM 256,192c-35.36,0-64-28.64-64-64s 28.64-64, 64-64s 64,28.64, 64,64S 291.36,192, 256,192z M 256,96c-17.632,0-32,14.368-32,32s 14.368,32, 32,32
+		s 32-14.368, 32-32S 273.632,96, 256,96z"  />
+<glyph unicode="&#xe001;" d="M 176,80c0,9.504-2.048,18.688-6.080,27.232C 159.424,129.568, 136.672,144, 112,144c-35.296,0-64-28.704-64-64
+		c0-6.304, 1.184-12.256, 2.88-18.016c 10.72-17.664, 25.44-32.384, 43.104-43.104c 5.76-1.696, 11.712-2.88, 18.016-2.88
+		C 147.296,16, 176,44.704, 176,80z M 112,112c 12.352,0, 23.712-7.232, 28.992-18.4C 142.976,89.344, 144,84.768, 144,80
+		c0-17.632-14.368-32-32-32s-32,14.368-32,32S 94.368,112, 112,112zM 496,480l-69.248,0 c-3.776,0-7.424-1.344-10.336-3.776L 189.856,284.896C 179.424,286.976, 169.6,288, 160,288c-88.224,0-160-71.776-160-160
+		s 71.776-160, 160-160s 160,71.776, 160,160c0,16.832-2.688,33.472-8,49.6l 48.704,31.648c 4.544,2.944, 7.296,8, 7.296,13.408L 368,280.8 l 60.832,3.2
+		c 7.936,0.416, 14.336,6.592, 15.072,14.496l 5.824,61.632l 53.152,25.408C 508.48,388.224, 512,393.856, 512,400l0,64 C 512,472.832, 504.832,480, 496,480z
+		 M 480,410.080l-52.224-24.96c-5.056-2.432-8.512-7.328-9.024-12.928l-5.376-56.928L 351.168,312C 342.656,311.52, 336,304.512, 336,296l0-64.64 
+		L 283.776,197.408C 277.28,193.184, 274.72,184.896, 277.76,177.76C 284.576,161.728, 288,144.992, 288,128c0-70.592-57.408-128-128-128c-24.224,0-46.656,7.136-66.016,18.88
+		c-17.664,10.72-32.384,25.44-43.104,43.104C 39.136,81.344, 32,103.776, 32,128c0,70.592, 57.408,128, 128,128c 9.44,0, 19.36-1.312, 30.336-3.968
+		c 4.96-1.216, 10.208,0, 14.112,3.328L 432.608,448L 480,448 L 480,410.080 z"  />
+<glyph unicode="&#xe002;" d="M 416,224c-1.12,0-2.176-0.288-3.264-0.32C 414.88,234.112, 416,244.928, 416,256c0,88.352-71.648,160-160,160S 96,344.352, 96,256
+		c0-0.544, 0.16-1.056, 0.16-1.6C 41.888,246.656,0,200.416,0,144c0-56.384, 41.792-102.56, 96-110.4L 96,32 l 320,0 c 53.024,0, 96,42.976, 96,96S 469.024,224, 416,224z
+		 M 416,64L 106.048,64 c-1.76,0.576-3.584,1.024-5.472,1.28C 61.472,70.912, 32,104.768, 32,144c0,39.296, 29.536,73.12, 68.672,78.72
+		c 15.904,2.272, 27.648,15.968, 27.488,32c0,0.96-0.064,1.92-0.16,2.848C 128.864,327.456, 185.952,384, 256,384c 70.592,0, 128-57.408, 128-128
+		c0-8.704-0.896-17.408-2.624-25.888c-1.984-9.6, 0.576-19.584, 6.912-27.072c 6.080-7.2, 15.040-11.328, 24.448-11.328
+		c 0.384,0, 0.736,0, 1.12,0.032C 414.56,191.712, 416.064,191.84, 417.312,192C 452,191.296, 480,162.848, 480,128C 480,92.704, 451.296,64, 416,64z"  />
+<glyph unicode="&#xe003;" d="M 416.832,224.032c-1.376,0-2.72,0-4.032-0.032C 414.912,234.528, 416,245.28, 416,256c0,88.224-71.776,160-160,160
+		C 167.84,416, 96,344.928, 95.904,257.632c0-0.032, 0.256-3.232, 0.256-3.232l0,0 C 41.344,246.56,0,199.104,0,144c0-55.872, 40.256-103.936, 96-112l 80,0 
+		C 184.832,32, 192,39.168, 192,48S 184.832,64, 176,64l-77.664-0.16C 61.152,69.312, 32,104.544, 32,144c0,39.296, 29.504,73.12, 68.672,78.72l 13.76,1.984
+		c 7.872,1.12, 13.728,7.872, 13.728,15.84L 127.904,257.568C 128,327.296, 185.44,384, 256,384c 70.592,0, 128-57.408, 128-128c0-8.672-0.864-17.408-2.624-25.888
+		l-4.224-20.352c-1.056-5.088, 0.448-10.336, 3.968-14.144c 3.52-3.776, 8.576-5.728, 13.824-4.928c 0.352,0.032, 10.368,1.344, 21.888,1.344
+		C 451.68,192.032, 480,163.328, 480,128c0-35.296-28.704-64-64-64L 304,64 c-44.8,0-47.84,26.848-48,32L 256,202.176 l 37.856-37.824
+		c 6.24-6.24, 16.384-6.24, 22.624,0c 6.24,6.24, 6.24,16.384,0,22.624L 252.096,251.328C 248.96,254.464, 244.832,256, 240.704,256
+		C 240.448,256, 240.256,256.128, 240,256.128c-4.608,0-8.672-1.984-11.584-5.088L 163.968,186.656c-6.24-6.24-6.24-16.384,0-22.624
+		c 6.24-6.24, 16.384-6.24, 22.624,0L 224,201.408L 224,96 c0-22.112, 16.704-64, 80-64L 416,32 c 52.928,0, 96,43.072, 96,96S 469.312,224.032, 416.832,224.032z"  />
+<glyph unicode="&#xe004;" d="M 418.656,224c 29.888,68.64, 11.456,112.288-3.552,133.312c-22.784,31.904-64.288,49.408-100.736,42.4
+		C 251.008,387.616, 224,344.672, 224,256l0-74.048 L 186.944,219.008c-6.24,6.24-16.384,6.24-22.624,0s-6.24-16.384,0-22.624l 64.384-64.352
+		c 3.232-3.232, 7.488-4.704, 11.712-4.608c 4.224-0.096, 8.48,1.376, 11.712,4.608l 64.704,64.672c 6.24,6.24, 6.24,16.384,0,22.624
+		s-16.384,6.24-22.624,0L 256,181.152L 256,256 c0,92.288, 31.776,106.048, 64.32,112.288c 20.896,3.84, 51.136-4.928, 68.704-29.568
+		c 21.504-30.048, 17.376-74.624-11.616-125.44c-3.072-5.408-2.752-12.096, 0.832-17.152s 9.888-7.616, 15.872-6.528
+		c 3.872,0.672, 15.424,2.432, 22.72,2.432C 451.68,192.032, 480,163.328, 480,128c0-35.296-28.704-64-64-64l-317.664-0.192C 61.152,69.312, 32,104.544, 32,144
+		c0,39.296, 29.504,73.12, 68.672,78.72l 13.76,1.984c 7.872,1.12, 13.728,7.872, 13.728,15.84L 127.904,257.568C 128,314.88, 163.328,361.984, 212,369.568
+		C 220.704,370.944, 226.688,379.104, 225.344,387.84C 223.968,396.576, 216,402.496, 207.040,401.184C 142.72,391.168, 96,330.784, 95.904,257.632
+		c0-0.032, 0.256-3.232, 0.256-3.232l0,0 C 41.344,246.56,0,199.104,0,144c0-55.872, 40.256-103.936, 96-112l 320,0 c 52.928,0, 96,43.072, 96,96
+		C 512,180.352, 470.272,223.040, 418.656,224z"  />
+<glyph unicode="&#xe005;" d="M 275.648,292.992A44.512,44.512 1260 1 1 364.672,292.99199999999996A44.512,44.512 1260 1 1 275.648,292.99199999999996zM 416,32L 448,32L 448,64L 448,128L 448,224L 320,128L 160,256L 64,160L 64,128L 64,64L 64,32L 96,32 	zM 480,416L 32,416 C 14.336,416,0,401.664,0,384l0-384 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,384 C 512,401.664, 497.664,416, 480,416z
+		 M 480,0L 32,0 L 32,384 l 448,0 L 480,0 z"  />
+<glyph unicode="&#xe006;" d="M 480,384l-32,0 L 448,448 c0,17.664-14.336,32-32,32L 32,480 C 14.336,480,0,465.664,0,448l0-352 c0-17.664, 14.336-32, 32-32l 32,0 l0-64 c0-17.664, 14.336-32, 32-32l 384,0 
+		c 17.664,0, 32,14.336, 32,32L 512,352 C 512,369.664, 497.664,384, 480,384z M 32,96L 32,448 l 384,0 l0-352 L 32,96 z M 480,0L 96,0 l0,64 l 32,0 l0-32 l 32,0 l 256,0 l 32,0 l0,32 l0,32 L 448,192 L 448,352 l 32,0 L 480,0 zM 236.64,348.992A44.512,44.512 1260 1 1 325.664,348.99199999999996A44.512,44.512 1260 1 1 236.64,348.99199999999996zM 160,320L 64,256L 64,192L 64,160L 64,128L 96,128L 352,128L 384,128L 384,160L 384,192L 384,288L 256,224 	z"  />
+<glyph unicode="&#xe007;" d="M 256,480C 150.144,480, 64,393.856, 64,288c0-61.888, 30.080-120.32, 80.512-156.32c 0.768-0.544, 1.568-1.056, 2.368-1.536
+		c 11.712-6.88, 12.864-29.056, 12.608-33.12c-0.032-0.672-0.064-1.344-0.064-1.984L 159.424,32 c0-12.032, 6.72-23.008, 17.44-28.48l 64.576-32.992
+		c 4.576-2.336, 9.568-3.52, 14.56-3.52c 4.96,0, 9.888,1.152, 14.432,3.424l 65.344,32.992c 10.784,5.44, 17.568,16.48, 17.568,28.576l0,62.656 
+		c0,31.584, 19.296,42.016, 19.488,42.112c 2.56,1.184, 4.928,2.72, 7.072,4.544C 423.168,177.92, 448,231.36, 448,288C 448,393.856, 361.856,480, 256,480z
+		 M 191.424,95.008c0,0,0,0.64, 0.032,0.992l 129.984,0 c0-0.48-0.128-0.832-0.128-1.344c0-12.576,0-22.528,0-30.656L 191.424,64 L 191.424,95.008 z M 256-0.992
+		L 191.456,32l 129.888,0 L 256-0.992z M 359.232,165.76c0,0-21.44-10.080-32.064-37.76L 186.304,128 c-3.968,11.072-10.848,22.464-23.2,29.728
+		C 122.496,186.72, 96,234.272, 96,288c0,88.352, 71.648,160, 160,160s 160-71.648, 160-160C 416,238.976, 393.952,195.104, 359.232,165.76zM 272,416C 263.168,416, 256,408.832, 256,400S 263.168,384, 272,384C 308,384, 352,351.264, 352,302.496c0-8.832, 7.168-16, 16-16
+		s 16,7.168, 16,16C 384,375.488, 327.008,416, 272,416z"  />
+<glyph unicode="&#xe008;" d="M 480,352L 288.672,352 L 224,352 L 32,352 C 14.336,352,0,337.664,0,320l0-96 l 32,0 l0-224 c0-17.664, 14.336-32, 32-32l 160,0 l 64.672,0 L 448-32 c 17.664,0, 32,14.336, 32,32L 480,224 l 32,0 L 512,320 
+		C 512,337.664, 497.664,352, 480,352z M 32,320l 192,0 l0-64 L 32,256 L 32,320 z M 64,0L 64,224 l 160,0 l0-224 L 64,0 z M 448,0L 288.672,0 L 288.672,224 L 448,224 L 448,0 z M 480,256L 288.672,256 L 288.672,320 L 480,320 L 480,256 zM 256,384c0,0.064-0.032,0.192-0.032,0.256l 0.096,0 C 256.032,384.192, 256,384.064, 256,384c0,0, 83.808,0, 128,0
+		c 44.192,0, 64,21.504, 64,48S 428.192,480, 384,480c-41.376,0-73.952-18.624-96-40.224C 278.336,445.504, 267.168,448.992, 255.072,448.992
+		c-11.584,0-22.304-3.264-31.712-8.576C 201.344,461.76, 168.96,480, 128,480C 83.808,480, 64,458.496, 64,432S 83.808,384, 128,384C 172.192,384, 256,384, 256,384z M 416,432
+		C 416,418.784, 398.592,416, 384,416L 311.328,416 C 311.072,416.448, 310.848,416.928, 310.592,417.344C 326.848,433.152, 351.488,448, 384,448C 398.592,448, 416,445.216, 416,432z M 96,432
+		C 96,445.216, 113.408,448, 128,448c 31.808,0, 55.936-14.24, 72.192-29.504C 199.68,417.696, 199.296,416.832, 198.816,416L 128,416 C 113.408,416, 96,418.784, 96,432z"  />
+<glyph unicode="&#xe009;" d="M 25.984,195.488L 64,225.888L 64,0 c0-17.664, 14.336-32, 32-32l 96,0 c 17.664,0, 32,14.336, 32,32l0,128 l 64,0 l0-128 c0-17.664, 14.336-32, 32-32l 96,0 
+		c 17.664,0, 32,14.336, 32,32L 448,225.888 l 38.016-30.4C 488.96,193.152, 492.48,192, 496,192c 4.704,0, 9.344,2.048, 12.512,6.016
+		c 5.504,6.912, 4.384,16.96-2.496,22.496l-240,192c-5.856,4.672-14.144,4.672-20,0L 160,343.712L 160,384 c0,17.664-14.336,32-32,32S 96,401.664, 96,384l0-91.488 
+		l-89.984-72c-6.88-5.536-8-15.584-2.496-22.496C 9.024,191.104, 19.072,189.984, 25.984,195.488z M 256,379.52l 160-128L 416,0 l-96,0 l0,160 L 192,160 l0-160 L 96,0 L 96,251.488 L 256,379.52z
+		"  />
+<glyph unicode="&#xe00a;" d="M 40.704,85.504c 7.68-11.936, 23.808-26.144, 57.088-26.144c 20.928,0, 47.712,6.112, 77.536,16.768
+		C 188.224,19.296, 211.936-32, 256-32c 44.8,0, 68.608,53.056, 81.344,111.072c 29.888-10.112, 56.768-15.936, 77.792-15.936c 35.2,0, 51.712,14.976, 59.392,27.52
+		c 24.832,40.704-13.92,92.384-60.704,135.104c 8.64,8.32, 16.768,16.64, 23.904,24.736c 40.448,46.048, 51.744,83.712, 33.568,112
+		c-7.68,11.936-23.808,26.144-57.088,26.144l0,0 c-20.928,0-47.712-6.112-77.536-16.768C 323.776,428.704, 300.064,480, 256,480C 211.2,480, 187.392,426.944, 174.656,368.928
+		C 144.768,379.072, 117.888,384.864, 96.864,384.864l0,0 c-35.2,0-51.744-14.976-59.392-27.52C 12.64,316.64, 51.392,264.96, 98.176,222.24
+		c-8.64-8.352-16.768-16.64-23.904-24.736C 33.824,151.456, 22.528,113.76, 40.704,85.504z M 256,0c-20.704,0-39.072,34.592-50.784,88
+		c 16.832,7.264, 34.24,15.744, 52.064,25.44c 17.088-8.768, 33.792-16.416, 49.984-23.072C 295.616,35.616, 277.024,0, 256,0z M 192,224
+		c0,11.744, 0.352,23.2, 0.832,34.464c 9.216,6.528, 18.656,12.992, 28.544,19.36C 232.736,285.12, 243.968,291.84, 255.104,298.24
+		c 11.296-6.144, 22.688-12.576, 34.208-19.584c 10.304-6.304, 20.192-12.736, 29.792-19.2C 319.648,247.872, 320,236.096, 320,224
+		c0-11.744-0.352-23.2-0.832-34.464C 309.952,183.008, 300.512,176.544, 290.624,170.176C 279.264,162.88, 268.032,156.16, 256.896,149.76
+		c-11.296,6.144-22.688,12.576-34.208,19.584c-10.304,6.304-20.192,12.736-29.792,19.2C 192.352,200.128, 192,211.904, 192,224z M 160.16,211.968
+		C 155.456,215.552, 150.848,219.136, 146.432,222.688C 150.848,226.432, 155.424,230.176, 160.096,233.92C 160.032,229.632, 160,226.016, 160,224
+		C 160,221.664, 160.064,217.248, 160.16,211.968z M 195.744,299.072C 196.672,308.16, 197.76,316.96, 199.008,325.472C 206.304,322.368, 213.76,318.944, 221.376,315.36
+		c-5.76-3.52-11.52-6.88-17.312-10.592C 201.184,302.88, 198.592,300.928, 195.744,299.072z M 288.48,316.16c 8.256,4.16, 16.32,8.032, 24.224,11.584
+		C 314.048,318.688, 315.2,309.248, 316.192,299.552c-4.448,2.848-8.192,5.184-10.176,6.4C 300.16,309.536, 294.304,312.768, 288.48,316.16z M 351.84,236.032
+		c 4.704-3.584, 9.312-7.168, 13.728-10.72c-4.416-3.744-8.992-7.456-13.696-11.232C 351.968,218.368, 352,221.984, 352,224
+		C 352,226.336, 351.936,230.752, 351.84,236.032z M 316.256,148.928c-0.928-9.088-1.984-17.92-3.232-26.4c-7.296,3.104-14.784,6.528-22.368,10.112
+		c 5.76,3.52, 11.52,6.88, 17.312,10.592C 310.816,145.12, 313.408,147.072, 316.256,148.928z M 205.984,142.048c 5.856-3.584, 11.68-6.816, 17.536-10.208
+		c-8.256-4.16-16.32-8.032-24.224-11.584c-1.344,9.024-2.496,18.464-3.488,28.192C 200.256,145.632, 204,143.264, 205.984,142.048z
+		 M 447.2,107.328c-5.056-8.256-16.256-12.192-32.064-12.192c-18.464,0-43.392,5.632-71.808,15.616c 3.392,21.952, 5.504,43.392, 6.752,61.696
+		c 14.304,10.56, 27.52,21.248, 40.032,32C 435.264,163.456, 458.752,126.24, 447.2,107.328z M 414.208,356.64c 14.656,0, 25.184-3.68, 30.176-11.456
+		c 12-18.656-10.656-56.448-54.88-98.528c-13.76,11.2-27.328,21.44-39.552,30.112c-1.312,18.88-3.488,40.896-7.104,63.392
+		C 371.232,350.688, 396.032,356.64, 414.208,356.64z M 256,448c 20.704,0, 39.072-34.592, 50.784-88c-16.832-7.264-34.24-15.744-52.064-25.44
+		C 237.6,343.328, 220.896,351.008, 204.736,357.632C 216.384,412.384, 234.976,448, 256,448z M 64.8,340.672c 5.056,8.256, 16.256,12.192, 32.064,12.192
+		c 18.464,0, 43.392-5.632, 71.808-15.616C 165.248,315.296, 163.168,293.888, 161.92,275.552c-14.304-10.56-27.52-21.248-40.032-32
+		C 76.736,284.544, 53.248,321.76, 64.8,340.672z M 162.016,171.264c 1.312-18.88, 3.488-40.896, 7.104-63.392c-28.352-10.528-53.152-16.48-71.328-16.48
+		c-14.656,0-25.184,3.68-30.176,11.456c-12,18.656, 10.656,56.448, 54.88,98.528C 136.224,190.176, 149.792,179.904, 162.016,171.264z"  />
+<glyph unicode="&#xe00b;" d="M 384-32c 17.664,0, 32,14.336, 32,32L 416,448 c0,17.664-14.336,32-32,32L 160,480 C 142.336,480, 128,465.664, 128,448l0-448 c0-17.664, 14.336-32, 32-32L 384-32 z
+		 M 256,17.984c0,9.952, 8.064,17.984, 17.984,17.984s 17.984-8.064, 17.984-17.984S 283.936,0, 273.984,0S 256,8.064, 256,17.984z M 336,448
+		C 344.832,448, 352,440.832, 352,432C 352,423.168, 344.832,416, 336,416l-32,0 C 295.168,416, 288,423.168, 288,432C 288,440.832, 295.168,448, 304,448L 336,448 z M 256,432
+		C 256,423.168, 248.832,416, 240,416S 224,423.168, 224,432C 224,440.832, 231.168,448, 240,448S 256,440.832, 256,432z M 160,384l 224,0 l0-320 L 160,64 L 160,384 z"  />
+<glyph unicode="&#xe00c;" d="M 416-32c 17.664,0, 32,14.336, 32,32L 448,448 c0,17.664-14.336,32-32,32L 96,480 C 78.336,480, 64,465.664, 64,448l0-448 c0-17.664, 14.336-32, 32-32L 416-32 z
+		 M 256-17.984c-9.952,0-17.984,8.064-17.984,17.984S 246.048,17.984, 256,17.984S 273.984,9.952, 273.984,0S 265.952-17.984, 256-17.984z M 128,416l 256,0 l0-384 L 128,32 L 128,416 z"  />
+<glyph unicode="&#xe00d;" d="M 495.488,96L 480,96 L 480,384 c0,17.664-14.336,32-32,32L 64,416 C 46.336,416, 32,401.664, 32,384l0-288 L 16.512,96 C 7.392,96,0,88.832,0,80
+		C0,71.168, 7.392,64, 16.512,64L 64,64 l 384,0 l 47.488,0 C 504.608,64, 512,71.168, 512,80C 512,88.832, 504.608,96, 495.488,96z M 448,384l0-254.656 L 64,129.344 L 64,384 L 448,384 z"  />
+<glyph unicode="&#xe00e;" d="M 480,448L 32,448 C 14.336,448,0,433.664,0,416l0-288 c0-17.664, 14.336-32, 32-32l 159.968,0 c-0.064-23.136-0.992-53.184-9.76-64L 175.744,32 
+		C 167.040,32, 160,24.832, 160,16C 160,7.168, 167.040,0, 175.744,0l 160.48,0 C 344.96,0, 352,7.168, 352,16c0,8.832-7.040,16-15.744,16l-6.464,0 
+		c-8.8,10.816-9.696,40.864-9.76,64L 480,96 c 17.664,0, 32,14.336, 32,32L 512,416 C 512,433.664, 497.664,448, 480,448z M 224,96l-0.032-0.064
+		C 223.968,95.968, 223.968,95.968, 224,96L 224,96z M 288.032,95.936L 288,96l 0.032,0 C 288.032,95.968, 288.032,95.968, 288.032,95.936z M 480,160L 32,160 L 32,416 l 448,0 L 480,160 z"  />
+<glyph unicode="&#xe00f;" d="M 480,320l-64,0 c0,0-18.496,0-32,32c-6.88,16.288-14.336,32-32,32L 224,384 C 206.336,384, 198.656,368.384, 192,352C 179.008,320, 160,320, 160,320L 128,320 
+		c0,17.664-14.336,32-32,32L 64,352 C 46.336,352, 32,337.664, 32,320C 14.336,320,0,305.664,0,288l0-256 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,164 L 512,192 L 512,288 
+		C 512,305.664, 497.664,320, 480,320z M 480,32L 32,32 l0,128 l 145.6,0 c 7.84-54.208, 54.016-96, 110.4-96c 57.76,0, 104.736,43.872, 110.784,100L 480,164 L 480,32 z M 208,176
+		C 208,220.128, 243.904,256, 288,256s 80-35.872, 80-80c0-44.096-35.904-80-80-80S 208,131.904, 208,176z M 398.4,192C 390.56,246.208, 344.384,288, 288,288
+		S 185.44,246.208, 177.6,192L 32,192 L 32,288 l 32,0 l 32,0 l 64,0 c 18.688,0, 46.080,13.6, 61.632,51.968C 224.288,346.464, 226.080,350.048, 227.264,352l 121.344,0 
+		c 2.144-3.52, 4.896-10.016, 5.92-12.448C 375.232,290.496, 409.376,288, 416,288l 64,0 l0-96 L 398.4,192 zM 64,239.68A16,16 1260 1 1 96,239.68A16,16 1260 1 1 64,239.68z"  />
+<glyph unicode="&#xe010;" d="M 480,352L 32,352 C 14.336,352,0,337.664,0,320l0-320 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,320 C 512,337.664, 497.664,352, 480,352z
+		 M 181.76,127.136l 74.304-50.496l 73.856,50.848L 457.376,0L 54.624,0 L 181.76,127.136z M 32,22.624L 32,228.96 l 122.816-83.488L 32,22.624z M 356.704,145.92
+		L 480,230.784l0-208.16 L 356.704,145.92z M 480,320l0-51.776 l-0.672,0.96l-223.392-153.824L 32,267.616L 32,320 L 480,320 z"  />
+<glyph unicode="&#xe011;" d="M 399.456,160l-12.128,32l-34.24,0 L 158.912,192 l-34.24,0 l-12.128-32L 64,32l 384,0 L 399.456,160z M 146.784,160l 218.464,0 l 36.416-96L 110.368,64 
+		L 146.784,160zM 328.832,256l 34.24,0 l-12.128,32L 285.856,459.552C 281.088,471.872, 269.216,480, 256,480S 230.912,471.872, 226.144,459.552L 161.088,288L 148.96,256
+		l 34.24,0 L 328.832,256 z M 256,448l 60.672-160L 195.328,288 L 256,448zM 495.744,0L 16.256,0 C 7.264,0,0-6.784,0-15.744S 7.264-32, 16.256-32l 479.488,0 C 504.736-32, 512-24.736, 512-15.744
+		S 504.736,0, 495.744,0z"  />
+<glyph unicode="&#xe012;" d="M 83.744-29.568C 87.712-31.2, 91.872-32, 96-32c 8.32,0, 16.512,3.264, 22.624,9.376L 256,114.752l 137.376-137.376
+		C 399.488-28.736, 407.68-32, 416-32c 4.128,0, 8.288,0.8, 12.224,2.432C 440.192-24.608, 448-12.928, 448,0L 448,448 c0,17.664-14.336,32-32,32L 96,480 
+		C 78.336,480, 64,465.664, 64,448l0-448 C 64-12.928, 71.808-24.608, 83.744-29.568z M 256,160l-160-160L 96,352 l 320,0 l0-352 L 256,160z M 416,448l0-64 L 96,384 L 96,448 L 416,448 z"  />
+<glyph unicode="&#xe013;" d="M 96-32l 320,0 c 17.664,0, 32,14.336, 32,32L 448,352 c0,17.664-14.336,32-32,32l-64.16,0 C 351.072,437.152, 308.512,480, 256,480S 160.928,437.152, 160.16,384
+		L 96,384 C 78.336,384, 64,369.664, 64,352l0-352 C 64-17.664, 78.336-32, 96-32z M 416,352l0-352 L 96,0 L 96,352 L 416,352 z M 256,448c 34.784,0, 63.072-28.576, 63.84-64L 192.16,384 
+		C 192.928,419.424, 221.216,448, 256,448zM 208,288l 96,0 C 312.832,288, 320,295.168, 320,304C 320,312.832, 312.832,320, 304,320l-96,0 C 199.168,320, 192,312.832, 192,304C 192,295.168, 199.168,288, 208,288z
+		"  />
+<glyph unicode="&#xe014;" d="M 480,416L 32,416 C 14.336,416,0,401.664,0,384l0-65.344 L0,256 l0-192 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,256 L 512,318.656 L 512,384 
+		C 512,401.664, 497.664,416, 480,416z M 480,64L 32,64 L 32,256 l 448,0 L 480,64 z M 32,318.656L 32,384 l 448,0 l0-65.344 L 32,318.656 zM 80,96l 160,0 C 248.832,96, 256,103.168, 256,112C 256,120.832, 248.832,128, 240,128l-160,0 C 71.168,128, 64,120.832, 64,112
+		C 64,103.168, 71.168,96, 80,96zM 288,112A16,16 1260 1 1 320,112A16,16 1260 1 1 288,112zM 352,112A16,16 1260 1 1 384,112A16,16 1260 1 1 352,112zM 416,112A16,16 1260 1 1 448,112A16,16 1260 1 1 416,112z"  />
+<glyph unicode="&#xe015;" d="M 96,0A32,32 1260 1 1 160,0A32,32 1260 1 1 96,0zM 384,0A32,32 1260 1 1 448,0A32,32 1260 1 1 384,0zM-0.928,400c0-8.832, 7.168-16, 16-16L 48.32,384 l 19.872-84.992L 96,160c0-1.152, 0.544-2.144, 0.672-3.264l-16.288-73.28
+		c-1.056-4.736, 0.096-9.696, 3.136-13.472C 86.56,66.176, 91.136,64, 96,64l 363.008,0 c 8.832,0, 16,7.168, 16,16s-7.168,16-16,16L 115.968,96 
+		l 7.328,32.96C 124.896,128.704, 126.336,128, 128,128l 291.68,0 c 17.664,0, 28.32,3.488, 36.832,24l 51.968,159.424C 517.504,340, 497.696,352, 480,352L 96,352 
+		C 93.504,352, 91.328,351.136, 88.992,350.592L 76.576,403.648C 74.88,410.88, 68.448,416, 60.992,416L 15.072,416 C 6.208,416-0.928,408.832-0.928,400z M 96.64,320l 380.96,0 
+		l-51.072-156.768c-0.608-1.376-1.12-2.368-1.504-3.040C 423.968,160.096, 422.304,160, 419.68,160L 128,160 L 128,163.168 L 127.392,166.272L 96.64,320z"  />
+<glyph unicode="&#xe016;" d="M 225.216,368.352C 191.328,402.176, 148.768,405.024, 119.168,375.424C 89.568,345.856, 92.384,303.232, 126.208,269.376l 183.168-183.168
+		c 6.24-6.24, 16.384-6.24, 22.624,0s 6.24,16.384,0,22.624L 148.832,292c-16.416,16.416-26.88,40.992-7.072,60.8
+		c 19.776,19.808, 44.384,9.312, 60.8-7.104l 203.648-203.616c 58.4-58.464, 72.96-85.408, 38.176-120.224c-35.2-35.168-72.512-26.464-128.704,29.696
+		L 89.44,277.856C 52.896,314.4, 27.296,374.080, 75.328,422.080C 132.352,479.104, 197.472,423.040, 216.032,404.448l 207.872-207.904c 6.24-6.24, 16.384-6.24, 22.624,0
+		s 6.24,16.384,0,22.624L 238.656,427.072C 175.808,489.92, 104.544,496.64, 52.672,444.704C 0.256,392.32, 5.92,316.16, 66.816,255.232l 226.272-226.272
+		c 19.232-19.232, 60.416-60.384, 107.776-60.384c 21.28,0, 43.84,8.352, 66.176,30.688c 63.584,63.616, 4.768,122.496-38.176,165.472L 225.216,368.352z"  />
+<glyph unicode="&#xe017;" d="M 464.928,447.84c-0.288,0-0.576,0-0.864,0c-0.256,0-0.48,0.032-0.736,0L 262.144,447.84 
+		C 257.248,447.616, 246.112,439.968, 244.672,438.528L 9.344,203.2c-12.48-12.48-12.48-32.704,0-45.184l 180.672-180.672C 196.288-28.896, 204.448-32, 212.608-32
+		c 8.16,0, 16.352,3.104, 22.592,9.344l 235.328,235.328C 471.968,214.112, 480,224, 480,230.144L 480,431.968 C 480.448,440.896, 473.696,447.84, 464.928,447.84z
+		 M 448,236.128c-0.48-0.736-0.96-1.504-1.408-2.112l-233.952-234.016L 31.968,180.576l 234.016,234.016C 266.624,415.040, 267.36,415.52, 268.128,416L 448,416 L 448,236.128 zM 384,368A16,16 1260 1 1 416,368A16,16 1260 1 1 384,368z"  />
+<glyph unicode="&#xe018;" d="M 465.28,480c-0.192,0-0.384,0-0.576,0c-0.096,0-0.192,0-0.288,0c-0.032,0-0.064,0-0.096,0
+		c-0.16,0-0.288,0-0.416,0c-0.064,0-0.128,0-0.192,0L 294.496,480 C 289.6,479.744, 278.464,472.096, 277.024,470.656L 73.344,267.008
+		c-12.48-12.48-12.48-32.704,0-45.184l 25.408-25.408L 73.344,171.008c-12.48-12.48-12.48-32.704,0-45.184l 148.672-148.672
+		c 6.24-6.24, 14.4-9.344, 22.592-9.344c 8.16,0, 16.352,3.104, 22.592,9.344l 203.648,203.68C 472.32,182.272, 480,192.128, 480,198.272L 480,464.096 
+		C 480.448,473.024, 474.048,480, 465.28,480z M 448.352,203.68c-0.096-0.16-0.16-0.256-0.128-0.256c0,0,0,0,0,0l-203.584-203.68l-148.672,148.608
+		l 25.408,25.408l 100.64-100.64c 6.24-6.24, 14.4-9.344, 22.592-9.344c 8.16,0, 16.352,3.104, 22.592,9.344l 181.152,181.152L 448.352,203.68 z M 448.352,352l0-52.32 
+		c-0.096-0.16-0.16-0.256-0.128-0.256l0,0c0,0,0,0,0,0l-203.584-203.68L 95.968,244.352l 202.304,202.272C 298.88,447.072, 299.616,447.552, 300.352,448
+		l 148,0 L 448.352,352 zM 384.352,400.128A16,16 1260 1 1 416.352,400.128A16,16 1260 1 1 384.352,400.128z"  />
+<glyph unicode="&#xe019;" d="M 416,448l-64,0 c0,17.664-14.336,32-32,32L 224,480 C 206.336,480, 192,465.664, 192,448L 128,448 C 110.336,448, 96,433.664, 96,416l 352,0 C 448,433.664, 433.664,448, 416,448zM 96,0c0-17.664, 14.336-32, 32-32l 288,0 c 17.664,0, 32,14.336, 32,32L 448,384 L 96,384 L 96,0 z M 128,352l 288,0 l0-352 L 128,0 L 128,352 zM 176,320C 167.168,320, 160,312.832, 160,304l0-256 C 160,39.168, 167.168,32, 176,32S 192,39.168, 192,48l0,256 C 192,312.832, 184.832,320, 176,320zM 272,320C 263.168,320, 256,312.832, 256,304l0-256 C 256,39.168, 263.168,32, 272,32S 288,39.168, 288,48l0,256 C 288,312.832, 280.832,320, 272,320zM 368,320C 359.168,320, 352,312.832, 352,304l0-256 c0-8.832, 7.168-16, 16-16s 16,7.168, 16,16l0,256 
+		C 384,312.832, 376.832,320, 368,320z"  />
+<glyph unicode="&#xe01a;" d="M 157.248,474.304C 152.896,479.456, 145.824,481.344, 139.52,479.040C 133.216,476.736, 128.992,470.72, 128.992,464l0-417.504 
+		c0-6.912, 4.416-13.024, 10.976-15.2c 1.632-0.544, 3.328-0.8, 5.024-0.8c 4.96,0, 9.76,2.304, 12.832,6.464l 71.552,96.384l 49.632-141.984
+		c 6.368-18.176, 26.272-27.776, 44.448-21.408s 27.776,26.272, 21.408,44.448l-48.704,139.296l 111.936-21.664c 6.688-1.344, 13.408,1.76, 16.832,7.584
+		c 3.424,5.856, 2.816,13.216-1.568,18.4L 157.248,474.304z M 247.2,195.808C 241.152,197.024, 234.976,194.592, 231.328,189.632l-70.304-94.72L 161.024,420.128 
+		l 208.768-248.064L 247.2,195.808z"  />
+<glyph unicode="&#xe01b;" d="M 224,67.072L 224,0 L 176,0 C 167.168,0, 160-7.168, 160-16C 160-24.832, 167.168-32, 176-32l 79.68,0 L 256.32-32 l 79.68,0 
+		c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16L 288,0 l0,67.264 c 66.656,13.152, 128,67.104, 128,156.736L 416,272 C 416,280.832, 408.832,288, 400,288
+		S 384,280.832, 384,272L 384,224 c0-84.032-64.416-128-128-128c-61.664,0-128,40.064-128,128L 128,272 C 128,280.832, 120.832,288, 112,288S 96,280.832, 96,272L 96,224 
+		C 96,133.12, 156.256,79.808, 224,67.072zM 256,128c 52.928,0, 96,43.072, 96,96L 352,384 c0,52.928-43.072,96-96,96C 203.072,480, 160,436.928, 160,384l0-160 C 160,171.072, 203.072,128, 256,128z M 192,384
+		c0,35.36, 28.64,64, 64,64s 64-28.64, 64-64l0-160 c0-35.36-28.64-64-64-64S 192,188.64, 192,224L 192,384 z"  />
+<glyph unicode="&#xe01c;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,0c-123.52,0-224,100.48-224,224s 100.48,224, 224,224
+		s 224-100.48, 224-224S 379.52,0, 256,0zM 359.52,349.568L 299.968,312.384L 260.192,287.584c 31.936-2.112, 57.28-27.424, 59.392-59.392l 24.8,39.744l 37.184,59.584
+		c 3.968,6.304, 3.040,14.528-2.24,19.776C 374.016,352.608, 365.76,353.504, 359.52,349.568zM 192.416,219.808L 167.616,180.032l-37.184-59.584c-3.968-6.304-3.040-14.528, 2.24-19.776C 135.776,97.6, 139.872,96, 144,96
+		c 2.944,0, 5.888,0.8, 8.48,2.432l 59.552,37.184l 39.776,24.8C 219.872,162.528, 194.528,187.872, 192.416,219.808zM 260.192,287.584C 258.784,287.68, 257.44,288, 256,288C 220.64,288, 192,259.36, 192,224c0-1.44, 0.32-2.784, 0.416-4.192
+		c 2.112-31.936, 27.456-57.28, 59.392-59.392C 253.216,160.32, 254.56,160, 256,160c 35.36,0, 64,28.64, 64,64c0,1.44-0.32,2.784-0.416,4.192
+		C 317.472,260.128, 292.128,285.472, 260.192,287.584z M 224,224c0,17.632, 14.368,32, 32,32s 32-14.368, 32-32S 273.632,192, 256,192S 224,206.368, 224,224z"  />
+<glyph unicode="&#xe01d;" d="M 243.392,217.216c 45.984,0, 83.392,37.408, 83.392,83.392C 326.784,346.592, 289.376,384, 243.392,384S 160,346.592, 160,300.608
+		C 160,254.624, 197.408,217.216, 243.392,217.216z M 243.392,352c 28.32,0, 51.392-23.040, 51.392-51.392s-23.040-51.392-51.392-51.392S 192,272.288, 192,300.608
+		S 215.040,352, 243.392,352zM 231.744-23.328c 2.688-2.976, 5.28-4.896, 7.776-6.24c 0.032-0.032, 0.096-0.032, 0.128-0.064
+		c 1.728-0.896, 3.424-1.568, 5.024-1.568c 1.6,0, 3.296,0.672, 5.024,1.568c 0.032,0.032, 0.096,0.032, 0.128,0.064
+		c 2.496,1.344, 5.088,3.264, 7.776,6.24c0,0, 148.736,161.76, 163.68,301.92c 0.896,7.232, 1.504,14.56, 1.504,22.016
+		C 422.784,399.68, 342.464,480, 243.392,480S 64,399.68, 64,300.608c0-7.584, 0.608-14.976, 1.536-22.304C 80.864,138.208, 231.744-23.328, 231.744-23.328z M 243.392,448
+		c 81.28,0, 147.392-66.112, 147.392-147.392c0-5.408-0.384-11.168-1.312-18.624c-11.456-107.392-112.288-233.408-144.768-271.744
+		c-33.312,38.4-135.584,164.096-147.424,272C 96.416,289.312, 96,295.136, 96,300.608C 96,381.888, 162.112,448, 243.392,448z"  />
+<glyph unicode="&#xe01e;" d="M 139.040,195.648C 132.224,187.904, 129.568,177.344, 131.872,167.296c 2.304-10.048, 9.344-18.368, 18.848-22.336
+		c 22.72-9.504, 61.344-15.52, 105.312-16.736C 256.032,128.16, 256,128.096, 256,128l0-96 c0-17.664, 7.168-64, 16-64S 288,14.336, 288,32l0,96 
+		c0,0.096-0.032,0.16-0.032,0.256c 43.968,1.184, 82.592,7.232, 105.312,16.736c 9.504,3.968, 16.544,12.288, 18.848,22.336
+		c 2.304,10.048-0.352,20.608-7.168,28.32C 391.84,210.528, 368.928,218.752, 352,223.040l0,165.76 l0,0c 16.736,5.664, 30.944,12.768, 42.176,21.056
+		c 9.6,7.072, 14.464,18.944, 12.608,30.72s-10.112,21.568-21.44,25.376C 369.728,471.2, 334.208,480, 272,480C 206.24,480, 169.92,469.856, 157.344,465.504
+		c-11.168-3.872-19.296-13.6-21.12-25.28C 134.4,428.576, 139.168,416.832, 148.608,409.696C 160,401.152, 174.56,393.92, 191.968,388.224l 0.032,0L 192,223.040 
+		C 175.104,218.784, 152.16,210.56, 139.040,195.648z M 201.952,418.624C 185.248,424.096, 174.4,430.336, 167.84,435.296C 184.864,441.184, 219.328,448, 272,448
+		c 51.648,0, 85.856-6.56, 103.2-12.384c-6.784-4.992-17.536-11.104-33.472-16.512L 320,411.744l0-213.6 l 24.128-6.112
+		c 17.696-4.48, 31.072-11.008, 36.8-17.536C 366.112,168.32, 330.112,160, 272,160S 177.888,168.32, 163.072,174.496c 5.76,6.528, 19.136,13.056, 36.8,17.536
+		L 224,198.144L 224,411.424 L 201.952,418.624z"  />
+<glyph unicode="&#xe01f;" d="M 486.944,415.232l-144,64C 340.672,479.744, 338.336,480, 336,480c-2.080,0-4.192-0.192-6.24-0.608L 175.712,416.704
+		L 38.976,479.232C 36.672,479.744, 34.336,480, 32,480C 24.8,480, 17.728,477.568, 12,472.96C 4.416,466.912,0,457.728,0,448l0-384 c0-14.976, 10.4-27.968, 25.024-31.232
+		l 143.328-64C 170.656-31.744, 172.992-32, 175.328-32c 2.080,0, 4.192,0.192, 6.24,0.608l 154.048,62.688l 137.408-62.528C 475.36-31.744, 477.696-32, 480-32
+		c 7.2,0, 14.304,2.432, 20.032,7.040C 507.584-18.88, 512-9.696, 512,0L 512,384 C 512,399.008, 501.568,412, 486.944,415.232z M 192,390.624l 128,50.976l0-384 
+		l-128-50.976L 192,390.624 z M 32,448l 128-57.152l0-384 L 32,64L 32,448 z M 480,0l-128,56.896l0,384 L 480,384L 480,0 z"  />
+<glyph unicode="&#xe020;" d="M 404.992,448L 104,448 C 86.336,448, 72,436, 64,416L0,192.512L0,176 l0-33.664 L0,16 C0,7.168, 7.168,0, 16,0l 480,0 
+		c 8.832,0, 16,7.168, 16,16l0,127.872 L 512,176 L 512,190.528 L 448,416C 439.008,436, 422.688,448, 404.992,448z M 94.24,405.344C 95.712,408.64, 99.456,416, 104,416l 300.992,0 
+		c 4.384,0, 9.44-4.512, 12.992-11.392L 478.304,192L 336,192 C 327.168,192, 320,184.832, 320,176L 320,128 L 192,128 L 192,176 C 192,184.832, 184.832,192, 176,192L 33.152,192 L 94.24,405.344z
+		 M 480,32L 32,32 l0,111.552 L 32,160 l 128,0 l0-48 C 160,103.168, 167.168,96, 176,96l 160,0 c 8.832,0, 16,7.168, 16,16L 352,160 l 128,0 l0-15.36 L 480,32 z"  />
+<glyph unicode="&#xe021;" d="M 480,320l-128,0 c0-17.664-14.336-32-32-32l 160,0 l0-64 l-160,0 c 17.664,0, 32-14.336, 32-32l 128,0 l0-192 L 32,0 L 32,192 l 128,0 c0,17.664, 14.336,32, 32,32L 32,224 L 32,288 l 160,0 
+		C 174.336,288, 160,302.336, 160,320L 32,320 C 14.336,320,0,305.664,0,288l0-64 l0-32 l0-192 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,192 L 512,224 L 512,288 C 512,305.664, 497.664,320, 480,320zM 192,288l 128,0 c 17.664,0, 32,14.336, 32,32L 352,352 c0,17.664-14.336,32-32,32L 192,384 C 174.336,384, 160,369.664, 160,352l0-32 C 160,302.336, 174.336,288, 192,288z M 192,352l 128,0 l0-32 
+		L 192,320 L 192,352 zM 160,192l0-32 c0-17.664, 14.336-32, 32-32l 128,0 c 17.664,0, 32,14.336, 32,32L 352,192 c0,17.664-14.336,32-32,32L 192,224 C 174.336,224, 160,209.664, 160,192z M 320,160L 192,160 
+		L 192,192 l 128,0 L 320,160 z"  />
+<glyph unicode="&#xe022;" d="M 432.672,480L 288.288,480 L 144,480 L 80.672,480 C 36.512,480, 0.768,444.512, 0.128,400.512L0,400.672l0-66.656 L0,288 l0-175.328 l0-39.584 l0-24.416 
+		C0,4.128, 36.128-32, 80.672-32l 14.592,0 L 224-32 l 44,0 l 21.408,0 l 63.264,0 C 370.336-32, 384-17.664, 384,0L 384,336 C 384,344.832, 377.504,352, 368.672,352l-288,0 
+		C 53.824,352, 32,372.512, 32,399.328C 32,426.176, 53.824,448, 80.672,448L 144,448 l 149.12,0 L 416,448 l0-368 c0-8.832, 7.84-16, 16.672-16S 448,71.168, 448,80l0,384 
+		C 448,472.832, 441.504,480, 432.672,480z M 80.672,320l 271.36,0 l 0.64-320L 289.408,0 L 268,0 L 224,0 L 95.264,0 L 80.672,0 C 53.824,0, 32,21.824, 32,48.672l0,24.416 l0,39.584 L 32,288 L 32,334.016 
+		L 32,335.648 C 45.44,325.792, 62.24,320, 80.672,320z"  />
+<glyph unicode="&#xe023;" d="M 510.112,390.016C 506.080,403.040, 494.368,412.672, 480,412.672l-32,0 l0-32 l0-17.664 c0-26.464-21.536-48-48-48S 352,336.544, 352,363.008
+		L 352,380.672 l0,32 L 159.84,412.672 l0-32 l0-17.664 c0-26.464-21.536-48-48-48c-26.464,0-48,21.536-48,48L 63.84,380.672 l0,32 L 32,412.672 c-14.368,0-26.080-9.632-30.112-22.656L0,390.016 
+		l0-9.344 l0-99.68 L0,0 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,280.992 L 512,380.672 L 512,390.016 L 510.112,390.016 z M 480,0L 32,0 L 32,256 l 448,0 L 480,0 zM 111.84,347.008c 8.832,0, 16,7.168, 16,16L 127.84,464 c0,8.832-7.168,16-16,16s-16-7.168-16-16l0-100.992 
+		C 95.84,354.176, 103.008,347.008, 111.84,347.008zM 400,347.008c 8.832,0, 16,7.168, 16,16L 416,464 C 416,472.832, 408.832,480, 400,480S 384,472.832, 384,464l0-100.992 
+		C 384,354.176, 391.168,347.008, 400,347.008z"  />
+<glyph unicode="&#xe024;" d="M 480,480L 32,480 C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,448 C 512,465.664, 497.664,480, 480,480z
+		 M 96,192l0-64 L 32,128 L 32,192 L 96,192 z M 32,256L 32,320 l 64,0 l0-64 L 32,256 z M 128,160l 256,0 l0-160 L 128,0 L 128,160 z M 384,192L 128,192 L 128,448 l 256,0 L 384,192 z M 416,192l 64,0 l0-64 l-64,0 L 416,192 z M 416,256L 416,320 l 64,0 l0-64 L 416,256 z M 416,384L 416,448 l 64,0 l0-64 L 416,384 z M 96,384L 32,384 L 32,448 l 64,0 L 96,384 z
+		 M 32,64l 64,0 l0-64 L 32,0 L 32,64 z M 416,64l 64,0 l0-64 l-64,0 L 416,64 z"  />
+<glyph unicode="&#xe025;" d="M 511.456,417.664C 510.048,434.144, 496.736,448, 480,448L 32,448 C 15.264,448, 1.952,434.144, 0.544,417.664L0,417.664 l0-2.656 L0,352 l0-226.656 L0,96 l0-96 
+		c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,352 L 512,415.008 L 512,417.664 L 511.456,417.664 z M 192,256L 192,352 l 128,0 l0-96 L 192,256 z M 320,224l0-98.656 L 192,125.344 L 192,224 L 320,224 z M 160,352l0-96 L 32,256 L 32,352 L 160,352 z M 32,224l 128,0 l0-98.656 
+		L 32,125.344 L 32,224 z M 32,0l0,96 l 128,0 l0-96 L 32,0 z M 192,0l0,96 l 128,0 l0-96 L 192,0 z M 480,0l-128,0 l0,96 l 128,0 L 480,0 z M 480,125.344l-128,0 L 352,224 l 128,0 L 480,125.344 z M 480,256l-128,0 L 352,352 l 128,0 L 480,256 z"  />
+<glyph unicode="&#xe026;" d="M 416,480L 32,480 C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 384,0 c 17.664,0, 32,14.336, 32,32L 448,448 C 448,465.664, 433.664,480, 416,480z
+		 M 32,448l 64,0 l0-448 L 32,0 L 32,448 z M 416,0L 128,0 L 128,448 l 288,0 L 416,0 zM 221.792,308.256A48.448,48.448 1260 1 1 318.688,308.256A48.448,48.448 1260 1 1 221.792,308.256zM 271.232,240.448C 227.488,240.448, 192,192.864, 192,134.176s 158.496-58.688, 158.496,0S 315.008,240.448, 271.232,240.448zM 480,448L 512,448L 512,352L 480,352zM 480,320L 512,320L 512,224L 480,224zM 480,192L 512,192L 512,96L 480,96z"  />
+<glyph unicode="&#xe027;" d="M 480,160L 480,224 c0,147.072-112.672,224-224,224C 147.392,448, 32,369.504, 32,224l0-64 c-17.664,0-32-14.336-32-32l0-64 c0-17.664, 14.336-32, 32-32
+		c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32l0,128 c0,17.664-14.336,32-32,32L 64,224 c0,126.048, 96.608,192, 192,192c 92.48,0, 192-60.064, 192-192l0-32 c-17.664,0-32-14.336-32-32l0-128 
+		c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32c 17.664,0, 32,14.336, 32,32l0,64 C 512,145.664, 497.664,160, 480,160z"  />
+<glyph unicode="&#xe028;" d="M 256,480C 190.496,480, 124.96,455.008, 74.976,405.024c-99.968-99.968-99.968-262.080,0-362.048C 124.96-7.008, 190.496-32, 256-32
+		s 131.040,24.992, 181.024,74.976c 99.968,99.968, 99.968,262.080,0,362.048C 387.040,455.008, 321.504,480, 256,480z M 165.504,133.504C 141.312,157.664, 128,189.824, 128,224
+		c0,34.176, 13.312,66.336, 37.504,90.496C 189.664,338.688, 221.824,352, 256,352s 66.336-13.312, 90.496-37.504C 370.688,290.336, 384,258.176, 384,224
+		c0-34.176-13.312-66.336-37.504-90.496C 322.336,109.312, 290.176,96, 256,96S 189.664,109.312, 165.504,133.504z M 354.976,424.8L 305.6,375.424
+		C 289.472,380.704, 272.8,384, 256,384C 240.704,384, 225.568,381.088, 210.752,376.736l-49.92,49.92C 190.272,440.448, 222.528,448, 256,448C 290.944,448, 324.544,439.84, 354.976,424.8z
+		 M 53.376,319.136l 49.92-49.92c-9.152-31.040-8.768-64, 1.28-94.848l-49.376-49.376C 40.16,155.456, 32,189.056, 32,224C 32,257.472, 39.552,289.728, 53.376,319.136z
+		 M 97.6,65.632L 97.6,65.632C 97.6,65.6, 97.6,65.6, 97.6,65.632L 97.6,65.632z M 164.704,19.552l 50.432,50.432C 228.544,66.432, 242.208,64, 256,64
+		c 15.296,0, 30.432,2.912, 45.248,7.296l 49.92-49.92C 321.728,7.552, 289.472,0, 256,0C 223.968,0, 193.088,6.88, 164.704,19.552z M 458.56,128.928
+		l-49.824,49.824c 8.288,28.128, 8.768,57.792, 1.28,86.112l 50.336,50.336C 486.688,255.968, 486.080,187.744, 458.56,128.928z"  />
+<glyph unicode="&#xe029;" d="M 256-32c 82.528,0, 155.744,39.232, 202.56,99.872L 256,224L 256,480 C 114.624,480,0,365.376,0,224S 114.624-32, 256-32z M 224,445.728L 224,224 
+		c0-9.92, 4.608-19.296, 12.448-25.344l 175.424-135.232C 370.304,22.784, 314.976,0, 256,0c-123.52,0-224,100.48-224,224C 32,336.64, 115.584,430.144, 224,445.728zM 300,475.712l0-228.96 l 182.784-140.896C 501.344,141.216, 512,181.312, 512,224C 512,350.336, 420.352,454.816, 300,475.712z"  />
+<glyph unicode="&#xe02a;" d="M 479.584,480c-17.92,0-32.416-14.528-32.416-32.416l0-75.584 C 410.624,416.256, 368.512,480, 252.608,480C 113.344,480,0,366.688,0,227.392
+		c0-139.296, 113.344-252.608, 252.608-252.608c 109.376,0, 205.824,69.856, 240.064,173.824c 5.664,17.312-3.744,35.968-21.056,41.664
+		c-17.312,5.696-35.968-3.712-41.664-21.024c-25.28-76.832-96.544-128.448-177.344-128.448c-102.912,0-186.624,83.712-186.624,186.624
+		s 83.712,186.24, 186.624,186.24c 72.864,0, 113.344-45.344, 146.368-92.896L 317.472,320.768 c-17.92,0-32.416-14.528-32.416-32.416c0-17.92, 14.528-32.416, 32.416-32.416
+		l 162.112,0 C 497.472,255.872, 512,270.4, 512,288.288L 512,447.584 C 512,465.472, 497.472,480, 479.584,480z"  />
+<glyph unicode="&#xe02b;" d="M 152.928,415.104c 18.72,18.72, 49.152,18.72, 67.872,0l 171.616-171.616c 8.448,31.968, 0.544,67.36-24.512,92.416
+		L 254.752,449.024c-37.504,37.504-98.272,37.504-135.776,0L 93.536,423.584c-37.504-37.504-37.504-98.272,0-135.776l 113.152-113.152
+		c 25.056-25.056, 60.448-32.96, 92.416-24.512L 127.488,321.76c-18.72,18.72-18.72,49.152,0,67.872L 152.928,415.104zM 257.248-1.024c 37.504-37.504, 98.272-37.504, 135.776,0l 25.44,25.472c 37.504,37.504, 37.504,98.272,0,135.776L 305.312,273.312
+		c-25.056,25.056-60.448,32.96-92.416,24.512l 171.616-171.616c 18.72-18.72, 18.72-49.152,0-67.872l-25.472-25.472c-18.72-18.72-49.152-18.72-67.872,0
+		L 119.584,204.512c-8.448-31.968-0.544-67.36, 24.512-92.416L 257.248-1.024z"  />
+<glyph unicode="&#xe02c;" d="M 120.64,227.68c 20.448-20.448, 50.528-27.616, 77.888-19.456L 47.36,359.36C 42.432,364.288, 39.84,371.424, 39.84,379.936
+		c0,14.080, 7.36,32.064, 17.12,41.824c 12.8,12.8, 47.52,26.976, 63.68,10.912l 151.136-151.168c 2.208,7.392, 3.328,15.072, 3.328,22.752
+		c0,20.864-8.096,40.416-22.784,55.136L 149.824,461.856C 119.040,492.64, 57.856,481.088, 27.744,450.976C 10.272,433.504-0.576,406.432-0.576,380.32
+		c0-20.288, 6.656-38.112, 18.72-50.176L 120.64,227.68zM 391.36,220.32c-20.448,20.448-50.528,27.616-77.888,19.456l 151.168-151.168c 4.928-4.928, 7.52-12.032, 7.52-20.576
+		c0-14.080-7.36-32.064-17.12-41.824c-12.8-12.8-47.52-26.976-63.68-10.912L 240.224,166.496c-2.208-7.392-3.328-15.072-3.328-22.752
+		c0-20.864, 8.096-40.416, 22.784-55.136l 102.464-102.464c 30.784-30.784, 91.968-19.232, 122.080,10.88c 17.472,17.472, 28.32,44.544, 28.32,70.656
+		c0,20.288-6.656,38.112-18.72,50.176L 391.36,220.32zM 146.624,333.408C 142.528,329.344, 140.288,323.904, 140.288,318.144s 2.24-11.168, 6.304-15.232l 188.288-188.32
+		c 8.416-8.384, 22.080-8.384, 30.496,0c 4.096,4.064, 6.304,9.504, 6.304,15.264s-2.24,11.168-6.304,15.232L 177.088,333.408
+		C 168.704,341.792, 155.008,341.792, 146.624,333.408z"  />
+<glyph unicode="&#xe02d;" d="M 432.32,114.88A2.912,2.912 1260 1 1 438.144,114.88A2.912,2.912 1260 1 1 432.32,114.88zM 368.032,48.544A5.792,5.792 1260 1 1 379.616,48.54399999999998A5.792,5.792 1260 1 1 368.032,48.54399999999998zM 281.376,14.4A8.704,8.704 1260 1 1 298.784,14.399999999999977A8.704,8.704 1260 1 1 281.376,14.399999999999977zM 188.096,18.976A11.584,11.584 1260 1 1 211.264,18.976A11.584,11.584 1260 1 1 188.096,18.976zM 105.344,61.44A14.496,14.496 1260 1 1 134.336,61.44A14.496,14.496 1260 1 1 105.344,61.44zM 48.032,133.632A17.408,17.408 1260 1 1 82.848,133.632A17.408,17.408 1260 1 1 48.032,133.632zM 26.528,222.272A20.288,20.288 1260 1 1 67.104,222.272A20.288,20.288 1260 1 1 26.528,222.272zM 44.224,310.336A23.2,23.2 1260 1 1 90.624,310.336A23.2,23.2 1260 1 1 44.224,310.336zM 97.312,381.344A26.112,26.112 1260 1 1 149.536,381.344A26.112,26.112 1260 1 1 97.312,381.344zM 175.264,422.016A28.992,28.992 1260 1 1 233.248,422.016A28.992,28.992 1260 1 1 175.264,422.016zM 262.816,424.544A31.904,31.904 1260 1 1 326.624,424.544A31.904,31.904 1260 1 1 262.816,424.544zM 342.976,388.48A34.784,34.784 1260 1 1 412.544,388.48A34.784,34.784 1260 1 1 342.976,388.48zM 399.936,320.736A37.696,37.696 1260 1 1 475.328,320.736A37.696,37.696 1260 1 1 399.936,320.736zM 422.592,232.992A40.608,40.608 1260 1 1 503.808,232.992A40.608,40.608 1260 1 1 422.592,232.992z"  />
+<glyph unicode="&#xe02e;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,416c 105.856,0, 192-86.144, 192-192
+	c0-41.408-13.312-79.68-35.68-111.072L 144.928,380.32C 176.32,402.688, 214.592,416, 256,416z M 64,224c0,41.408, 13.312,79.68, 35.68,111.072l 267.392-267.392l0,0
+	C 335.648,45.312, 297.408,32, 256,32C 150.144,32, 64,118.144, 64,224z"  />
+<glyph unicode="&#xe02f;" d="M 480,416L 32,416 C 14.336,416,0,401.664,0,384l0-64 l 512,0 L 512,384 C 512,401.664, 497.664,416, 480,416z M 480,352L 32,352 L 32,384 l 448,0 L 480,352 zM 32,0c0-17.664, 14.336-32, 32-32l 384,0 c 17.664,0, 32,14.336, 32,32L 480,288 L 32,288 L 32,0 z M 64,256l 384,0 l0-256 L 64,0 L 64,256 zM 336,224l-160,0 C 167.168,224, 160,216.832, 160,208C 160,199.168, 167.168,192, 176,192l 160,0 C 344.832,192, 352,199.168, 352,208
+		C 352,216.832, 344.832,224, 336,224z"  />
+<glyph unicode="&#xe030;" d="M 511.744,258.656C 510.4,337.184, 446.688,407.168, 368,407.168c-45.504,0-85.6-23.808-112-58.752
+		C 229.6,383.36, 189.504,407.168, 144,407.168c-78.688,0-142.4-69.984-143.744-148.512L0,258.656 c0-0.48, 0.096-0.928, 0.096-1.408
+		C 0.096,256.896,0,256.544,0,256.16c0-2.208, 0.544-3.872, 0.64-5.984C 7.68,50.048, 253.984-32, 253.984-32s 249.92,81.952, 257.312,281.856
+		C 511.424,252.096, 512,253.856, 512,256.16c0,0.384-0.096,0.736-0.096,1.088C 511.904,257.76, 512,258.176, 512,258.656L 511.744,258.656 z M 479.328,251.040
+		c-5.664-153.6-181.056-231.68-225.28-248.928c-43.84,17.28-216.032,95.008-221.44,249.536C 32.544,253.248, 32.384,254.72, 32.16,256.32
+		c 0.032,0.576, 0.064,1.184, 0.096,1.792C 33.344,321.568, 84.512,375.168, 144,375.168c 32.832,0, 64.352-16.768, 86.464-46.048
+		C 236.512,321.12, 245.952,316.416, 256,316.416s 19.488,4.704, 25.536,12.704C 303.648,358.4, 335.168,375.168, 368,375.168c 59.488,0, 110.656-53.6, 111.744-117.056
+		c0-0.608, 0.032-1.216, 0.096-1.824C 479.616,254.72, 479.424,253.056, 479.328,251.040z"  />
+<glyph unicode="&#xe031;" d="M 510.144,272.864c-3.776,11.584-13.792,20.032-25.824,21.792l-137.92,20.032L 284.704,439.648
+		C 279.296,450.592, 268.192,457.504, 256,457.504S 232.704,450.592, 227.296,439.648L 165.632,314.688l-137.92-20.032c-12.064-1.76-22.080-10.208-25.824-21.792
+		c-3.776-11.584-0.64-24.288, 8.096-32.8l 99.808-97.28l-23.552-137.376c-2.048-12, 2.88-24.128, 12.736-31.296C 104.512-29.952, 111.104-32, 117.76-32
+		c 5.088,0, 10.208,1.216, 14.88,3.68L 256,36.544l 123.36-64.864C 384.032-30.784, 389.152-32, 394.24-32c 6.624,0, 13.248,2.048, 18.816,6.112
+		c 9.856,7.168, 14.784,19.296, 12.736,31.296l-23.552,137.376l 99.808,97.28C 510.752,248.544, 513.888,261.28, 510.144,272.864z M 367.84,153.952L 394.24,0
+		L 256,72.672L 117.76,0l 26.4,153.952L 32.32,262.976L 186.88,285.44L 256,425.504l 69.12-140.064l 154.56-22.464L 367.84,153.952z"  />
+<glyph unicode="&#xe032;" d="M 510.144,272.864c-3.776,11.584-13.792,20.032-25.856,21.76l-137.92,20.032L 284.704,439.648
+	C 279.296,450.592, 268.192,457.504, 256,457.504S 232.704,450.592, 227.296,439.648L 165.632,314.688l-137.92-20.032c-12.064-1.76-22.080-10.208-25.824-21.792
+	c-3.776-11.584-0.64-24.288, 8.096-32.8l 99.808-97.28l-23.552-137.376c-2.048-12, 2.88-24.128, 12.736-31.296C 104.512-29.952, 111.104-32, 117.76-32
+	c 5.088,0, 10.208,1.216, 14.88,3.68L 256,36.544l 123.36-64.864C 384.032-30.784, 389.152-32, 394.24-32c 6.624,0, 13.248,2.048, 18.816,6.112
+	c 9.856,7.168, 14.784,19.296, 12.736,31.296l-23.552,137.376l 99.808,97.28C 510.784,248.576, 513.92,261.28, 510.144,272.864z M 367.84,153.952L 394.24,0
+	L 256,72.672L 256,425.504 l 69.12-140.064l 154.56-22.464L 367.84,153.952z"  />
+<glyph unicode="&#xe033;" d="M 332.096,291.712L 253.696,450.56L 175.296,291.712L0,266.24L 126.848,142.592L 96.896-32L 253.696,50.432L 410.496-32L 380.544,142.592L 507.392,266.24 	z"  />
+<glyph unicode="&#xe034;" d="M 256,50.432L 256,450.56L 177.6,291.712L 2.304,266.24L 129.152,142.592L 99.2-32 	z"  />
+<glyph unicode="&#xe035;" d="M 13.568,49.44c-18.752-18.752-18.752-49.12,0-67.872c 9.376-9.376, 21.664-14.048, 33.952-14.048
+		c 12.288,0, 24.576,4.672, 33.952,14.048l 157.6,157.6L 171.168,207.040L 13.568,49.44zM 407.456,341.536L 476.032,377.024L 512,446.496L 478.496,480L 409.024,444.032L 373.536,375.456L 289.952,291.872L 323.872,257.952 
+			zM 422.464,159.36C 420.288,159.488, 418.208,160, 416,160c-11.712,0-22.816-2.4-33.184-6.24L 185.76,350.816
+		C 189.6,361.184, 192,372.288, 192,384c0,2.208-0.512,4.288-0.64,6.464C 187.968,440.416, 146.816,480, 96,480C 81.216,480, 67.36,476.384, 54.848,470.4l 63.776-63.776
+		c 3.36-3.36, 5.664-7.328, 7.2-11.52c 4.192-11.36, 1.92-24.576-7.2-33.728C 112.384,355.136, 104.192,352, 96,352C 92.224,352, 88.48,352.832, 84.896,354.176
+		c-4.192,1.568-8.16,3.84-11.52,7.2L 9.6,425.152C 3.616,412.64,0,398.784,0,384c0-50.816, 39.584-91.968, 89.536-95.36C 91.712,288.512, 93.792,288, 96,288
+		c 11.712,0, 22.816,2.4, 33.184,6.24l 197.056-197.056C 322.4,86.816, 320,75.712, 320,64c0-2.208, 0.512-4.288, 0.64-6.464
+		C 324.032,7.584, 365.184-32, 416-32c 14.784,0, 28.64,3.616, 41.152,9.6l-63.776,63.776c-3.36,3.36-5.664,7.328-7.2,11.52
+		c-4.192,11.36-1.92,24.576, 7.2,33.728C 399.616,92.864, 407.808,96, 416,96c 3.776,0, 7.52-0.832, 11.104-2.176
+		c 4.192-1.568, 8.16-3.84, 11.52-7.2l 63.776-63.776C 508.384,35.36, 512,49.216, 512,64C 512,114.816, 472.416,155.968, 422.464,159.36z"  />
+<glyph unicode="&#xe036;" d="M 416,96c 3.776,0, 7.52-0.832, 11.104-2.176c 4.192-1.568, 8.16-3.84, 11.52-7.2l 63.776-63.776
+	C 508.384,35.36, 512,49.216, 512,64c0,50.816-39.584,91.968-89.536,95.36C 420.288,159.488, 418.208,160, 416,160c-11.712,0-22.816-2.4-33.184-6.24
+	L 185.76,350.816C 189.6,361.184, 192,372.288, 192,384c0,2.208-0.512,4.288-0.64,6.464C 187.968,440.416, 146.816,480, 96,480C 81.216,480, 67.36,476.384, 54.848,470.4
+	l 63.776-63.776c 3.36-3.36, 5.664-7.328, 7.2-11.52c 4.192-11.36, 1.92-24.576-7.2-33.728C 112.384,355.136, 104.192,352, 96,352
+	C 92.224,352, 88.48,352.832, 84.896,354.176c-4.192,1.568-8.16,3.84-11.52,7.2L 9.6,425.152C 3.616,412.64,0,398.784,0,384
+	c0-50.816, 39.584-91.968, 89.536-95.36C 91.712,288.512, 93.792,288, 96,288c 11.712,0, 22.816,2.4, 33.184,6.24l 197.056-197.056
+	C 322.4,86.816, 320,75.712, 320,64c0-2.208, 0.512-4.288, 0.64-6.464C 324.032,7.584, 365.184-32, 416-32c 14.784,0, 28.64,3.616, 41.152,9.6
+	l-63.776,63.776c-3.36,3.36-5.664,7.328-7.2,11.52c-4.192,11.36-1.92,24.576, 7.2,33.728C 399.616,92.864, 407.808,96, 416,96z"  />
+<glyph unicode="&#xe037;" d="M 440.416,277.088c-4.032,14.016-9.504,27.36-16.448,39.872l 31.808,66.912c-11.808,14.72-25.184,28.096-39.904,39.904
+		l-66.912-31.808c-12.48,6.912-25.856,12.416-39.872,16.448L 284.192,478.368C 274.944,479.392, 265.536,480, 256,480S 237.056,479.392, 227.808,478.368L 202.912,408.416
+		C 188.928,404.384, 175.552,398.88, 163.072,391.968L 96.128,423.776c-14.72-11.808-28.096-25.184-39.904-39.904l 31.808-66.912
+		c-6.912-12.48-12.416-25.856-16.448-39.872L 1.632,252.192C 0.608,242.944,0,233.536,0,224s 0.608-18.944, 1.632-28.192l 69.984-24.896
+		c 4.032-14.016, 9.504-27.36, 16.448-39.872l-31.808-66.912c 11.808-14.72, 25.184-28.128, 39.904-39.904l 66.912,31.808
+		c 12.48-6.912, 25.856-12.416, 39.872-16.448l 24.896-69.984C 237.056-31.392, 246.464-32, 256-32s 18.944,0.608, 28.192,1.632l 24.896,69.984
+		c 14.016,4.032, 27.36,9.504, 39.872,16.448l 66.912-31.808c 14.72,11.808, 28.128,25.184, 39.904,39.904l-31.808,66.912
+		c 6.912,12.48, 12.416,25.856, 16.448,39.872l 69.984,24.896C 511.392,205.056, 512,214.464, 512,224s-0.608,18.944-1.632,28.192L 440.416,277.088z M 256,96
+		c-70.688,0-128,57.312-128,128c0,70.688, 57.312,128, 128,128s 128-57.312, 128-128C 384,153.312, 326.688,96, 256,96zM 192,224A64,64 1260 1 1 320,224A64,64 1260 1 1 192,224z"  />
+<glyph unicode="&#xe038;" d="M 15.648,204.832l 55.52,2.048C 77.728,198.368, 85.312,190.624, 93.76,183.712l-3.648-55.584
+		c 6.080-3.456, 12.352-6.656, 18.944-9.504c 6.56-2.848, 13.216-5.184, 19.904-7.264l 37.92,40.8c 10.848-1.376, 21.664-1.568, 32.32-0.512
+		l 36.64-41.792c 13.664,3.744, 26.848,8.992, 39.328,15.648L 273.152,181.056C 281.632,187.616, 289.376,195.2, 296.288,203.648l 55.584-3.648
+		c 3.456,6.080, 6.656,12.352, 9.504,18.944c 2.848,6.56, 5.184,13.216, 7.264,19.904l-40.8,37.92c 1.376,10.848, 1.568,21.664, 0.512,32.32
+		l 41.792,36.64c-3.744,13.664-8.992,26.848-15.648,39.328L 298.944,383.040C 292.384,391.52, 284.8,399.264, 276.352,406.176L 280,461.76
+		C 273.92,465.216, 267.648,468.416, 261.056,471.264C 254.496,474.080, 247.84,476.448, 241.152,478.496L 203.264,437.696c-10.848,1.376-21.664,1.568-32.32,0.512
+		L 134.272,480C 120.608,476.256, 107.424,471.008, 94.944,464.352L 96.96,408.832C 88.48,402.272, 80.736,394.72, 73.824,386.272L 18.24,389.888
+		c-3.456-6.080-6.656-12.352-9.504-18.944C 5.92,364.384, 3.552,357.728, 1.504,351.040l 40.8-37.92c-1.376-10.848-1.568-21.664-0.512-32.32L0,244.16
+		C 3.744,230.528, 8.992,217.312, 15.648,204.832z M 223.072,383.104c 48.672-20.992, 71.136-77.472, 50.144-126.176S 195.744,185.792, 147.040,206.784
+		S 75.904,284.256, 96.896,332.96S 174.368,404.096, 223.072,383.104zM 137.056,294.944A48,48 1260 1 1 233.056,294.94399999999996A48,48 1260 1 1 137.056,294.94399999999996zM 480.672,103.232l-13.248,4.704l 6.048,12.736l 13.92,29.28c-5.152,6.432-11.008,12.288-17.472,17.472l-29.28-13.92
+		l-12.736-6.048l-4.704,13.248l-10.88,30.624C 408.288,191.744, 404.16,192, 400,192s-8.288-0.256-12.352-0.704l-10.88-30.624l-4.704-13.248
+		l-12.736,6.048l-29.28,13.92c-6.432-5.152-12.288-11.008-17.472-17.472l 13.92-29.28l 6.048-12.736l-13.248-4.704l-30.624-10.88
+		C 288.256,88.288, 288,84.16, 288,80s 0.256-8.288, 0.704-12.32l 30.624-10.88l 13.248-4.704l-6.048-12.736l-13.92-29.28
+		c 5.152-6.432, 11.008-12.288, 17.472-17.472l 29.28,13.92l 12.736,6.048l 4.704-13.248l 10.88-30.624C 391.712-31.744, 395.84-32, 400-32
+		s 8.288,0.256, 12.352,0.704l 10.88,30.624l 4.704,13.248l 12.736-6.048l 29.28-13.92c 6.432,5.152, 12.288,11.008, 17.472,17.472l-13.92,29.28
+		l-6.048,12.736l 13.248,4.704l 30.624,10.88C 511.744,71.712, 512,75.84, 512,80s-0.256,8.288-0.704,12.352L 480.672,103.232z M 400,56
+		c-13.248,0-24,10.752-24,24c0,13.248, 10.752,24, 24,24s 24-10.752, 24-24C 424,66.752, 413.248,56, 400,56z"  />
+<glyph unicode="&#xe039;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 379.328,228.672
+		c-6.24-6.24-16.384-6.24-22.624,0L 288,297.376L 288,48 C 288,39.168, 280.832,32, 272,32S 256,39.168, 256,48L 256,297.376 L 187.328,228.672
+		c-6.24-6.24-16.384-6.24-22.624,0c-6.24,6.24-6.24,16.384,0,22.624l 96,96C 260.736,347.36, 260.768,347.36, 260.8,347.392
+		c 1.44,1.408, 3.168,2.592, 5.056,3.36c 3.904,1.632, 8.32,1.632, 12.224,0C 280.064,349.952, 281.824,348.8, 283.328,347.328l 96-96
+		C 385.568,245.056, 385.568,234.944, 379.328,228.672z"  />
+<glyph unicode="&#xe03a;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 379.328,164.672l-96-96
+		c-1.472-1.472-3.232-2.656-5.184-3.456c-3.904-1.632-8.32-1.632-12.224,0c-1.92,0.8-3.616,1.952-5.056,3.36
+		c-0.032,0.032-0.096,0.032-0.128,0.096l-96,96c-6.24,6.24-6.24,16.384,0,22.624c 6.24,6.24, 16.384,6.24, 22.624,0L 256,118.624L 256,368 
+		C 256,376.832, 263.168,384, 272,384S 288,376.832, 288,368l0-249.376 l 68.672,68.672c 6.24,6.24, 16.384,6.24, 22.624,0C 385.568,181.056, 385.568,170.944, 379.328,164.672z
+		"  />
+<glyph unicode="&#xe03b;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 448,208
+		C 448,199.168, 440.832,192, 432,192L 182.624,192 l 68.672-68.672c 6.24-6.24, 6.24-16.384,0-22.624c-6.24-6.24-16.384-6.24-22.624,0l-96,96
+		C 132.64,196.736, 132.608,196.8, 132.576,196.864C 131.168,198.304, 130.016,200, 129.248,201.888C 128.448,203.84, 128,205.888, 128,207.936C 128,207.968, 128,207.968, 128,208l0,0
+		c0,2.080, 0.416,4.16, 1.248,6.112c 0.768,1.888, 1.92,3.584, 3.328,5.024c 0.064,0.064, 0.064,0.128, 0.128,0.192l 96,96
+		c 6.24,6.24, 16.384,6.24, 22.624,0c 6.24-6.24, 6.24-16.384,0-22.624L 182.624,224L 432,224 C 440.832,224, 448,216.832, 448,208z"  />
+<glyph unicode="&#xe03c;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 416,208
+		c0-0.032,0-0.032,0-0.064c0-2.080-0.416-4.128-1.216-6.048c-0.8-1.952-1.984-3.712-3.456-5.184l-96-96
+		c-6.24-6.24-16.384-6.24-22.624,0c-6.24,6.24-6.24,16.384,0,22.624L 361.376,192L 112,192 C 103.168,192, 96,199.168, 96,208C 96,216.832, 103.168,224, 112,224
+		l 249.376,0 L 292.672,292.672c-6.24,6.24-6.24,16.384,0,22.624c 6.24,6.24, 16.384,6.24, 22.624,0l 96-96c 1.472-1.472, 2.656-3.232, 3.456-5.184
+		C 415.584,212.16, 416,210.080, 416,208L 416,208z"  />
+<glyph unicode="&#xe03d;" d="M 102.304,377.696c-93.728-93.728-93.728-245.696,0-339.424c 93.728-93.728, 245.696-93.728, 339.424,0
+		c 93.728,93.728, 93.728,245.696,0,339.424C 347.968,471.424, 196.032,471.424, 102.304,377.696z M 390.976,89.024c-6.24-6.24-16.384-6.24-22.624,0
+		L 192,265.376l0-97.152 c0-8.832-7.168-16-16-16S 160,159.392, 160,168.224L 160,304 l0,0c0,2.080, 0.416,4.16, 1.248,6.112
+		c 0.768,1.888, 1.92,3.584, 3.328,5.024c 0.064,0.064, 0.064,0.128, 0.128,0.192C 164.736,315.36, 164.768,315.36, 164.8,315.392
+		c 1.44,1.408, 3.168,2.592, 5.056,3.36C 171.84,319.584, 173.92,320, 176,320l 135.776,0 c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 214.624,288 
+		l 176.32-176.32C 397.216,105.408, 397.216,95.296, 390.976,89.024z"  />
+<glyph unicode="&#xe03e;" d="M 102.304,377.696c-93.728-93.728-93.728-245.696,0-339.424c 93.728-93.728, 245.696-93.728, 339.424,0
+		c 93.728,93.728, 93.728,245.696,0,339.424C 347.968,471.424, 196.032,471.424, 102.304,377.696z M 384,304l0-135.776 c0-8.832-7.168-16-16-16
+		s-16,7.168-16,16L 352,265.376 l-176.32-176.32c-6.24-6.24-16.384-6.24-22.624,0c-6.24,6.24-6.24,16.384,0,22.624L 329.376,288L 232.224,288 
+		c-8.832,0-16,7.168-16,16c0,8.832, 7.168,16, 16,16L 368,320 c 2.080,0, 4.16-0.416, 6.112-1.248c 3.904-1.632, 7.040-4.736, 8.64-8.64
+		C 383.584,308.16, 384,306.080, 384,304L 384,304z"  />
+<glyph unicode="&#xe03f;" d="M 102.304,377.696c-93.728-93.728-93.728-245.696,0-339.424c 93.728-93.728, 245.696-93.728, 339.424,0
+		c 93.728,93.728, 93.728,245.696,0,339.424C 347.968,471.424, 196.032,471.424, 102.304,377.696z M 384,112c0-0.032,0-0.032,0-0.064
+		c0-2.080-0.416-4.128-1.216-6.048c-1.632-3.904-4.736-7.040-8.64-8.64C 372.16,96.416, 370.080,96, 368,96L 232.224,96 
+		c-8.832,0-16,7.168-16,16c0,8.832, 7.168,16, 16,16l 97.152,0 l-176.32,176.32c-6.24,6.24-6.24,16.384,0,22.624s 16.384,6.24, 22.624,0
+		l 176.32-176.32L 352,247.776 c0,8.832, 7.168,16, 16,16s 16-7.168, 16-16L 384,112 z"  />
+<glyph unicode="&#xe040;" d="M 102.304,377.696c-93.728-93.728-93.728-245.696,0-339.424c 93.728-93.728, 245.696-93.728, 339.424,0
+		c 93.728,93.728, 93.728,245.696,0,339.424C 347.968,471.424, 196.032,471.424, 102.304,377.696z M 390.976,304.32L 214.624,128l 97.152,0 c 8.832,0, 16-7.168, 16-16
+		c0-8.832-7.168-16-16-16L 176,96 c-2.080,0-4.16,0.416-6.112,1.248c-1.92,0.8-3.616,1.952-5.056,3.36
+		c-0.032,0.032-0.096,0.032-0.128,0.096c-0.064,0.064-0.064,0.128-0.128,0.192c-1.408,1.44-2.56,3.136-3.328,5.024
+		C 160.448,107.84, 160,109.888, 160,111.936c0,0.032,0,0.032,0,0.064L 160,247.776 c0,8.832, 7.168,16, 16,16S 192,256.608, 192,247.776l0-97.152 l 176.32,176.32
+		c 6.24,6.24, 16.384,6.24, 22.624,0S 397.216,310.592, 390.976,304.32z"  />
+<glyph unicode="&#xe041;" d="M 480,480L 32,480 C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,448 C 512,465.664, 497.664,480, 480,480z
+		 M 224,176l0-128 C 224,39.168, 216.832,32, 208,32S 192,39.168, 192,48l0,89.376 l-100.672-100.672c-6.24-6.24-16.384-6.24-22.624,0
+		c-6.24,6.24-6.24,16.384,0,22.624L 169.376,160L 80,160 C 71.168,160, 64,167.168, 64,176C 64,184.832, 71.168,192, 80,192l 128,0 c 2.080,0, 4.16-0.416, 6.112-1.248
+		c 3.904-1.632, 7.040-4.736, 8.64-8.64C 223.584,180.16, 224,178.080, 224,176L 224,176z M 432,288C 440.832,288, 448,280.832, 448,272C 448,263.168, 440.832,256, 432,256l-128,0 
+		C 301.92,256, 299.84,256.416, 297.888,257.248C 295.968,258.016, 294.272,259.168, 292.8,260.608C 292.768,260.64, 292.736,260.64, 292.672,260.672
+		C 292.64,260.736, 292.608,260.8, 292.576,260.864C 291.168,262.304, 290.016,264, 289.248,265.888C 288.448,267.84, 288,269.888, 288,271.936C 288,271.968, 288,271.968, 288,272l0,128 
+		C 288,408.832, 295.168,416, 304,416S 320,408.832, 320,400l0-89.376 l 100.672,100.672c 6.24,6.24, 16.384,6.24, 22.624,0c 6.24-6.24, 6.24-16.384,0-22.624
+		L 342.624,288L 432,288 z"  />
+<glyph unicode="&#xe042;" d="M 480,480L 32,480 C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,448 C 512,465.664, 497.664,480, 480,480z
+		 M 208,64C 216.832,64, 224,56.832, 224,48C 224,39.168, 216.832,32, 208,32l-128,0 c-2.080,0-4.16,0.416-6.112,1.248
+		c-1.92,0.8-3.616,1.952-5.056,3.36c-0.032,0.032-0.096,0.032-0.128,0.096c-0.064,0.064-0.064,0.128-0.128,0.192
+		c-1.408,1.44-2.56,3.136-3.328,5.024C 64.448,43.84, 64,45.888, 64,47.936c0,0.032,0,0.032,0,0.064l0,128 C 64,184.832, 71.168,192, 80,192
+		S 96,184.832, 96,176l0-89.376 l 100.672,100.672c 6.24,6.24, 16.384,6.24, 22.624,0c 6.24-6.24, 6.24-16.384,0-22.624L 118.624,64L 208,64 z M 448,400l0-128 
+		C 448,263.168, 440.832,256, 432,256S 416,263.168, 416,272L 416,361.376 L 315.328,260.672c-6.24-6.24-16.384-6.24-22.624,0c-6.24,6.24-6.24,16.384,0,22.624
+		L 393.376,384L 304,384 C 295.168,384, 288,391.168, 288,400C 288,408.832, 295.168,416, 304,416l 128,0 c 2.080,0, 4.16-0.416, 6.112-1.248c 3.904-1.632, 7.040-4.736, 8.64-8.64
+		C 447.584,404.16, 448,402.080, 448,400L 448,400z"  />
+<glyph unicode="&#xe043;" d="M 272-32c 132.544,0, 240,107.456, 240,240S 404.544,448, 272,448S 32,340.544, 32,208S 139.456-32, 272-32z M 156.864,179.424L 260.64,283.2
+		C 263.776,286.336, 267.872,287.872, 272,287.872c 4.128,0, 8.224-1.536, 11.36-4.672l 103.776-103.776c 6.24-6.24, 6.24-16.384,0-22.624
+		c-6.24-6.24-16.384-6.24-22.624,0L 272,249.312L 179.488,156.8c-6.24-6.24-16.384-6.24-22.624,0C 150.624,163.040, 150.624,173.184, 156.864,179.424z"  />
+<glyph unicode="&#xe044;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 387.136,236.576L 283.36,132.8
+		c-3.136-3.136-7.264-4.704-11.36-4.672c-4.128,0-8.224,1.536-11.36,4.672L 156.864,236.576c-6.24,6.24-6.24,16.384,0,22.624
+		c 6.24,6.24, 16.384,6.24, 22.624,0L 272,166.688L 364.512,259.2c 6.24,6.24, 16.384,6.24, 22.624,0C 393.376,252.96, 393.376,242.816, 387.136,236.576z"  />
+<glyph unicode="&#xe045;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 323.2,115.488
+		c 6.24-6.24, 6.24-16.384,0-22.624c-6.24-6.24-16.384-6.24-22.624,0L 196.8,196.64C 193.664,199.776, 192.128,203.872, 192.128,208
+		c0,4.128, 1.536,8.224, 4.672,11.36l 103.776,103.776c 6.24,6.24, 16.384,6.24, 22.624,0c 6.24-6.24, 6.24-16.384,0-22.624L 230.688,208
+		L 323.2,115.488z"  />
+<glyph unicode="&#xe046;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 347.2,196.64l-103.776-103.776
+		c-6.24-6.24-16.384-6.24-22.624,0c-6.24,6.24-6.24,16.384,0,22.624L 313.312,208L 220.8,300.512c-6.24,6.24-6.24,16.384,0,22.624
+		c 6.24,6.24, 16.384,6.24, 22.624,0l 103.776-103.776c 3.136-3.136, 4.704-7.264, 4.672-11.36C 351.872,203.872, 350.336,199.776, 347.2,196.64z"  />
+<glyph unicode="&#xe047;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 391.232,99.072
+		c-6.272-6.272-16.48-6.272-22.752,0l-95.872,84.8l-95.872-84.8c-6.272-6.272-16.48-6.272-22.752,0c-6.272,6.272-6.272,16.48,0,22.752
+		l 107.040,94.688c 3.2,3.2, 7.392,4.736, 11.584,4.672C 276.8,221.28, 280.992,219.744, 284.192,216.544l 107.040-94.688
+		C 397.536,115.552, 397.536,105.376, 391.232,99.072z M 391.232,213.824c-6.272-6.272-16.48-6.272-22.752,0L 272.576,298.656L 176.704,213.824
+		c-6.272-6.272-16.48-6.272-22.752,0c-6.272,6.272-6.272,16.48,0,22.752l 107.040,94.688c 3.2,3.2, 7.392,4.736, 11.584,4.672
+		C 276.8,336.032, 280.992,334.496, 284.192,331.296l 107.040-94.688C 397.536,230.304, 397.536,220.128, 391.232,213.824z"  />
+<glyph unicode="&#xe048;" d="M 273.056,445.856c-131.968,0-238.944-106.976-238.944-238.944S 141.12-32, 273.056-32S 512,74.976, 512,206.944
+		S 405.024,445.856, 273.056,445.856z M 390.048,179.392l-107.040-94.688c-3.2-3.2-7.392-4.736-11.584-4.672C 267.2,80, 263.008,81.504, 259.808,84.704
+		L 152.768,179.392c-6.272,6.272-6.272,16.48,0,22.752c 6.272,6.272, 16.48,6.272, 22.752,0l 95.872-84.8l 95.872,84.8
+		c 6.272,6.272, 16.48,6.272, 22.752,0S 396.352,185.696, 390.048,179.392z M 390.048,294.144L 283.008,199.456c-3.2-3.2-7.392-4.736-11.584-4.672
+		C 267.2,194.752, 263.008,196.256, 259.808,199.456L 152.768,294.144c-6.272,6.272-6.272,16.48,0,22.752C 159.040,323.2, 169.248,323.2, 175.52,316.928l 95.872-84.8
+		l 95.872,84.8c 6.272,6.272, 16.48,6.272, 22.752,0S 396.352,300.448, 390.048,294.144z"  />
+<glyph unicode="&#xe049;" d="M 273.152,445.728c-131.904,0-238.848-106.944-238.848-238.848C 34.272,74.944, 141.216-32, 273.152-32
+		C 405.056-32, 512,74.944, 512,206.848C 512,338.784, 405.056,445.728, 273.152,445.728z M 266.176,89.952c-6.272-6.272-16.48-6.272-22.752,0L 148.704,196.992
+		c-3.2,3.2-4.736,7.424-4.672,11.616C 144,212.8, 145.504,216.992, 148.704,220.192l 94.688,107.040c 6.272,6.272, 16.48,6.272, 22.752,0
+		s 6.272-16.48,0-22.752l-84.8-95.872l 84.8-95.872C 272.448,106.432, 272.448,96.224, 266.176,89.952z M 380.928,112.704
+		c 6.272-6.272, 6.272-16.48,0-22.752s-16.48-6.272-22.752,0L 263.456,196.992c-3.2,3.2-4.736,7.424-4.672,11.616
+		C 258.752,212.8, 260.256,216.992, 263.456,220.192l 94.688,107.040c 6.272,6.272, 16.48,6.272, 22.752,0s 6.272-16.48,0-22.752l-84.8-95.872L 380.928,112.704z
+		"  />
+<glyph unicode="&#xe04a;" d="M 273.152,445.696c-131.904,0-238.848-106.944-238.848-238.848S 141.248-32, 273.152-32S 512,74.944, 512,206.848
+		S 405.056,445.696, 273.152,445.696z M 163.072,88.768c-6.272,6.272-6.272,16.48,0,22.752l 84.8,95.872l-84.8,95.872
+		C 156.8,309.568, 156.8,319.776, 163.072,326.048s 16.48,6.272, 22.752,0l 94.688-107.040c 3.2-3.2, 4.736-7.392, 4.672-11.584
+		C 285.28,203.2, 283.744,199.008, 280.544,195.808l-94.688-107.040C 179.552,82.464, 169.376,82.464, 163.072,88.768z M 395.296,195.808l-94.688-107.040
+		c-6.272-6.272-16.48-6.272-22.752,0s-6.272,16.48,0,22.752l 84.8,95.872l-84.8,95.872c-6.272,6.272-6.272,16.48,0,22.752
+		s 16.48,6.272, 22.752,0l 94.688-107.040c 3.2-3.2, 4.736-7.392, 4.672-11.584C 400,203.2, 398.496,199.008, 395.296,195.808z"  />
+<glyph unicode="&#xe04b;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 379.584,165.568
+		l-0.064,0.064C 376.992,162.208, 373.44,160, 369.44,160l-195.52,0 c-3.936,0-7.456,2.080-9.984,5.408C 163.904,165.472, 163.84,165.504, 163.776,165.568
+		c-5.44,6.944-5.44,18.208,0,25.152l 97.76,123.424c 0.128,0.192, 0.192,0.448, 0.352,0.64c 5.44,6.944, 14.304,6.944, 19.744,0l 97.984-124.064
+		C 385.056,183.776, 385.056,172.512, 379.584,165.568z"  />
+<glyph unicode="&#xe04c;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 379.584,225.28l-97.76-123.424
+		c-0.128-0.192-0.192-0.448-0.352-0.64c-5.44-6.944-14.304-6.944-19.744,0L 163.776,225.28c-5.44,6.944-5.44,18.208,0,25.152L 163.84,250.368
+		C 166.368,253.792, 169.92,256, 173.92,256l 195.52,0 c 3.936,0, 7.456-2.080, 9.984-5.408c 0.064-0.064, 0.128-0.064, 0.16-0.128
+		C 385.056,243.488, 385.056,232.224, 379.584,225.28z"  />
+<glyph unicode="&#xe04d;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 320,110.56
+		c0-3.936-2.080-7.456-5.408-9.984c-0.064-0.064-0.064-0.128-0.128-0.16c-6.944-5.44-18.208-5.44-25.152,0L 165.856,198.144
+		c-0.192,0.16-0.448,0.192-0.64,0.352c-6.944,5.44-6.944,14.304,0,19.744L 289.28,316.224c 6.944,5.44, 18.208,5.44, 25.152,0L 314.368,316.16
+		C 317.792,313.632, 320,310.080, 320,306.080L 320,110.56 z"  />
+<glyph unicode="&#xe04e;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 378.784,198.4L 254.72,100.416
+		c-6.944-5.44-18.208-5.44-25.152,0l 0.064,0.064C 226.208,103.008, 224,106.56, 224,110.56l0,195.52 c0,3.936, 2.080,7.456, 5.408,9.984
+		C 229.472,316.096, 229.504,316.16, 229.568,316.224c 6.944,5.44, 18.208,5.44, 25.152,0l 123.424-97.76c 0.192-0.16, 0.448-0.192, 0.64-0.352
+		C 385.728,212.672, 385.728,203.84, 378.784,198.4z"  />
+<glyph unicode="&#xe04f;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 400,192l-256,0 
+		C 135.168,192, 128,199.168, 128,208C 128,216.832, 135.168,224, 144,224l 256,0 C 408.832,224, 416,216.832, 416,208C 416,199.168, 408.832,192, 400,192z"  />
+<glyph unicode="&#xe050;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 400,192L 288,192 l0-112 
+		C 288,71.168, 280.832,64, 272,64S 256,71.168, 256,80L 256,192 L 144,192 C 135.168,192, 128,199.168, 128,208C 128,216.832, 135.168,224, 144,224L 256,224 L 256,336 C 256,344.832, 263.168,352, 272,352
+		S 288,344.832, 288,336L 288,224 l 112,0 C 408.832,224, 416,216.832, 416,208C 416,199.168, 408.832,192, 400,192z"  />
+<glyph unicode="&#xe051;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 383.2,296.576L 294.016,207.392
+		l 78.912-87.968c 6.24-6.24, 6.24-16.384,0-22.624s-16.384-6.24-22.624,0L 271.392,184.768l-87.968-87.968c-6.24-6.24-16.384-6.24-22.624,0
+		c-6.24,6.24-6.24,16.384,0,22.624l 89.184,89.184L 171.072,296.576c-6.24,6.24-6.24,16.384,0,22.624c 6.24,6.24, 16.384,6.24, 22.624,0
+		l 78.912-87.968l 87.968,87.968c 6.24,6.24, 16.384,6.24, 22.624,0C 389.44,312.96, 389.44,302.816, 383.2,296.576z"  />
+<glyph unicode="&#xe052;" d="M 257.344,480c-141.376,0-256-114.624-256-256s 114.624-256, 256-256s 256,114.624, 256,256S 398.72,480, 257.344,480z M 375.936,294.816l-122.624-187.424
+		c-0.032-0.032-0.096-0.064-0.096-0.096c-0.64-0.96-0.992-2.048-1.792-2.944c-1.12-1.216-2.56-1.856-3.84-2.784
+		c-0.32-0.224-0.64-0.48-0.992-0.704c-1.984-1.248-4.032-2.080-6.272-2.624c-0.736-0.192-1.408-0.384-2.176-0.512
+		c-1.824-0.256-3.552-0.256-5.376-0.064c-1.28,0.096-2.496,0.256-3.744,0.576c-1.28,0.352-2.464,0.896-3.68,1.472
+		c-1.024,0.48-2.112,0.608-3.072,1.216c-0.704,0.448-1.088,1.152-1.696,1.696c-0.256,0.224-0.576,0.288-0.832,0.512L 148.352,169.152
+		C 139.264,177.568, 138.72,191.744, 147.104,200.8s 22.56,9.632, 31.648,1.248l 51.68-47.808l 108,165.088c 6.784,10.336, 20.64,13.248, 31.008,6.496
+		C 379.808,319.040, 382.72,305.152, 375.936,294.816z"  />
+<glyph unicode="&#xe053;" d="M 304,480C 189.12,480, 96,386.88, 96,272c0-49.44, 17.312-94.752, 46.112-130.464l-135.584-135.584
+		c-8.672-8.672-8.672-22.752,0-31.424c 8.672-8.672, 22.752-8.672, 31.424,0l 135.584,135.584C 209.248,81.312, 254.56,64, 304,64
+		c 114.88,0, 208,93.12, 208,208S 418.88,480, 304,480z M 400,256l-192,0 C 199.168,256, 192,263.168, 192,272C 192,280.832, 199.168,288, 208,288l 192,0 C 408.832,288, 416,280.832, 416,272
+		C 416,263.168, 408.832,256, 400,256z"  />
+<glyph unicode="&#xe054;" d="M 304,480C 189.12,480, 96,386.88, 96,272c0-49.44, 17.312-94.752, 46.112-130.464l-135.584-135.584
+		c-8.672-8.672-8.672-22.752,0-31.424c 8.672-8.672, 22.752-8.672, 31.424,0l 135.584,135.584C 209.248,81.312, 254.56,64, 304,64
+		c 114.88,0, 208,93.12, 208,208S 418.88,480, 304,480z M 400,256L 320,256 l0-80 C 320,167.168, 312.832,160, 304,160C 295.168,160, 288,167.168, 288,176L 288,256 L 208,256 
+		C 199.168,256, 192,263.168, 192,272C 192,280.832, 199.168,288, 208,288L 288,288 L 288,368 C 288,376.832, 295.168,384, 304,384C 312.832,384, 320,376.832, 320,368L 320,288 l 80,0 
+		C 408.832,288, 416,280.832, 416,272C 416,263.168, 408.832,256, 400,256z"  />
+<glyph unicode="&#xe055;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 352,160c0-17.664-14.336-32-32-32L 192,128 
+		c-17.664,0-32,14.336-32,32L 160,288 c0,17.664, 14.336,32, 32,32l 128,0 c 17.664,0, 32-14.336, 32-32L 352,160 z"  />
+<glyph unicode="&#xe056;" d="M 480,448L 64,448 C 46.336,448, 32,433.664, 32,416l0-416 c0-17.664, 14.336-32, 32-32l 416,0 c 17.664,0, 32,14.336, 32,32L 512,416 C 512,433.664, 497.664,448, 480,448z
+		 M 400,96l-256,0 C 135.168,96, 128,103.168, 128,112C 128,120.832, 135.168,128, 144,128l 256,0 c 8.832,0, 16-7.168, 16-16C 416,103.168, 408.832,96, 400,96z
+		 M 400,192l-256,0 C 135.168,192, 128,199.168, 128,208C 128,216.832, 135.168,224, 144,224l 256,0 C 408.832,224, 416,216.832, 416,208C 416,199.168, 408.832,192, 400,192z M 400,288l-256,0 
+		C 135.168,288, 128,295.168, 128,304C 128,312.832, 135.168,320, 144,320l 256,0 C 408.832,320, 416,312.832, 416,304C 416,295.168, 408.832,288, 400,288z"  />
+<glyph unicode="&#xe057;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 400,96l-256,0 
+		C 135.168,96, 128,103.168, 128,112C 128,120.832, 135.168,128, 144,128l 256,0 c 8.832,0, 16-7.168, 16-16C 416,103.168, 408.832,96, 400,96z M 400,192l-256,0 
+		C 135.168,192, 128,199.168, 128,208C 128,216.832, 135.168,224, 144,224l 256,0 C 408.832,224, 416,216.832, 416,208C 416,199.168, 408.832,192, 400,192z M 400,288l-256,0 
+		C 135.168,288, 128,295.168, 128,304C 128,312.832, 135.168,320, 144,320l 256,0 C 408.832,320, 416,312.832, 416,304C 416,295.168, 408.832,288, 400,288z"  />
+<glyph unicode="&#xe058;" d="M 64-32l 385.344,0 c 17.664,0, 32,14.336, 32,32L 481.344,448 c0,17.664-14.336,32-32,32L 64,480 C 46.336,480, 32,465.664, 32,448l0-448 C 32-17.664, 46.336-32, 64-32z
+		 M 240,384l 129.344,0 c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 240,352 C 231.168,352, 224,359.168, 224,368C 224,376.832, 231.168,384, 240,384z M 144,288
+		l 225.344,0 c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 144,256 C 135.168,256, 128,263.168, 128,272C 128,280.832, 135.168,288, 144,288z M 144,192l 225.344,0 
+		c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 144,160 C 135.168,160, 128,167.168, 128,176C 128,184.832, 135.168,192, 144,192z M 144,96l 225.344,0 
+		c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 144,64 C 135.168,64, 128,71.168, 128,80C 128,88.832, 135.168,96, 144,96z"  />
+<glyph unicode="&#xe059;" d="M 64,32l 32,0 l0-32 c0-17.664, 14.336-32, 32-32l 320,0 c 17.664,0, 32,14.336, 32,32L 480,384 c0,17.664-14.336,32-32,32l-32,0 L 416,448 c0,17.664-14.336,32-32,32L 64,480 
+		C 46.336,480, 32,465.664, 32,448l0-384 C 32,46.336, 46.336,32, 64,32z M 448,384l0-384 L 128,0 l0,32 l 256,0 c 17.664,0, 32,14.336, 32,32L 416,384 L 448,384 z M 336,416C 344.832,416, 352,408.832, 352,400
+		C 352,391.168, 344.832,384, 336,384L 206.656,384 c-8.832,0-16,7.168-16,16c0,8.832, 7.168,16, 16,16L 336,416 z M 110.656,320L 336,320 
+		C 344.832,320, 352,312.832, 352,304C 352,295.168, 344.832,288, 336,288L 110.656,288 c-8.832,0-16,7.168-16,16C 94.656,312.832, 101.824,320, 110.656,320z M 110.656,224L 336,224 
+		C 344.832,224, 352,216.832, 352,208C 352,199.168, 344.832,192, 336,192L 110.656,192 c-8.832,0-16,7.168-16,16C 94.656,216.832, 101.824,224, 110.656,224z M 110.656,128
+		L 336,128 c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 110.656,96 c-8.832,0-16,7.168-16,16C 94.656,120.832, 101.824,128, 110.656,128z"  />
+<glyph unicode="&#xe05a;" d="M 480,480L 32,480 C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,448 C 512,465.664, 497.664,480, 480,480z
+		 M 89.184,333.248c-15.904,15.904-15.904,41.664,0,57.568c 15.904,15.904, 41.664,15.904, 57.568,0L 189.12,348.448L 131.552,290.88L 89.184,333.248z
+		 M 329.92,92.512l-164.48,164.48L 223.008,314.56l 164.48-164.48L 416,64L 329.92,92.512z"  />
+<glyph unicode="&#xe05b;" d="M 480,384l-160,0 C 302.336,384, 288,369.664, 288,352c0,0-4.16-29.344-32-32L 32,320 C 14.336,320,0,306.176,0,288.512L0,0 c0-17.664, 14.336-32, 32-32l 448,0 
+		c 17.664,0, 32,14.336, 32,32L 512,256 L 512,288.512 L 512,352 C 512,369.664, 497.664,384, 480,384z"  />
+<glyph unicode="&#xe05c;" d="M 480,416l-160,0 C 302.336,416, 288,401.664, 288,384c0,0-4.16-29.344-32-32L 32,352 C 14.336,352,0,338.176,0,320.512L0,288 l 512,0 L 512,320.512 L 512,384 
+		C 512,401.664, 497.664,416, 480,416zM0,0c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,256 L0,256 L0,0 z"  />
+<glyph unicode="&#xe05d;" d="M 480,384l-128,0 c-17.664,0-32-14.336-32-32c0,0-4.16-29.344-32-32L 64,320 C 46.336,320, 32,305.664, 32,288l0-288 c0-17.664, 14.336-32, 32-32l 416,0 
+		c 17.664,0, 32,14.336, 32,32L 512,352 C 512,369.664, 497.664,384, 480,384z M 368,128L 288,128 l0-80 C 288,39.168, 280.832,32, 272,32S 256,39.168, 256,48L 256,128 L 176,128 
+		C 167.168,128, 160,135.168, 160,144C 160,152.832, 167.168,160, 176,160L 256,160 L 256,240 C 256,248.832, 263.168,256, 272,256S 288,248.832, 288,240L 288,160 l 80,0 c 8.832,0, 16-7.168, 16-16
+		C 384,135.168, 376.832,128, 368,128z"  />
+<glyph unicode="&#xe05e;" d="M 480,416l-160,0 C 302.336,416, 288,401.664, 288,384c0,0-4.16-29.344-32-32L 32,352 C 14.336,352,0,338.176,0,320.512L0,32 c0-17.664, 14.336-32, 32-32l 192.096,0 
+		l0,160 L 156.192,160 l 99.904,128l 99.904-128L 288.096,160 l0-160 L 480,0 c 17.664,0, 32,14.336, 32,32L 512,288 L 512,320.512 L 512,384 C 512,401.664, 497.664,416, 480,416z"  />
+<glyph unicode="&#xe05f;" d="M 480,416l-160,0 C 302.336,416, 288,401.664, 288,384c0,0-4.16-29.344-32-32L 32,352 C 14.336,352,0,338.176,0,320.512L0,32 c0-17.664, 14.336-32, 32-32l 448,0 
+		c 17.664,0, 32,14.336, 32,32L 512,288 L 512,320.512 L 512,384 C 512,401.664, 497.664,416, 480,416z M 256.096,0.192l-99.904,128l 67.904,0 l0,128 c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32l0-128 l 67.904,0 
+		L 256.096,0.192z"  />
+<glyph unicode="&#xe060;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 224,256c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32l0-160 
+		c0-17.664-14.336-32-32-32s-32,14.336-32,32L 224,256 z M 256,319.488c-17.664,0-32,14.336-32,32c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32C 288,333.824, 273.664,319.488, 256,319.488
+		z"  />
+<glyph unicode="&#xe061;" d="M 256-32c 141.376,0, 256,114.624, 256,256s-114.624,256-256,256S0,365.376,0,224S 114.624-32, 256-32z M 288,192c0-17.664-14.336-32-32-32S 224,174.336, 224,192
+		L 224,352 c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32L 288,192 z M 256,128.512c 17.664,0, 32-14.336, 32-32c0-17.664-14.336-32-32-32s-32,14.336-32,32
+		C 224,114.176, 238.336,128.512, 256,128.512z"  />
+<glyph unicode="&#xe062;" d="M 371.424,470.624C 365.408,476.64, 357.28,480, 348.768,480L 163.232,480 c-8.48,0-16.64-3.36-22.624-9.376l-131.2-131.232
+		C 3.36,333.408,0,325.28,0,316.768l0-185.568 c0-8.48, 3.36-16.64, 9.376-22.624l 131.2-131.232C 146.592-28.64, 154.72-32, 163.232-32l 185.568,0 
+		c 8.48,0, 16.64,3.36, 22.624,9.376l 131.2,131.232C 508.64,114.592, 512,122.72, 512,131.232L 512,316.768 c0,8.48-3.36,16.64-9.376,22.624L 371.424,470.624z
+		 M 256,160c-17.664,0-32,14.336-32,32L 224,384 c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32l0-192 C 288,174.336, 273.664,160, 256,160z M 288,64c0-17.664-14.336-32-32-32s-32,14.336-32,32
+		c0,17.664, 14.336,32, 32,32S 288,81.664, 288,64z"  />
+<glyph unicode="&#xe063;" d="M 32.992-32l 444.992,0 c 11.232,0, 21.664,5.888, 27.456,15.552c 5.792,9.632, 6.080,21.6, 0.8,31.52l-222.016,416
+		C 278.688,441.472, 267.84,448, 256.032,448L 256,448 C 244.192,448, 233.376,441.504, 227.808,431.104l-223.008-416c-5.312-9.92-5.024-21.888, 0.736-31.552
+		C 11.328-26.080, 21.76-32, 32.992-32z M 256,96c 17.664,0, 32-14.336, 32-32c0-17.664-14.336-32-32-32s-32,14.336-32,32C 224,81.664, 238.336,96, 256,96z M 224,159.488
+		l0,128 c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32l0-128 c0-17.664-14.336-32-32-32S 224,141.824, 224,159.488z"  />
+<glyph unicode="&#xe064;" d="M 256-32c 141.376,0, 256,114.624, 256,256s-114.624,256-256,256S0,365.376,0,224S 114.624-32, 256-32z M 256,416c 63.712,0, 128-36.48, 128-118.016
+		c0-47.456-23.52-84.512-69.888-110.016C 300.672,180.576, 288,165.952, 288,160c0-17.664-14.336-32-32-32s-32,14.336-32,32c0,40.608, 37.248,71.936, 59.264,84.032
+		C 315.616,261.888, 320,281.344, 320,297.984C 320,344.992, 279.904,352, 256,352C 225.184,352, 192,331.776, 192,287.328c0-17.664-14.336-32-32-32s-32,14.336-32,32
+		C 128,370.912, 193.952,416, 256,416z M 256,30.592c-18.208,0-32.96,14.752-32.96,32.96s 14.752,32.96, 32.96,32.96s 32.96-14.752, 32.96-32.96S 274.208,30.592, 256,30.592z
+		"  />
+<glyph unicode="&#xe065;" d="M 81.248,88.288C 71.872,64.064, 55.968,32.384, 28.992,0c 51.168,0, 116.992,6.72, 167.712,37.824
+		C 215.776,34.144, 235.552,32, 256,32c 141.376,0, 256,93.12, 256,208S 397.376,448, 256,448S0,354.88,0,240C0,180.096, 31.36,126.24, 81.248,88.288z"  />
+<glyph unicode="&#xe066;" d="M 446.56,291.36c 2.816-12.672, 4.448-25.696, 4.448-39.072c0-103.296-87.68-189.408-203.136-207.904
+		c 24.416-9.856, 51.776-15.616, 80.928-15.616c 27.488,0, 53.44,5.056, 76.864,13.856c 29.664-10.112, 62.048-12.736, 88.832-12.736
+		c-13.92,16.704-23.584,33.088-30.496,47.488C 493.696,103.872, 512,138.976, 512,177.632C 512,223.328, 486.496,264.064, 446.56,291.36zM 403.008,252.288C 403.008,342.688, 312.8,416, 201.504,416S0,342.688,0,252.288c0-47.168, 24.672-89.536, 63.968-119.424
+		c-7.392-19.072-19.904-44-41.12-69.504c 40.256,0, 92.096,5.28, 132,29.792c 15.008-2.912, 30.592-4.608, 46.656-4.608
+		C 312.8,88.576, 403.008,161.856, 403.008,252.288z"  />
+<glyph unicode="&#xe067;" d="M 32,91.936l 73.44,0 c 5.792-5.76, 139.232-118.080, 139.232-118.080c 8.032-4.864, 14.848-6.272, 20.672-5.728
+		c 11.84,1.12, 20.16,11.040, 22.688,21.504C 288.16-9.344, 288.16,457.344, 288,458.368C 285.504,468.864, 277.152,478.784, 265.344,479.904
+		C 259.52,480.448, 252.704,479.040, 244.672,474.176c0,0-133.44-116.416-139.232-122.176L 32,352 C 14.336,352,0,337.664,0,320l0-4.064 L0,128 l0-4.064 
+		C0,106.24, 14.336,91.936, 32,91.936zM 506.272,306.848c-7.616,7.616-20,7.616-27.616,0l-55.232-55.232l-55.232,55.232
+		c-7.616,7.616-20,7.616-27.616,0c-7.616-7.616-7.616-20,0-27.616L 395.808,224l-55.232-55.232c-7.616-7.616-7.616-20,0-27.616
+		c 7.616-7.616, 20-7.616, 27.616,0l 55.232,55.232l 55.232-55.232c 7.616-7.616, 20-7.616, 27.616,0c 7.616,7.616, 7.616,20,0,27.616
+		L 451.040,224l 55.232,55.232C 513.92,286.848, 513.92,299.232, 506.272,306.848z"  />
+<glyph unicode="&#xe068;" d="M 329.344,479.904C 323.52,480.448, 316.704,479.040, 308.672,474.176c0,0-133.44-116.416-139.232-122.176L 96,352 C 78.336,352, 64,337.664, 64,320l0-4.064 
+		L 64,128 l0-4.064 c0-17.664, 14.336-32, 32-32l 73.44,0 c 5.792-5.76, 139.232-118.080, 139.232-118.080c 8.032-4.864, 14.848-6.272, 20.672-5.728
+		c 11.84,1.12, 20.16,11.040, 22.688,21.504c 0.16,1.024, 0.16,467.744,0,468.736C 349.504,468.864, 341.152,478.784, 329.344,479.904zM 401.312,168.096c-7.904-4-11.072-13.6-7.104-21.504c 2.816-5.568, 8.448-8.8, 14.272-8.8
+		c 2.432,0, 4.864,0.544, 7.2,1.696C 448.032,155.808, 468.128,188.16, 468.128,224s-20.096,68.192-52.448,84.512
+		c-7.904,4-17.504,0.8-21.472-7.104c-3.968-7.904-0.8-17.504, 7.104-21.504C 422.784,269.088, 436.128,247.68, 436.128,224
+		S 422.784,178.912, 401.312,168.096z"  />
+<glyph unicode="&#xe069;" d="M 32,91.936l 73.44,0 c 5.792-5.76, 139.232-118.080, 139.232-118.080c 8.032-4.864, 14.848-6.272, 20.672-5.728
+		c 11.84,1.12, 20.16,11.040, 22.688,21.504C 288.16-9.344, 288.16,457.344, 288,458.368C 285.504,468.864, 277.152,478.784, 265.344,479.904
+		C 259.52,480.448, 252.704,479.040, 244.672,474.176c0,0-133.44-116.416-139.232-122.176L 32,352 C 14.336,352,0,337.664,0,320l0-4.064 L0,128 l0-4.064 
+		C0,106.24, 14.336,91.936, 32,91.936zM 337.312,168.096c-7.904-4-11.072-13.6-7.104-21.504c 2.816-5.568, 8.448-8.8, 14.272-8.8
+		c 2.432,0, 4.864,0.544, 7.2,1.696C 384.032,155.808, 404.128,188.16, 404.128,224s-20.096,68.192-52.448,84.512
+		c-7.904,4-17.472,0.8-21.472-7.104c-3.968-7.904-0.8-17.504, 7.104-21.504C 358.784,269.088, 372.128,247.68, 372.128,224
+		S 358.784,178.912, 337.312,168.096zM 315.296,40.352c 1.504-7.648, 8.192-12.928, 15.68-12.928c 1.024,0, 2.048,0.096, 3.104,0.288
+		C 427.904,46.016, 496,128.576, 496,224s-68.096,177.984-161.952,196.288C 325.504,422.016, 316.96,416.32, 315.296,407.648
+		C 313.6,398.976, 319.264,390.56, 327.936,388.864C 406.784,373.504, 464,304.16, 464,224s-57.216-149.504-136.064-164.864
+		C 319.264,57.44, 313.6,49.024, 315.296,40.352z"  />
+<glyph unicode="&#xe06a;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 384.416,228.672
+		c-1.984-32.832-16.8-81.984-76.096-129.824c-2.848-2.272-6.176-3.392-9.504-3.392c-4.64,0-9.216,2.144-12.256,6.24
+		c-5.248,7.040-4.032,17.152, 2.752,22.592c 48.288,38.944, 61.504,77.088, 63.84,103.264c-6.816-3.968-14.528-6.4-22.88-6.4
+		c-26.048,0-47.136,21.92-47.136,48.96c0,27.040, 21.088,48.96, 47.136,48.96c 5.888,0, 11.296-1.536, 16.448-3.616L 346.528,315.84
+		c0,0, 2.272-0.832, 5.44-2.592c 0.16-0.096, 0.32-0.128, 0.48-0.192c 0.096-0.064, 0.16-0.128, 0.256-0.192
+		c 2.176-1.248, 4.672-2.912, 7.456-5.28c 1.184-1.024, 2.176-2.208, 3.264-3.328C 375.040,292.704, 387.776,270.656, 384.416,228.672z M 175.104,221.152
+		c-26.048,0-47.136,21.92-47.136,48.96c0,27.040, 21.12,48.96, 47.136,48.96c 5.888,0, 11.296-1.536, 16.448-3.616L 191.392,315.84
+		c0,0, 2.272-0.832, 5.44-2.592c 0.16-0.096, 0.32-0.128, 0.48-0.192c 0.096-0.064, 0.16-0.128, 0.256-0.192
+		C 199.744,311.616, 202.24,309.952, 205.024,307.584c 1.184-1.024, 2.176-2.208, 3.264-3.328c 11.616-11.552, 24.384-33.6, 20.992-75.616
+		c-1.984-32.832-16.8-81.984-76.096-129.824c-2.848-2.272-6.176-3.392-9.504-3.392c-4.64,0-9.216,2.144-12.256,6.24
+		c-5.248,7.040-4.032,17.152, 2.752,22.592c 48.288,38.944, 61.504,77.088, 63.84,103.264C 191.168,223.616, 183.456,221.152, 175.104,221.152z"  />
+<glyph unicode="&#xe06b;" d="M 104.128,375.872c-93.312-93.312-93.312-244.608,0-337.888s 244.608-93.312, 337.888,0c 93.312,93.312, 93.312,244.608,0,337.888
+		C 348.704,469.184, 197.408,469.184, 104.128,375.872z M 400,192L 272.64,192 C 272.416,192, 272.224,191.872, 272,191.872c-8.832,0-16,7.168-16,16L 256,368 
+		C 256,376.832, 263.168,384, 272,384S 288,376.832, 288,368L 288,224 l 112,0 C 408.832,224, 416,216.832, 416,208C 416,199.168, 408.832,192, 400,192z"  />
+<glyph unicode="&#xe06c;" d="M 256,480C 166.272,480, 93.536,407.264, 93.536,317.536L 93.536,288 L 64,288 C 46.336,288, 32,273.664, 32,256l0-256 c0-17.664, 14.336-32, 32-32l 384,0 
+		c 17.664,0, 32,14.336, 32,32L 480,256 c0,17.664-14.336,32-32,32l-29.536,0 L 418.464,317.536 C 418.464,407.264, 345.728,480, 256,480z M 157.536,317.536C 157.536,371.84, 201.696,416, 256,416
+		s 98.464-44.16, 98.464-98.464L 354.464,288 L 157.536,288 L 157.536,317.536 z M 256,64c-35.36,0-64,28.64-64,64c0,35.36, 28.64,64, 64,64s 64-28.64, 64-64C 320,92.64, 291.36,64, 256,64z"  />
+<glyph unicode="&#xe06d;" d="M 416,288L 125.536,288 L 125.536,317.536 C 125.536,371.84, 169.696,416, 224,416c 35.776,0, 66.912-19.328, 84.128-47.968
+	c 0.16,0.192, 0.448,0.288, 0.64,0.48c 5.792-8.256, 14.912-14.016, 25.76-14.016c 17.664,0, 32,14.336, 32,32c0,4.32-0.896,8.448-2.464,12.224
+	c-0.128,0.224-0.224,0.48-0.352,0.704c-1.408,3.2-3.424,6.016-5.76,8.544C 328.832,451.2, 280.064,480, 224,480C 134.272,480, 61.536,407.264, 61.536,317.536
+	L 61.536,288 L 32,288 C 14.336,288,0,273.664,0,256l0-256 c0-17.664, 14.336-32, 32-32l 384,0 c 17.664,0, 32,14.336, 32,32L 448,256 C 448,273.664, 433.664,288, 416,288z M 224,64c-35.36,0-64,28.64-64,64
+	s 28.64,64, 64,64s 64-28.64, 64-64S 259.36,64, 224,64z"  />
+<glyph unicode="&#xe06e;" d="M 496,480l-64,0 c-3.872,0-7.616-1.408-10.56-3.968L 200.576,282.4C 189.152,284.8, 171.488,288, 160,288c-88.224,0-160-71.776-160-160
+		s 71.776-160, 160-160s 160,71.776, 160,160c0,26.208-4.992,43.776-10.656,58.368l 54.464,18.496c 6.624,2.24, 11.008,8.544, 10.848,15.52l-1.344,60.736
+		l 61.12,4.256c 8.192,0.576, 14.624,7.264, 14.88,15.456l 2.272,72.928l 47.872,10.624C 506.784,385.984, 512,392.512, 512,400l0,64 
+		C 512,472.832, 504.832,480, 496,480z M 112,128c 19.2,0, 35.776-11.296, 43.456-27.584C 158.368,94.208, 160,87.296, 160,80C 160,53.504, 138.496,32, 112,32
+		S 64,53.504, 64,80S 85.504,128, 112,128z"  />
+<glyph unicode="&#xe06f;" d="M 416,224c-1.12,0-2.176-0.288-3.264-0.32C 414.88,234.112, 416,244.928, 416,256c0,88.352-71.648,160-160,160S 96,344.352, 96,256
+		c0-0.544, 0.16-1.056, 0.16-1.6C 41.888,246.656,0,200.416,0,144c0-56.384, 41.792-102.56, 96-110.4L 96,32 l 320,0 c 53.024,0, 96,42.976, 96,96S 469.024,224, 416,224z
+		"  />
+<glyph unicode="&#xe070;" d="M 416,224c-1.12,0-2.176-0.288-3.264-0.32C 414.88,234.112, 416,244.928, 416,256c0,88.352-71.648,160-160,160S 96,344.352, 96,256
+	c0-0.544, 0.16-1.056, 0.16-1.6C 41.888,246.656,0,200.416,0,144C0,82.144, 50.144,32, 112,32l 80.256,0 C 209.792,32, 224,46.208, 224,63.744L 224,160 L 156.096,160 
+	L 256,288l 99.904-128L 288,160 l0-96.256 C 288,46.208, 302.208,32, 319.744,32L 416,32 c 53.024,0, 96,42.976, 96,96S 469.024,224, 416,224z"  />
+<glyph unicode="&#xe071;" d="M 416,224c-1.12,0-2.176-0.288-3.264-0.32C 414.88,234.112, 416,244.928, 416,256c0,88.352-71.648,160-160,160S 96,344.352, 96,256
+		c0-0.544, 0.16-1.056, 0.16-1.6C 41.888,246.656,0,200.416,0,144c0-56.384, 41.792-102.56, 96-110.4L 96,32 l 160,0 l-99.904,128L 224,160 L 224,288 c0,17.664, 14.336,32, 32,32
+		s 32-14.336, 32-32l0-128 l 67.904,0 L 256,32l 160,0 c 53.024,0, 96,42.976, 96,96S 469.024,224, 416,224z"  />
+<glyph unicode="&#xe072;" d="M 434.816,221.504c 2.272,6.080, 4.16,12.352, 5.792,18.656c 0.288,1.088, 0.64,2.112, 0.896,3.2
+		c 1.44,5.92, 2.464,11.968, 3.328,18.048c 0.192,1.408, 0.544,2.816, 0.704,4.224C 446.4,273.024, 446.88,280.48, 446.88,288c0,105.856-86.144,192-192,192
+		s-192-86.144-192-192c0-7.52, 0.48-14.976, 1.376-22.336C 64.416,264.224, 64.736,262.848, 64.928,261.44c 0.864-6.080, 1.888-12.128, 3.328-18.048
+		c 0.256-1.088, 0.608-2.144, 0.896-3.2c 1.632-6.304, 3.52-12.576, 5.792-18.656c 0.224-0.576, 0.48-1.152, 0.672-1.728
+		c 2.528-6.56, 5.344-12.992, 8.576-19.232C 84.32,200.32, 84.448,200.096, 84.576,199.872c 3.36-6.464, 7.072-12.736, 11.168-18.816
+		c 0.128-0.192, 0.256-0.352, 0.352-0.544c 4-5.92, 8.352-11.584, 12.992-17.056c 0.384-0.448, 0.736-0.864, 1.12-1.312
+		c 4.224-4.896, 8.8-9.536, 13.536-14.016c 1.056-0.992, 2.048-1.984, 3.136-2.944c 1.408-1.248, 2.656-2.656, 4.128-3.872
+		c 0.864-0.736, 1.92-1.216, 2.88-1.824c 3.168-2.624, 6.176-5.376, 9.536-7.808c 1.344-0.96, 2.176-1.888, 3.328-2.848
+		C 168.832,110.496, 158.048,96, 182.624,96c 3.424,0, 112.256,0, 144.512,0c 24.544,0, 13.792,14.496, 35.904,32.832c 1.152,0.96, 1.984,1.856, 3.328,2.848
+		c 3.36,2.432, 6.368,5.184, 9.536,7.808c 0.928,0.64, 1.984,1.088, 2.88,1.824c 1.44,1.216, 2.72,2.624, 4.128,3.872
+		c 1.056,0.96, 2.080,1.984, 3.136,2.944c 4.736,4.48, 9.28,9.12, 13.536,14.016c 0.384,0.448, 0.736,0.864, 1.12,1.312
+		c 4.64,5.472, 8.992,11.136, 12.992,17.056c 0.128,0.192, 0.256,0.352, 0.352,0.544c 4.064,6.048, 7.776,12.32, 11.136,18.784
+		c 0.128,0.224, 0.256,0.48, 0.384,0.704c 3.232,6.24, 6.048,12.672, 8.576,19.232C 434.336,220.384, 434.592,220.928, 434.816,221.504z M 368,286.496
+		c-8.832,0-16,7.168-16,16C 352,351.264, 308,384, 272,384C 263.168,384, 256,391.168, 256,400S 263.168,416, 272,416C 327.008,416, 384,375.488, 384,302.496
+		C 384,293.664, 376.832,286.496, 368,286.496zM 252.928,0L 217.76,0 L 182.624,0 l 57.696-29.504c 4.576-2.336, 9.568-3.52, 14.56-3.52c 4.928,0, 9.888,1.152, 14.432,3.424
+		L 327.84,0L 292.352,0 L 256.864,0 L 252.928,0 zM 352,48c0,8.832-7.168,16-16,16l-160,0 C 167.168,64, 160,56.832, 160,48C 160,39.168, 167.168,32, 176,32l 160,0 
+		C 344.832,32, 352,39.168, 352,48z"  />
+<glyph unicode="&#xe073;" d="M 480,352L 289.344,352 l0-96 L 512,256 L 512,320 C 512,337.664, 497.664,352, 480,352zM 32,352C 14.336,352,0,337.664,0,320l0-64 l 224,0 L 224,352 L 32,352 zM 32,224l0-224 c0-17.664, 14.336-32, 32-32l 160,0 L 224,224 L 32,224 zM 448-32c 17.664,0, 32,14.336, 32,32L 480,224 L 289.344,224 l0-256 L 448-32 zM 255.968,384.256l 0.096,0 C 256.032,384.192, 256,384.064, 256,384l 33.344,0 C 317.664,384, 357.76,384, 384,384c 44.192,0, 64,21.504, 64,48
+		S 428.192,480, 384,480c-41.376,0-73.952-18.624-96-40.224C 278.336,445.504, 267.168,448.992, 255.072,448.992c-11.584,0-22.304-3.264-31.712-8.576
+		C 201.344,461.76, 168.96,480, 128,480C 83.808,480, 64,458.496, 64,432S 83.808,384, 128,384c 26.656,0, 67.616,0, 96,0l 32,0 C 256,384.064, 255.968,384.192, 255.968,384.256z M 416,432
+		C 416,418.784, 398.592,416, 384,416L 311.328,416 C 311.072,416.448, 310.848,416.928, 310.592,417.344C 326.848,433.152, 351.488,448, 384,448C 398.592,448, 416,445.216, 416,432z M 96,432
+		C 96,445.216, 113.408,448, 128,448c 31.808,0, 55.936-14.24, 72.192-29.504C 199.68,417.696, 199.296,416.832, 198.816,416L 128,416 C 113.408,416, 96,418.784, 96,432z"  />
+<glyph unicode="&#xe074;" d="M 26.496,195.904L 256,394.816l 229.504-198.912C 488.544,193.28, 492.288,192, 496,192c 4.48,0, 8.928,1.888, 12.096,5.504
+		c 5.792,6.688, 5.056,16.768-1.6,22.592l-240,208c-6.016,5.216-14.944,5.216-20.96,0L 160,353.984L 160,384 c0,17.664-14.336,32-32,32S 96,401.664, 96,384l0-85.472 
+		L 5.504,220.096c-6.656-5.792-7.392-15.904-1.6-22.592C 9.728,190.848, 19.808,190.112, 26.496,195.904zM 192,128l 128,0 l0-160 l 96,0 c 17.664,0, 32,14.336, 32,32l0,156.832 c0,9.6-4.288,18.656-11.712,24.736l-160,131.168C 270.4,317.568, 263.2,320, 256,320
+		C 248.8,320, 241.6,317.568, 235.712,312.736l-160-131.168C 68.288,175.52, 64,166.432, 64,156.832L 64,0 c0-17.664, 14.336-32, 32-32l 96,0 L 192,128 z"  />
+<glyph unicode="&#xe075;" d="M 480,320l-64,0 c0,0-18.496,0-32,32c-6.88,16.288-14.336,32-32,32L 224,384 C 206.336,384, 198.656,368.384, 192,352C 179.008,320, 160,320, 160,320L 128,320 
+		c0,17.664-14.336,32-32,32L 64,352 C 46.336,352, 32,337.664, 32,320C 14.336,320,0,305.664,0,288l0-64 l 177.76,0 C 199.936,262.112, 240.736,288, 288,288s 88.064-25.888, 110.24-64L 512,224 L 512,288 
+		C 512,305.664, 497.664,320, 480,320z M 112,256l-64,0 C 39.168,256, 32,263.168, 32,272C 32,280.832, 39.168,288, 48,288L 64,288 l 32,0 l 16,0 C 120.832,288, 128,280.832, 128,272
+		C 128,263.168, 120.832,256, 112,256zM 192,160A96,96 1260 1 1 384,160A96,96 1260 1 1 192,160zM 416,160c0-70.688-57.312-128-128-128c-70.688,0-128,57.312-128,128c0,11.104, 1.856,21.728, 4.512,32L0,192 l0-160 c0-17.664, 14.336-32, 32-32l 448,0 
+		c 17.664,0, 32,14.336, 32,32L 512,192 l-100.512,0 C 414.144,181.728, 416,171.104, 416,160z"  />
+<glyph unicode="&#xe076;" d="M 480,352L 32,352 C 14.336,352,0,337.664,0,320l0-53.728 l 256-102.4l 256,102.4L 512,320 C 512,337.664, 497.664,352, 480,352zM0,214.016L0,0 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,214.016 l-256-102.4L0,214.016z"  />
+<glyph unicode="&#xe077;" d="M 347.136,288L 286.144,458.752C 281.6,471.488, 269.536,480, 256,480S 230.4,471.488, 225.856,458.752L 164.864,288L 347.136,288 zM 427.136,64L 381.408,192L 130.592,192L 84.864,64 	zM 32,32c-17.664,0-32-14.336-32-32c0-17.664, 14.336-32, 32-32l 64,0 l 320,0 l 64,0 c 17.664,0, 32,14.336, 32,32c0,17.664-14.336,32-32,32L 32,32 z"  />
+<glyph unicode="&#xe078;" d="M 64,384l0-384 c0-12.928, 7.808-24.608, 19.744-29.568C 87.712-31.2, 91.872-32, 96-32c 8.32,0, 16.512,3.264, 22.624,9.376
+		L 256,114.752l 137.376-137.376C 399.488-28.736, 407.68-32, 416-32c 4.128,0, 8.288,0.8, 12.224,2.432C 440.192-24.608, 448-12.928, 448,0L 448,384 L 64,384 zM 448,416L 448,448 c0,17.664-14.336,32-32,32L 96,480 C 78.336,480, 64,465.664, 64,448l0-32 L 448,416 z"  />
+<glyph unicode="&#xe079;" d="M 96-32l 320,0 c 17.664,0, 32,14.336, 32,32L 448,352 c0,17.664-14.336,32-32,32l-64.16,0 C 351.072,437.152, 308.512,480, 256,480S 160.928,437.152, 160.16,384
+		L 96,384 C 78.336,384, 64,369.664, 64,352l0-352 C 64-17.664, 78.336-32, 96-32z M 304,288l-96,0 C 199.168,288, 192,295.168, 192,304C 192,312.832, 199.168,320, 208,320l 96,0 
+		C 312.832,320, 320,312.832, 320,304C 320,295.168, 312.832,288, 304,288z M 256,448c 34.784,0, 63.072-28.576, 63.84-64L 192.16,384 C 192.928,419.424, 221.216,448, 256,448z"  />
+<glyph unicode="&#xe07a;" d="M 480,352L 96,352 C 93.504,352, 91.328,351.136, 88.992,350.592L 76.576,403.648C 74.88,410.88, 68.448,416, 60.992,416L 15.072,416 
+		c-8.832,0-16-7.168-16-16S 6.208,384, 15.072,384L 48.32,384 l 19.872-84.992L 96,160c0-1.152, 0.544-2.144, 0.672-3.264l-16.288-73.28
+		c-1.056-4.736, 0.096-9.696, 3.136-13.472C 86.56,66.176, 91.136,64, 96,64l 363.008,0 c 8.832,0, 16,7.168, 16,16s-7.168,16-16,16L 115.968,96 
+		l 7.328,32.96C 124.896,128.704, 126.336,128, 128,128l 291.68,0 c 17.664,0, 28.32,3.488, 36.832,24l 51.968,159.424C 517.504,340, 497.696,352, 480,352zM 96,0A32,32 1260 1 1 160,0A32,32 1260 1 1 96,0zM 384,0A32,32 1260 1 1 448,0A32,32 1260 1 1 384,0z"  />
+<glyph unicode="&#xe07b;" d="M 464.928,447.84c-0.288,0-0.576,0-0.864,0c-0.256,0-0.48,0.032-0.736,0L 262.144,447.84 
+		C 257.248,447.616, 246.112,439.968, 244.672,438.528L 9.344,203.2c-12.48-12.48-12.48-32.704,0-45.184l 180.672-180.672C 196.288-28.896, 204.448-32, 212.608-32
+		c 8.16,0, 16.352,3.104, 22.592,9.344l 235.328,235.328C 471.968,214.112, 480,224, 480,230.144L 480,431.968 C 480.448,440.896, 473.696,447.84, 464.928,447.84z M 432,384
+		C 423.168,384, 416,391.168, 416,400C 416,408.832, 423.168,416, 432,416S 448,408.832, 448,400C 448,391.168, 440.832,384, 432,384z"  />
+<glyph unicode="&#xe07c;" d="M 464.928,480c-0.288,0-0.576,0-0.864,0c-0.256,0-0.48,0.032-0.736,0L 294.144,480 
+		C 289.248,479.744, 278.112,472.096, 276.672,470.656L 72.992,267.008c-12.48-12.48-12.48-32.704,0-45.184l 25.408-25.408L 72.992,171.008
+		c-12.48-12.48-12.48-32.704,0-45.184l 148.672-148.672c 6.24-6.24, 14.4-9.344, 22.592-9.344s 16.352,3.104, 22.592,9.344l 203.648,203.68
+		C 471.968,182.272, 480,192.128, 480,198.272l0,96 L 480,368.096 l0,96 C 480.448,473.024, 473.696,480, 464.928,480z M 432,448.128c 8.832,0, 16-7.168, 16-16
+		s-7.168-16-16-16S 416,423.296, 416,432.128S 423.168,448.128, 432,448.128z M 447.904,203.424l-203.584-203.68l-148.672,148.608l 25.408,25.408l 100.64-100.64
+		c 6.24-6.24, 14.4-9.344, 22.592-9.344s 16.352,3.104, 22.592,9.344L 448,254.272l0-50.592 C 447.904,203.52, 447.84,203.424, 447.904,203.424
+		C 447.872,203.424, 447.872,203.424, 447.904,203.424z"  />
+<glyph unicode="&#xe07d;" d="M 416,448l-64,0 c0,17.664-14.336,32-32,32L 224,480 C 206.336,480, 192,465.664, 192,448L 128,448 C 110.336,448, 96,433.664, 96,416l 352,0 C 448,433.664, 433.664,448, 416,448zM 96,0c0-17.664, 14.336-32, 32-32l 288,0 c 17.664,0, 32,14.336, 32,32L 448,384 L 96,384 L 96,0 z M 352,304C 352,312.832, 359.168,320, 368,320
+		S 384,312.832, 384,304l0-256 c0-8.832-7.168-16-16-16S 352,39.168, 352,48L 352,304 z M 256,304C 256,312.832, 263.168,320, 272,320S 288,312.832, 288,304l0-256 
+		C 288,39.168, 280.832,32, 272,32S 256,39.168, 256,48L 256,304 z M 160,304C 160,312.832, 167.168,320, 176,320S 192,312.832, 192,304l0-256 C 192,39.168, 184.832,32, 176,32
+		S 160,39.168, 160,48L 160,304 z"  />
+<glyph unicode="&#xe07e;" d="M 424.96,139.648c 3.424,5.856, 2.816,13.216-1.568,18.4L 157.248,474.304C 152.896,479.456, 145.792,481.344, 139.52,479.040
+		C 133.216,476.736, 128.992,470.72, 128.992,464l0-417.504 c0-6.912, 4.416-13.024, 10.976-15.2c 1.632-0.544, 3.328-0.8, 5.024-0.8
+		c 4.96,0, 9.76,2.304, 12.832,6.464l 71.552,96.384l 49.632-141.984c 6.368-18.176, 26.272-27.776, 44.448-21.408s 27.776,26.272, 21.408,44.448
+		l-48.704,139.296l 111.936-21.664C 414.848,130.72, 421.536,133.824, 424.96,139.648z"  />
+<glyph unicode="&#xe07f;" d="M 224,67.072L 224,0 L 176,0 C 167.168,0, 160-7.168, 160-16C 160-24.832, 167.168-32, 176-32l 79.68,0 L 256.32-32 l 79.68,0 
+		c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16L 288,0 l0,67.264 c 66.656,13.152, 128,67.104, 128,156.736L 416,272 C 416,280.832, 408.832,288, 400,288
+		S 384,280.832, 384,272L 384,224 c0-84.032-64.416-128-128-128c-61.664,0-128,40.064-128,128L 128,272 C 128,280.832, 120.832,288, 112,288S 96,280.832, 96,272L 96,224 
+		C 96,133.12, 156.256,79.808, 224,67.072zM 256,160c 35.36,0, 64,28.64, 64,64L 320,416 c0,35.36-28.64,64-64,64S 192,451.36, 192,416l0-192 C 192,188.64, 220.64,160, 256,160z"  />
+<glyph unicode="&#xe080;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 381.568,327.52l-37.184-59.584L 319.584,228.192
+		C 319.68,226.784, 320,225.44, 320,224c0-35.36-28.64-64-64-64c-1.44,0-2.784,0.32-4.192,0.416l-39.776-24.8l-59.552-37.184
+		C 149.888,96.8, 146.944,96, 144,96c-4.128,0-8.224,1.6-11.328,4.672c-5.28,5.28-6.208,13.472-2.24,19.776l 37.184,59.584l 24.8,39.744
+		C 192.32,221.216, 192,222.56, 192,224c0,35.36, 28.64,64, 64,64c 1.44,0, 2.784-0.32, 4.192-0.416l 39.776,24.8l 59.552,37.184
+		c 6.208,3.936, 14.496,3.008, 19.776-2.272C 384.608,342.048, 385.536,333.856, 381.568,327.52zM 224,224A32,32 1260 1 1 288,224A32,32 1260 1 1 224,224z"  />
+<glyph unicode="&#xe081;" d="M 244.352-23.328c 2.688-2.976, 5.28-4.896, 7.776-6.24c 0.032-0.032, 0.096-0.032, 0.128-0.064
+		c 1.728-0.896, 3.424-1.568, 5.024-1.568c 1.6,0, 3.296,0.672, 5.024,1.568c 0.032,0.032, 0.096,0.032, 0.128,0.064
+		c 2.496,1.344, 5.088,3.264, 7.776,6.24c0,0, 148.736,161.76, 163.68,301.92c 0.896,7.232, 1.504,14.56, 1.504,22.016C 435.392,399.68, 355.072,480, 256,480
+		S 76.608,399.68, 76.608,300.608c0-7.584, 0.608-14.976, 1.536-22.304C 93.472,138.208, 244.352-23.328, 244.352-23.328z M 256,416
+		c 63.616,0, 115.392-51.776, 115.392-115.392c0-63.616-51.776-115.392-115.392-115.392S 140.608,236.992, 140.608,300.608C 140.608,364.224, 192.384,416, 256,416z"  />
+<glyph unicode="&#xe082;" d="M 128,167.776c0-24.544, 61.76-37.568, 128.032-39.392C 256.032,128.256, 256,128.128, 256,128l0-96 c0-17.664, 7.168-64, 16-64
+		S 288,14.336, 288,32l0,96 c0,0.128-0.032,0.256-0.032,0.384C 354.24,130.208, 416,143.232, 416,167.776c0,26.048-23.584,45.056-64,55.296L 352,388.8 
+		c 40.416,13.696, 64,35.744, 64,51.424c0,53.024-288,53.024-288,0c0-17.248, 23.584-38.816, 64-52l0-165.152 C 151.584,212.8, 128,193.824, 128,167.776z"  />
+<glyph unicode="&#xe083;" d="M 161.344,387.136L 32,448L 32,64L 161.344,3.136 	zM 193.344,3.584L 320.672,60.96L 320.672,444.96L 193.344,387.584 	zM 352.672,60.288L 480,0L 480,384L 352.672,444.288 	z"  />
+<glyph unicode="&#xe084;" d="M 448,416c-8.992,20-25.312,32-43.008,32L 104,448 C 86.336,448, 72,436, 64,416l-64-256l0-0.512 l0-16 l0-16 l0-17.152 l0-0.512 l0-94.336 
+		c0-8.832, 7.168-16, 16-16l 480,0 c 8.832,0, 16,7.168, 16,16L 512,111.36 l0,0.512 l0,15.616 l0,16 l0,14.528 l-0.416,1.472L 448,416z M 94.24,405.344
+		C 95.712,408.64, 99.456,416, 104,416l 300.992,0 c 4.384,0, 9.44-4.512, 12.992-11.392l 56.352-229.024c0-0.064-0.096,0-0.096-0.064
+		c0-8.832-7.168-16-16-16c-0.032,0-0.032-0.032-0.064-0.032L 416,159.488 l-80,0 c-8.832,0-16-7.168-16-16L 320,112 c0-8.832-7.168-16-16-16
+		c-0.32,0-0.64-0.416-0.96-0.512L 208.544,95.488 C 208.32,95.584, 208.32,96, 208,96C 199.168,96, 192,103.168, 192,112l0,31.488 c0,8.832-7.168,16-16,16L 64,159.488 
+		L 53.824,159.488 c-0.032,0-0.032,0.032-0.064,0.032c-8.832,0-16.256,7.168-16.256,16c0,0.224-0.256,0.064-0.32,0.224L 94.24,405.344z"  />
+<glyph unicode="&#xe085;" d="M 480,320l-128,0 L 352,352 c0,17.664-14.336,32-32,32L 192,384 C 174.336,384, 160,369.664, 160,352l0-32 L 32,320 C 14.336,320,0,305.664,0,288l0-64 l 192,0 l 128,0 l 192,0 L 512,288 
+		C 512,305.664, 497.664,320, 480,320z M 192,352l 128,0 l0-32 L 192,320 L 192,352 zM 192,192L 320,192L 320,160L 192,160zM 352,160c0-17.664-14.336-32-32-32L 192,128 c-17.664,0-32,14.336-32,32L 160,192 L0,192 l0-192 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,192 l-160,0 
+		L 352,160 z"  />
+<glyph unicode="&#xe086;" d="M 80.672-32l 14.592,0 l 192.096,0 L 320-32 l 11.328,0 l 51.904,0 c 17.664,0, 32,14.336, 32,32l0,68.992 L 415.232,80 l0,256 c0,8.832-7.168,16-16,16
+		c0,0,0,0,0,0L 128,352 C 127.2,352, 125.632,351.872, 124.128,351.776L 80.672,352C 53.824,352, 32,372.512, 32,399.328C 32,426.176, 53.152,448, 80,448l 64,0 L 320,448 l 128,0 l0-368 
+		c0-8.832, 6.4-16, 15.264-16S 480,71.168, 480,80l0,384 C 480,472.832, 472.096,480, 463.264,480l-111.648,0 L 144,480 L 80.672,480 C 36.512,480, 0.768,444.512, 0.128,400.512
+		L0,400.672l0-66.656 L0,288 l0-175.328 l0-39.584 l0-24.416 C0,4.128, 36.128-32, 80.672-32z"  />
+<glyph unicode="&#xe087;" d="M 32,480C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 32,0 L 64,480 L 32,480 zM 416,480L 96,480 l0-512 l 320,0 c 17.664,0, 32,14.336, 32,32L 448,448 C 448,465.664, 433.664,480, 416,480z M 270.24,356.672
+		c 26.752,0, 48.416-21.696, 48.416-48.416c0-26.752-21.696-48.448-48.416-48.448c-26.752,0-48.448,21.696-48.448,48.448
+		C 221.792,335.008, 243.488,356.672, 270.24,356.672z M 192,134.176c0,58.688, 35.488,106.24, 79.232,106.24s 79.232-47.584, 79.232-106.24S 192,75.52, 192,134.176zM 480,448L 512,448L 512,352L 480,352zM 480,320L 512,320L 512,224L 480,224zM 480,192L 512,192L 512,96L 480,96z"  />
+<glyph unicode="&#xe088;" d="M 480,416L 32,416 C 14.336,416,0,401.664,0,384l0-64 l 512,0 L 512,384 C 512,401.664, 497.664,416, 480,416zM 32,0c0-17.664, 14.336-32, 32-32l 384,0 c 17.664,0, 32,14.336, 32,32L 480,288 L 32,288 L 32,0 z M 192,224l 128,0 c 17.664,0, 32-14.336, 32-32c0-17.664-14.336-32-32-32
+		L 192,160 c-17.664,0-32,14.336-32,32C 160,209.664, 174.336,224, 192,224z"  />
+<glyph unicode="&#xe089;" d="M 511.744,258.656C 510.4,337.184, 446.688,407.168, 368,407.168c-45.504,0-85.6-23.808-112-58.752
+		C 229.6,383.36, 189.504,407.168, 144,407.168c-78.688,0-142.4-69.984-143.744-148.512L0,258.656 c0-0.48, 0.096-0.928, 0.096-1.408
+		C 0.096,256.896,0,256.544,0,256.16c0-2.208, 0.544-3.872, 0.64-5.984C 7.68,50.048, 253.984-32, 253.984-32s 249.92,81.952, 257.312,281.856
+		C 511.424,252.096, 512,253.856, 512,256.16c0,0.384-0.096,0.736-0.096,1.088C 511.904,257.76, 512,258.176, 512,258.656L 511.744,258.656 z"  />
+<glyph unicode="&#xe08a;" d="M 352,384c0,51.392-44.608,96-96,96S 160,435.392, 160,384c0-51.392, 44.608-96, 96-96S 352,332.608, 352,384zM 256,256c-84.096,0-160-90.72-160-203.456s 320-112.736, 320,0S 340.096,256, 256,256z"  />
+<glyph unicode="&#xe08b;" d="M 224,400C 224,442.816, 186.816,480, 144,480S 64,442.816, 64,400C 64,357.184, 101.184,320, 144,320S 224,357.184, 224,400zM 280,96c0,128-66.432,192-140,192S0,224,0,96C0,8.32, 280,8.32, 280,96zM 376,257.76c 42.816,0, 80,37.184, 80,80s-37.184,80-80,80s-80-37.184-80-80S 333.184,257.76, 376,257.76zM 372,225.76c-22.112,0-43.296-6.496-62.496-18.080c 11.616-31.232, 18.496-68.256, 18.496-111.68
+		c0-43.104-28.736-76.672-78.048-95.872C 311.104-51.648, 512-40.608, 512,33.76C 512,161.76, 445.568,225.76, 372,225.76z"  />
+<glyph unicode="&#xe08c;" d="M 96,256l 96,0 c 17.664,0, 32,14.336, 32,32L 224,384 c0,17.664-14.336,32-32,32L 96,416 C 78.336,416, 64,401.664, 64,384l0-96 C 64,270.336, 78.336,256, 96,256zM 320,256l 96,0 c 17.664,0, 32,14.336, 32,32L 448,384 c0,17.664-14.336,32-32,32l-96,0 C 302.336,416, 288,401.664, 288,384l0-96 C 288,270.336, 302.336,256, 320,256zM 64,64c0-17.664, 14.336-32, 32-32l 96,0 c 17.664,0, 32,14.336, 32,32l0,96 c0,17.664-14.336,32-32,32L 96,192 c-17.664,0-32-14.336-32-32L 64,64 zM 288,64c0-17.664, 14.336-32, 32-32l 96,0 c 17.664,0, 32,14.336, 32,32l0,96 c0,17.664-14.336,32-32,32l-96,0 c-17.664,0-32-14.336-32-32L 288,64 z"  />
+<glyph unicode="&#xe08d;" d="M 64,320l 64,0 c 17.664,0, 32,14.336, 32,32L 160,416 c0,17.664-14.336,32-32,32L 64,448 C 46.336,448, 32,433.664, 32,416l0-64 C 32,334.336, 46.336,320, 64,320zM 224,320l 64,0 c 17.664,0, 32,14.336, 32,32L 320,416 c0,17.664-14.336,32-32,32L 224,448 C 206.336,448, 192,433.664, 192,416l0-64 C 192,334.336, 206.336,320, 224,320zM 384,320l 64,0 c 17.664,0, 32,14.336, 32,32L 480,416 c0,17.664-14.336,32-32,32l-64,0 c-17.664,0-32-14.336-32-32l0-64 C 352,334.336, 366.336,320, 384,320zM 32,192c0-17.664, 14.336-32, 32-32l 64,0 c 17.664,0, 32,14.336, 32,32L 160,256 c0,17.664-14.336,32-32,32L 64,288 C 46.336,288, 32,273.664, 32,256L 32,192 zM 192,192c0-17.664, 14.336-32, 32-32l 64,0 c 17.664,0, 32,14.336, 32,32L 320,256 c0,17.664-14.336,32-32,32L 224,288 C 206.336,288, 192,273.664, 192,256L 192,192 zM 352,192c0-17.664, 14.336-32, 32-32l 64,0 c 17.664,0, 32,14.336, 32,32L 480,256 c0,17.664-14.336,32-32,32l-64,0 c-17.664,0-32-14.336-32-32L 352,192 zM 32,32c0-17.664, 14.336-32, 32-32l 64,0 c 17.664,0, 32,14.336, 32,32l0,64 c0,17.664-14.336,32-32,32L 64,128 c-17.664,0-32-14.336-32-32L 32,32 zM 192,32c0-17.664, 14.336-32, 32-32l 64,0 c 17.664,0, 32,14.336, 32,32l0,64 c0,17.664-14.336,32-32,32L 224,128 c-17.664,0-32-14.336-32-32L 192,32 zM 352,32c0-17.664, 14.336-32, 32-32l 64,0 c 17.664,0, 32,14.336, 32,32l0,64 c0,17.664-14.336,32-32,32l-64,0 c-17.664,0-32-14.336-32-32L 352,32 z"  />
+<glyph unicode="&#xe08e;" d="M 12.768-7.296c 23.936-31.072, 73.376-33.088, 110.432-4.544c 15.072,11.616, 25.504,26.528, 31.296,42.176
+		C 157.824,36.928, 160,46.272, 160,56.96L 160,296.096 l 288,54.432l0-126.272 c0-44.544-34.080-54.784-46.144-57.056c-1.056-0.128-2.080-0.384-3.136-0.576
+		c-0.544-0.064-1.344-0.16-1.344-0.16L 397.568,166.4c-14.272-2.592-28.64-8.576-41.536-18.496c-37.056-28.544-47.712-76.864-23.776-107.936
+		c 23.936-31.072, 73.376-33.12, 110.432-4.576c 18.752,14.464, 30.688,33.984, 34.848,53.76C 478.976,93.952, 480,99.232, 480,105.216L 480,415.808 
+		c0,1.952-0.384,3.616-0.544,5.472C 479.52,422.24, 480,423.328, 480,424.288l0,32 c0,17.664-14.336,27.648-32,22.24L 160,424.096
+		C 142.336,418.72, 128,400, 128,382.336l0-32 c0-0.448, 0.224-0.768, 0.256-1.184C 128.224,348.192, 128,347.36, 128,346.4l0-169.408 c0-44.608-34.176-54.816-46.208-57.056
+		c-0.608-0.096-1.216-0.288-1.856-0.384c-1.568-0.256-2.592-0.352-2.592-0.352l 0.352-0.16c-14.144-2.656-28.384-8.576-41.152-18.4
+		C-0.512,72.096-11.136,23.776, 12.768-7.296z"  />
+<glyph unicode="&#xe08f;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 224,160c0-17.664-14.336-32-32-32s-32,14.336-32,32L 160,288 
+		c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32L 224,160 z M 352,160c0-17.664-14.336-32-32-32s-32,14.336-32,32L 288,288 c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32L 352,160 z"  />
+<glyph unicode="&#xe090;" d="M 211.456,350.976C 205.344,421.28, 132,455.776, 128.896,457.184C 125.984,458.56, 122.72,458.976, 119.584,458.432
+		c-84.672-14.048-97.408-63.328-97.92-65.376C 20.96,390.176, 21.088,387.2, 21.984,384.416c 100.992-313.344, 310.88-371.424, 379.872-390.528
+		c 5.312-1.472, 9.696-2.656, 13.024-3.744c 1.6-0.544, 3.264-0.768, 4.928-0.768c 2.272,0, 4.544,0.48, 6.624,1.44
+		c 2.112,0.96, 51.968,24.448, 64.16,101.056c 0.544,3.328,0,6.784-1.536,9.792c-1.088,2.112-27.168,51.744-99.488,69.28
+		c-5.056,1.312-10.24-0.032-14.144-3.36c-22.816-19.488-54.336-40.256-67.936-42.4c-91.168,44.576-142.080,130.112-144,146.336
+		C 162.368,280.64, 183.264,312.672, 207.296,338.72C 210.336,342.016, 211.872,346.496, 211.456,350.976z"  />
+<glyph unicode="&#xe091;" d="M 96,288L 192,288L 192,96L 320,96L 319.328,288L 416,288L 256,448 	zM 384,32L 128,32L 128,96L 64,96L 64,32L 64-32L 448-32L 448,32L 448,96L 384,96 	z"  />
+<glyph unicode="&#xe092;" d="M 256,96L 416,256L 320,256L 320,448L 192,448L 192.576,256L 96,256 	zM 64,32L 64-32L 448-32L 448,32L 448,96L 384,96L 384,32L 128,32L 128,96L 64,96 	z"  />
+<glyph unicode="&#xe093;" d="M 192.864-32l 95.936,0 l 0.064,256l 87.136,0.032l 9.344,88.224L 288.8,312.256 l 0.128,44.16c0,23.008, 1.568,35.328, 34.592,35.328l 60.992,0 
+		L 384.512,480 L 297.056,480 C 212.288,480, 192.768,436.192, 192.768,364.224l 0.096-51.968L 128.512,312.224L 128.512,224 l 64.352,0 L 192.864-32 z"  />
+<glyph unicode="&#xe094;" d="M 497.888,424.32c-20.288-12.032-42.784-20.768-66.72-25.504C 412,419.264, 384.704,432, 354.496,432
+		c-58.016,0-105.056-47.040-105.056-105.024c0-8.224, 0.928-16.256, 2.72-23.936c-87.296,4.384-164.704,46.208-216.512,109.76
+		C 26.592,397.312, 21.44,379.264, 21.44,360c0-36.448, 18.56-68.608, 46.72-87.424C 50.944,273.152, 34.752,277.888, 20.576,285.76c0-0.448,0-0.864,0-1.312
+		c0-50.88, 36.224-93.344, 84.256-103.008C 96.032,179.040, 86.752,177.76, 77.152,177.76c-6.784,0-13.344,0.672-19.776,1.888
+		c 13.376-41.728, 52.16-72.096, 98.112-72.96c-35.936-28.16-81.248-44.96-130.464-44.96c-8.48,0-16.832,0.512-25.056,1.472
+		C 46.464,33.408, 101.664,16, 160.992,16c 193.216,0, 298.88,160.064, 298.88,298.88c0,4.544-0.096,9.088-0.32,13.6
+		c 20.576,14.752, 38.4,33.248, 52.48,54.304c-18.848-8.352-39.072-14.016-60.32-16.544C 473.408,379.232, 490.048,399.84, 497.888,424.32z"  />
+<glyph unicode="&#xe095;" d="M 128.96,183.904c 24.736,43.744-7.968,53.344-13.088,85.056c-20.96,129.6, 149.504,218.112, 238.784,127.552
+		c 61.76-62.72, 21.088-255.552-78.496-235.52C 180.768,180.16, 322.88,333.664, 246.752,363.776C 184.864,388.288, 152,288.896, 181.344,239.488
+		C 164.128,154.528, 127.072,74.528, 142.080-32c 48.64,35.296, 65.056,102.912, 78.496,173.408c 24.448-14.88, 37.536-30.336, 68.704-32.736
+		c 114.976-8.928, 179.232,114.784, 163.488,228.96c-13.952,101.184-114.848,152.704-222.432,140.64c-85.056-9.536-169.856-78.304-173.376-176.64
+		C 54.816,241.6, 71.84,196.544, 128.96,183.904z"  />
+<glyph unicode="&#xe096;" d="M 137.152,14.368c 84.8,0, 131.648,48.128, 131.648,96.512c0,38.784-11.456,62.048-46.848,87.072
+		C 209.856,206.528, 186.688,227.36, 186.688,239.616c0,14.368, 4.096,21.44, 25.728,38.336C 234.56,295.264, 250.24,319.616, 250.24,347.904
+		c0,33.696-15.008,66.56-43.2,77.376l 42.464,0 l 30.016,21.664c0,0-100.48,0-133.984,0c-60.032,0-116.544-45.504-116.544-98.208
+		c0-53.856, 40.928-97.344, 102.048-97.344c 4.256,0, 8.384,0.096, 12.416,0.384C 139.488,244.192, 136.64,235.648, 136.64,226.752
+		c0-14.976, 8.064-27.104, 18.24-37.024c-7.68,0-15.136-0.224-23.232-0.224C 57.248,189.536,0,142.144,0,93.024
+		C0,44.64, 62.784,14.368, 137.152,14.368z M 150.4,265.056C 115.872,266.080, 83.072,303.68, 77.12,348.992C 71.168,394.336, 94.304,429.024, 128.8,428
+		c 34.496-1.024, 67.328-37.408, 73.28-82.72C 208.064,299.936, 184.896,264.032, 150.4,265.056z M 145.824,177.024c 12-0.128, 23.2-2.048, 33.344-5.344
+		c 27.904-19.36, 47.936-30.336, 53.568-52.48c 1.056-4.48, 1.632-9.088, 1.632-13.824c0-39.104-25.184-69.664-97.472-69.664
+		c-51.424,0-88.544,32.544-88.544,71.648C 48.352,145.696, 94.4,177.568, 145.824,177.024zM 416,352L 416,446.944L 384,446.944L 384,352L 288,352L 288,320L 384,320L 384,222.944L 416,222.944L 416,320L 512,320L 512,352 	z"  />
+<glyph unicode="&#xe097;" d="M 164.736,90.624c0-23.392, 2.464-41.28, 7.36-53.6c 4.928-12.32, 13.696-23.968, 26.432-34.912
+		c 12.672-10.88, 28.032-19.36, 46.016-25.28C 262.56-29.056, 276.32-32, 299.744-32c 20.608,0, 39.776,2.080, 57.536,6.208
+		c 17.728,4.16, 36.8,10.176, 58.656,20.448l0,76.992 c-25.632-16.864-40.96-20.288-66.88-20.288c-14.56,0-27.488,3.392-38.848,10.208
+		c-8.544,5.024-16.352,13.728-19.488,22.080c-3.168,8.416-2.784,25.536-2.784,55.264L 288,256l 127.968,0 L 415.968,352 L 288,352 L 288,480 l-82.56,0 
+		C 202.176,453.6, 196.16,431.808, 187.488,414.752c-8.672-17.12-20.192-31.744-34.56-43.968C 138.656,358.592, 116.16,349.216, 96.064,342.688L 96.064,256 l 68.704,0 L 164.768,90.624 z"  />
+<glyph unicode="&#xe098;" d="M 352,229.056L 317.984,217.056L 288,229.056L 288,167.040 C 288,107.072, 331.072,64, 384,64s 96,43.072, 96,96L 480,224 l-64,0 l0-64 c0-17.632-14.368-32-32-32
+		c-17.632,0-32,14.368-32,39.008L 352,229.056 zM 128,64c 52.928,0, 96,43.072, 96,96L 224,288 c0,17.632, 14.368,32, 32,32C 273.6,320, 288,305.664, 288,295.040L 288,264 l 30.016-12L 352,264L 352,295.040 
+		C 352,340.96, 308.928,384, 256,384S 160,340.96, 160,288l0-128 c0-17.632-14.368-32-32-32c-17.632,0-32,14.368-32,32L 96,224 L 32,224 l0-64 C 32,107.072, 75.072,64, 128,64z"  />
+<glyph unicode="&#xe099;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 36.576,224c0,30.976, 6.848,60.416, 19.008,86.976
+		l 104.672-279.296C 87.040,66.304, 36.576,139.424, 36.576,224z M 256,10.272c-21.536,0-42.304,3.072-61.984,8.704L 259.84,205.312l 67.424-179.968
+		c 0.448-1.056, 0.992-2.048, 1.568-2.976C 306.080,14.56, 281.568,10.272, 256,10.272z M 286.176,324.192c 13.216,0.672, 25.12,2.016, 25.12,2.016
+		c 11.84,1.376, 10.432,18.272-1.376,17.632c0,0-35.552-2.72-58.464-2.72c-21.536,0-57.792,2.72-57.792,2.72
+		C 181.824,344.512, 180.448,326.912, 192.256,326.208c0,0, 11.2-1.344, 23.008-2.016L 249.44,232.96l-48.032-140.256L 121.536,324.192
+		c 13.248,0.672, 25.12,2.016, 25.12,2.016c 11.808,1.376, 10.432,18.272-1.376,17.632c0,0-35.552-2.72-58.464-2.72
+		c-4.096,0-8.96,0.096-14.112,0.256C 111.904,399.392, 179.36,437.728, 256,437.728c 57.12,0, 109.12-21.28, 148.192-56.096
+		c-0.96,0.064-1.856,0.192-2.848,0.192c-21.568,0-36.864-18.272-36.864-37.92c0-17.632, 10.432-32.512, 21.536-50.144
+		c 8.384-14.272, 18.112-32.544, 18.112-58.944c0-18.272-7.2-39.52-16.672-69.12l-21.92-71.2L 286.176,324.192z M 475.424,224
+		c0-78.848-43.872-147.68-109.12-184.672l 67.040,188.704c 12.512,30.496, 16.672,54.848, 16.672,76.544c0,7.872-0.512,15.168-1.472,21.984
+		C 465.664,296.096, 475.424,261.152, 475.424,224z"  />
+<glyph unicode="&#xe09a;" d="M 488.896,480L 23.104,480 C 10.368,480,0,469.664,0,456.928l0-465.856 C0-21.632, 10.368-32, 23.104-32l 465.792,0 
+		C 501.632-32, 512-21.632, 512-8.928L 512,456.928 C 512,469.664, 501.632,480, 488.896,480z M 345.344,224c0-49.344-40-89.344-89.344-89.344S 166.656,174.656, 166.656,224
+		c0,49.344, 40,89.344, 89.344,89.344S 345.344,273.344, 345.344,224z M 448,32L 64,32 L 64,256 l 42.144,0 C 103.936,245.664, 102.656,234.976, 102.656,224
+		c0-84.544, 68.8-153.344, 153.344-153.344s 153.344,68.8, 153.344,153.344c0,10.976-1.28,21.664-3.488,32L 448,256 L 448,32 z M 448,320l-96,0 L 352,416 l 96,0 L 448,320 z"  />
+<glyph unicode="&#xe09b;" d="M 256,480C 114.848,480,0,365.152,0,224s 114.848-256, 256-256s 256,114.848, 256,256S 397.152,480, 256,480z M 256,442.336c 55.584,0, 106.336-20.832, 144.96-55.104
+		c-3.936-5.6-36.832-49.824-114.592-78.976c-35.84,65.824-75.552,119.904-81.6,128C 221.216,440.224, 238.368,442.336, 256,442.336z M 163.040,421.568
+		c 5.76-7.904, 44.832-62.048, 81.056-126.464C 141.824,267.936, 51.744,268.32, 41.952,268.448C 56.128,336.32, 101.856,392.704, 163.040,421.568z M 37.312,223.68
+		c0,2.24, 0.032,4.48, 0.096,6.688C 46.976,230.144, 152.96,228.8, 262.144,261.472c 6.272-12.256, 12.224-24.704, 17.728-37.12
+		c-2.88-0.8-5.76-1.664-8.608-2.592c-112.768-36.448-172.768-135.808-177.728-144.288C 58.624,116.224, 37.344,167.52, 37.312,223.68z M 255.968,5.024
+		c-50.528,0-97.12,17.248-134.208,46.144c 3.936,8.032, 48.224,93.568, 171.552,136.544c 0.48,0.16, 0.96,0.32, 1.44,0.48
+		c 30.72-79.776, 43.392-146.624, 46.656-165.824C 315.168,11.2, 286.304,4.992, 255.968,5.024z M 378.176,42.4c-2.24,13.312-13.856,77.312-42.464,155.904
+		c 68.512,10.976, 128.704-6.976, 136.192-9.344C 462.144,128.128, 427.232,75.584, 378.176,42.4z M 322.336,232.768
+		c-1.536,3.744-3.104,7.52-4.704,11.296C 313.088,254.72, 308.224,265.312, 303.136,275.744C 384,308.736, 420.64,355.712, 425.248,361.952
+		c 30.464-37.216, 48.896-84.608, 49.344-136.224C 467.392,227.264, 395.104,241.92, 322.336,232.768z"  />
+<glyph unicode="&#xe09c;" d="M 293.696,327.136c 58.496,35.104, 89.728-14.272, 59.776-70.176c-29.888-55.872-57.184-92.288-71.488-92.288
+		c-14.272,0-25.248,37.376-41.6,102.72C 223.488,334.944, 223.584,456.608, 153.312,442.816C 87.072,429.792,0,325.824,0,325.824L 20.8,298.56
+		c0,0, 42.88,33.792, 57.184,16.896c 14.304-16.896, 68.864-220.992, 87.072-258.624c 15.904-33.024, 59.744-76.672, 107.872-45.504
+		c 48.064,31.168, 207.904,167.648, 236.544,328.8C 538.048,501.248, 317.12,467.488, 293.696,327.136z"  />
+<glyph unicode="&#xe09d;" d="M 33.024,320L 128,320L 128-32L 33.024-32zM 322.784,319.968C 288,319.968, 270.656,303.392, 256,292.16L 256,320 L 160.512,320 l0-352 L 256-32 L 256,189.6 c0,0-3.488,44.128, 49.408,44.128
+		C 337.28,233.728, 352,215.584, 352,189.6L 352-32 l 100.608,0 L 452.608,186.496 C 452.608,306.496, 356,319.968, 322.784,319.968zM 32,400A48,48 1260 1 1 128,400A48,48 1260 1 1 32,400z"  />
+<glyph unicode="&#xe09e;" d="M 0.192,480l0-98.176 C 228.096,381.824, 413.568,196.16, 413.568-32L 512-32 C 512,250.24, 282.368,480, 0.192,480zM 239.424-32l 98.56,0 c 0.032,186.432-151.616,338.080-337.92,338.080l0-98.144 c 63.904,0, 123.968-24.992, 169.216-70.272
+		C 214.464,92.512, 239.424,32.16, 239.424-32zM 68.16-31.36c 37.728,0, 68.256,30.336, 68.256,67.904c-0.032,37.344-30.528,68.032-68.256,68.032
+		C 30.56,104.576,0,73.92,0,36.544C0-1.024, 30.56-31.36, 68.16-31.36z"  />
+<glyph unicode="&#xe09f;" d="M 363.872,312.832C 306.56,326.272, 244.48,325.696, 180.896,316.096C 178.592,315.744, 176.32,315.392, 174.048,315.008l-21.12,39.136
+		c-20.576-2.752-39.904-7.040-57.792-12.736l 20.128-42.112C 82.368,286.56, 55.392,268.416, 35.936,246.592c-32.128-36.48-44.832-82.4-29.408-127.136
+		c 3.104-9.024, 7.296-17.568, 12.48-25.6l 239.040,65.664L 191.68,282.432C 193.952,282.88, 196.288,283.328, 198.656,283.744c 107.328,19.136, 166.048-10.432, 198.208-41.92
+		l-81.792-19.84L 280.928,276.544c-19.52,1.152-42.048-0.032-68.128-4.48l 60.16-108.448L 512,229.248c-2.592,6.144-6.336,12.128-11.328,17.888
+		C 475.936,275.776, 422.304,301.312, 363.872,312.832z M 87.36,166.848C 79.968,200.512, 85.856,238.112, 132.576,263.136l 36.576-76.48L 87.36,166.848z"  />
+<glyph unicode="&#xe0a0;" d="M 377.376,328.896c 14.080-10.656, 31.552-17.024, 50.56-17.024C 474.368,311.872, 512,349.504, 512,395.936
+		C 512,442.368, 474.368,480, 427.936,480c-46.4,0-84.064-37.632-84.064-84.064c0-0.032,0-0.064,0-0.064L 136.384,295.552
+		C 122.016,307.008, 103.84,313.92, 84.064,313.92C 37.632,313.92,0,276.256,0,229.856s 37.632-84.064, 84.064-84.064c 16.768,0, 32.384,4.992, 45.504,13.44
+		l 214.336-103.616c0-0.032,0-0.064,0-0.064c0-46.432, 37.632-84.064, 84.064-84.064c 46.432,0, 84.064,37.632, 84.064,84.064
+		c0,46.432-37.632,84.064-84.064,84.064c-19.008,0-36.48-6.368-50.56-17.024L 167.808,223.904c 0.096,1.28, 0.16,2.528, 0.192,3.808L 377.376,328.896z"  />
+<glyph unicode="&#xe0a1;" d="M 252.736,351.776C 265.152,364.192, 271.392,379.424, 271.392,397.44c0,17.536-6.24,32.544-18.656,44.96
+		C 240.352,454.784, 225.056,460.992, 207.040,460.992c-17.472,0-32.48-6.208-44.896-18.592C 149.728,429.952, 143.488,414.976, 143.488,397.44
+		c0-18.016, 6.24-33.248, 18.656-45.664C 174.592,339.36, 189.568,333.152, 207.040,333.152C 225.056,333.152, 240.352,339.36, 252.736,351.776zM 309.728,337.888C 317.28,330.336, 326.048,324.384, 336.032,320c 9.984-4.352, 20.864-6.56, 32.512-6.56
+		c 11.712,0, 22.528,2.208, 32.512,6.56c 9.984,4.416, 18.72,10.336, 26.304,17.888c 7.552,7.552, 13.536,16.32, 17.92,26.304
+		c 4.384,9.984, 6.592,20.8, 6.592,32.544c0,11.68-2.176,22.496-6.592,32.512c-4.352,9.984-10.368,18.752-17.92,26.304
+		c-7.552,7.552-16.288,13.536-26.304,17.888C 391.104,477.824, 380.256,480, 368.544,480c-11.648,0-22.528-2.176-32.512-6.56
+		c-9.984-4.352-18.752-10.336-26.304-17.888C 302.208,447.968, 296.256,439.2, 291.84,429.216c-4.384-9.984-6.592-20.8-6.592-32.512
+		c0-11.712, 2.208-22.528, 6.592-32.544C 296.256,354.208, 302.208,345.44, 309.728,337.888zM 85.024,347.744c 13.664,0, 25.088,4.736, 34.368,14.24C 128.64,371.52, 133.248,383.072, 133.248,396.736
+		c0,13.152-4.64,24.48-13.856,33.952c-9.28,9.504-20.704,14.272-34.368,14.272c-13.6,0-25.216-4.768-34.656-14.272
+		c-9.536-9.472-14.272-20.8-14.272-33.952c0-13.664, 4.768-25.216, 14.272-34.72C 59.84,352.512, 71.424,347.744, 85.024,347.744zM 448.96,247.648c-10.208,10.24-22.304,18.272-36.16,24.128c-13.92,5.856-28.672,8.768-44.256,8.768
+		c-15.584,0-30.208-2.912-43.808-8.768C 311.072,265.92, 299.168,258.112, 288.928,248.384c-4.864,18.016-14.752,32.96-29.6,44.928
+		C 244.448,305.248, 227.040,311.232, 207.040,311.232c-12.672,0-24.576-2.688-35.808-8.032C 160.096,297.792, 150.304,290.272, 142.080,280.544
+		C 138.592,293.184, 131.84,303.776, 121.6,312.32C 111.392,320.864, 99.2,325.088, 85.024,325.088c-16.544,0-30.56-5.728-41.984-17.152C 31.584,296.512, 32,282.464, 32,265.92
+		l0-102.432 l 84.128,0 l0-83.872 l 140.96,0 L 257.088-32 l 225.024,0 L 482.112,167.296 c0,15.584-2.592,30.336-8.704,44.192C 467.328,225.376, 459.168,237.44, 448.96,247.648z"  />
+<glyph unicode="&#xe0a2;" d="M 489.856,222.752c0,129.152-105.28,233.888-235.104,233.888c-12.896,0-25.568-1.056-37.856-3.072
+		c-22.080,14.4-48.352,22.752-76.608,22.752C 62.752,476.32,0,413.504,0,336c0-28.192, 8.288-54.4, 22.592-76.384c-1.92-12.032-2.912-24.32-2.912-36.864
+		c0-129.184, 105.216-233.888, 235.072-233.888c 14.656,0, 28.928,1.44, 42.784,3.936c 21.536-13.376, 46.944-21.152, 74.144-21.152
+		c 77.536,0, 140.32,62.816, 140.32,140.32c0,29.28-8.96,56.512-24.352,79.040C 489.056,201.408, 489.856,212, 489.856,222.752z M 276.736,50.4
+		c-74.72-3.904-109.664,12.64-141.696,42.688c-35.776,33.568-21.408,71.84, 7.744,73.792c 29.12,1.952, 46.592-33.024, 62.144-42.72
+		c 15.52-9.696, 74.592-31.776, 105.792,3.904c 33.984,38.816-22.592,58.912-64.064,64.992C 187.456,201.824, 112.704,233.824, 118.528,296.96
+		C 124.352,360, 172.096,392.384, 222.368,396.928c 64.064,5.824, 105.792-9.696, 138.784-37.856c 38.144-32.544, 17.504-68.896-6.784-71.808
+		c-24.224-2.912-51.392,53.504-104.8,54.336C 194.528,342.464, 157.344,284.32, 225.28,267.808c 67.968-16.512, 140.736-23.296, 166.976-85.408
+		S 351.52,54.304, 276.736,50.4z"  />
+<glyph unicode="&#xe0a3;" d="M 442.752,399.264c-116.576,7.84-254.784,9.984-373.504,0C 32.384,395.136, 7.136,350.272, 4.384,316.192
+		c-5.824-71.584-5.824-112.32,0-183.904c 2.784-34.080, 27.392-79.2, 64.896-83.936c 120.128-7.872, 257.632-8.96, 373.504,0
+		c 36.288,6.304, 62.112,49.856, 64.896,83.936c 5.824,71.584, 5.824,116.768,0,188.384C 504.864,354.752, 484.512,397.728, 442.752,399.264z M 192,133.44L 192,316.96 
+		l 160-91.776L 192,133.44z"  />
+<glyph unicode="&#xe0a4;" d="M 128,2.272L 128,229.12 l-106.944-106.912C 42.976,71.68, 80.704,29.632, 128,2.272zM 160-13.376C 189.632-25.376, 222.048-32, 256-32c 94.752,0, 177.472,51.488, 221.728,128L 160,96 L 160-13.376 zM 213.12,368L 132.736,448.416C 53.6,404.864,0,320.704,0,224c0-21.248, 2.592-41.888, 7.488-61.632L 213.12,368zM 352,461.376C 322.336,473.376, 289.952,480, 256,480C 225.728,480, 196.704,474.72, 169.76,465.088L 352,282.88L 352,461.376 zM 384,445.728L 384,128 l 109.376,0 C 505.376,157.664, 512,190.048, 512,224C 512,318.752, 460.512,401.472, 384,445.728z"  />
+<glyph unicode="&#xe0a5;" d="M 487.808,192L 341.344,445.76L 170.656,445.76L 317.152,192 	zM 231.744,255.904L 146.432,403.744L0,150.080L 85.344,2.24 	zM 144.352-0.672L 426.656-0.672L 512,160L 236,160 	z"  />
+<glyph unicode="&#xe0a6;" d="M0,225.76A106.656,106.656 1260 1 1 213.312,225.76A106.656,106.656 1260 1 1 0,225.76zM 298.688,225.76A106.656,106.656 1260 1 1 512,225.76A106.656,106.656 1260 1 1 298.688,225.76z"  />
+<glyph unicode="&#xe0a7;" d="M 478.912,288l-28.096,0 l-0.608,0 C 432.64,288, 417.216,302.88, 416,320c0,91.328-73.632,160-165.6,160L 166.496,480 
+		C 74.592,480, 0.064,405.984,0,314.656l0-181.408 C0,41.952, 74.592-32, 166.496-32l 179.2,0 C 437.664-32, 512,41.952, 512,133.28L 512,250.464 
+		C 512,268.704, 497.28,288, 478.912,288z M 160,352l 96,0 c 17.6,0, 32-14.4, 32-32S 273.6,288, 256,288L 160,288 C 142.4,288, 128,302.4, 128,320S 142.4,352, 160,352z M 352,96L 160,96 c-17.6,0-32,14.4-32,32
+		s 14.4,32, 32,32l 192,0 c 17.6,0, 32-14.4, 32-32S 369.6,96, 352,96z"  />
+<glyph unicode="&#xe0a8;" d="M 256,480C 114.624,480,0,365.376,0,224c0-141.376, 114.624-256, 256-256s 256,114.624, 256,256C 512,365.376, 397.376,480, 256,480z M 374.272,73.92
+		c-3.2-5.824-9.216-9.12-15.424-9.12c-2.88,0-5.76,0.704-8.48,2.176c-40.992,22.592-87.552,34.528-134.592,34.528
+		c-28.192,0-56.032-4.192-82.688-12.448c-9.28-2.88-19.136,2.336-21.984,11.616c-2.88,9.28, 2.304,28.96, 11.616,31.84
+		c 30.048,9.28, 61.376,14.016, 93.088,14.016c 52.96,0, 105.376-13.44, 151.552-38.88C 375.872,102.976, 378.976,82.432, 374.272,73.92z M 406.784,170.368
+		c-3.648-7.040-10.816-18.464-18.24-18.464c-3.2,0-6.432,0.736-9.44,2.336c-50.784,26.368-105.728,39.744-163.296,39.744
+		c-31.712,0-63.2-4.192-93.6-12.512c-10.976-2.976-22.24,3.456-25.216,14.4C 94.048,206.816, 100.48,225.472, 111.424,228.448
+		c 33.92,9.248, 69.056,13.952, 104.384,13.952c 63.328,0, 126.336-15.36, 182.208-44.384C 408.064,192.8, 412,180.416, 406.784,170.368z M 441.408,263.040
+		c-4.128-8.224-12.384-15.456-21.024-15.456c-3.52,0-7.072,0.8-10.432,2.464c-60.64,30.24-125.952,45.536-194.144,45.536
+		c-35.52,0-70.912-4.32-105.248-12.8c-12.576-3.104-25.28,4.544-28.384,17.12C 79.040,312.448, 86.72,327.648, 99.296,330.752
+		C 137.28,340.192, 176.48,344.96, 215.808,344.96c 75.52,0, 147.872-16.992, 215.040-50.464C 442.464,288.704, 447.168,274.624, 441.408,263.040z"  />
+<glyph unicode="&#xe0a9;" d="M 480,480L 256,480 L 32,480 L 22.784,480 C 10.24,480,0,469.76,0,457.184L0,448 l0-224 l0-224 c0-17.664, 14.336-32, 32-32l 224.352,0 L 480-32 l 9.216,0 
+		C 501.76-32, 512-21.76, 512-9.184L 512,0 L 512,223.264 L 512,448 C 512,465.664, 497.664,480, 480,480z M 256.352,223.264L 256.352,0 L 32,0 L 32,224 l 224,0 L 256,448 l 224,0 l0-224.736 L 256.352,223.264 z"  />
+<glyph unicode="&#xe0aa;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 322.176,224.032L 280.224,224
+		l-0.032-153.6L 222.624,70.4 L 222.624,224 l-38.4,0 L 184.224,276.928 l 38.4,0.032L 222.56,308.128C 222.56,351.328, 234.272,377.6, 285.12,377.6l 42.368,0 l0-52.96 L 300.992,324.64 
+		c-19.808,0-20.768-7.392-20.768-21.184L 280.16,276.96l 47.616,0 L 322.176,224.032z"  />
+<glyph unicode="&#xe0ab;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 383.36,281.472
+		c 0.128-2.72, 0.192-5.44, 0.192-8.16c0-83.296-63.392-179.328-179.328-179.328c-35.584,0-68.704,10.432-96.608,28.32
+		c 4.928-0.576, 9.952-0.896, 15.040-0.896c 29.536,0, 56.704,10.080, 78.272,26.976c-27.584,0.512-50.848,18.752-58.88,43.776
+		C 145.92,191.424, 149.824,191.040, 153.92,191.040c 5.76,0, 11.328,0.768, 16.608,2.208C 141.696,199.040, 119.968,224.512, 119.968,255.040c0,0.256,0,0.512,0,0.8
+		c 8.512-4.736, 18.208-7.552, 28.544-7.904C 131.616,259.232, 120.48,278.528, 120.48,300.384c0,11.552, 3.104,22.368, 8.512,31.68
+		c 31.072-38.144, 77.536-63.232, 129.92-65.856C 257.824,270.816, 257.28,275.648, 257.28,280.576c0,34.784, 28.224,63.008, 63.040,63.008
+		c 18.112,0, 34.496-7.648, 46.016-19.904c 14.368,2.848, 27.872,8.096, 40.032,15.296c-4.704-14.72-14.688-27.072-27.712-34.88
+		c 12.736,1.504, 24.896,4.928, 36.192,9.92C 406.4,301.408, 395.68,290.304, 383.36,281.472z"  />
+<glyph unicode="&#xe0ac;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 275.968,154.784
+		c-18.72,1.44-26.56,10.72-41.216,19.648c-8.064-42.304-17.92-82.88-47.104-104.032C 178.624,134.304, 200.864,182.304, 211.2,233.28
+		C 193.6,262.944, 213.312,322.56, 250.432,307.872c 45.664-18.080-39.584-110.176, 17.664-121.664c 59.744-12.032, 84.16,103.68, 47.104,141.312
+		c-53.568,54.336-155.84,1.248-143.264-76.544c 3.072-19.008, 22.688-24.768, 7.84-51.040C 145.504,207.52, 135.264,234.56, 136.576,270.592
+		c 2.112,58.976, 52.992,100.256, 104.032,105.984c 64.544,7.232, 125.088-23.68, 133.472-84.384C 383.52,223.68, 344.96,149.44, 275.968,154.784z"  />
+<glyph unicode="&#xe0ad;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 184.576,51.744
+		c-56.672,0-104.48,23.072-104.48,59.936c0,37.408, 43.616,73.536, 100.288,73.504c 6.176,0, 11.84,0.16, 17.696,0.16
+		C 190.336,192.864, 184.192,202.112, 184.192,213.536c0,6.784, 2.176,13.28, 5.184,19.072C 186.304,232.384, 183.168,232.288, 179.936,232.288
+		c-46.56,0-77.728,33.12-77.728,74.176c0,40.16, 43.040,74.816, 88.8,74.816c 25.536,0, 102.080,0, 102.080,0L 270.176,364.768L 237.824,364.768 
+		c 21.472-8.256, 32.896-33.28, 32.896-58.944c0-21.536-11.936-40.096-28.8-53.28C 225.44,239.648, 222.336,234.272, 222.336,223.328
+		c0-9.344, 17.664-25.216, 26.88-31.744c 26.976-19.072, 35.68-36.8, 35.68-66.336C 284.864,88.384, 249.184,51.744, 184.576,51.744z M 448,255.392l-64,0 l0-63.872 
+		l-31.968,0 L 352.032,255.392 L 288,255.392 L 288,288 l 64.032,0 L 352.032,352 L 384,352 l0-64 l 64,0 L 448,255.392 zM 216.608,171.584C 208.864,174.080, 200.32,175.552, 191.2,175.648c-39.168,0.416-74.24-23.872-74.24-53.088
+		c0-29.792, 28.288-54.592, 67.456-54.592c 55.072,0, 74.24,23.296, 74.24,53.056c0,3.616-0.448,7.104-1.248,10.528
+		C 253.12,148.448, 237.856,156.832, 216.608,171.584zM 234.048,303.84C 229.504,338.336, 204.512,366.048, 178.24,366.848c-26.272,0.768-43.904-25.632-39.36-60.192
+		c 4.544-34.528, 29.536-63.168, 55.84-63.936C 220.96,241.92, 238.624,269.28, 234.048,303.84z"  />
+<glyph unicode="&#xe0ae;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 351.968,243.2L 275.2,243.2 L 275.168,172.96
+		c0-17.824-0.224-28.096, 1.664-33.152c 1.888-5.024, 6.56-10.24, 11.68-13.248c 6.816-4.096, 14.56-6.112, 23.296-6.112
+		c 15.552,0, 24.736,2.048, 40.128,12.16L 351.936,86.4 c-13.12-6.176-24.544-9.76-35.2-12.256C 306.112,71.648, 294.624,70.4, 282.24,70.4
+		c-14.048,0-22.336,1.76-33.12,5.312c-10.784,3.552-20,8.64-27.616,15.168c-7.648,6.56-12.896,13.568-15.872,20.96
+		c-2.944,7.392-4.416,18.112-4.416,32.16L 201.216,251.712 L 160.032,251.712 l0,43.52 c 12.064,3.904, 25.568,9.536, 34.144,16.864
+		c 8.608,7.328, 15.52,16.096, 20.736,26.368C 220.096,348.672, 223.68,361.76, 225.664,377.6L 275.2,377.6 l0-76.8 l 76.768,0 L 351.968,243.2 z"  />
+<glyph unicode="&#xe0af;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 256,292.608
+		c-12.608,0-22.88-10.272-22.88-22.88l0-91.488 c0-37.824-30.784-68.608-68.608-68.608c-37.824,0-68.608,30.784-68.608,68.608L 95.904,224 l 45.728,0 l0-45.728 
+		c0-12.608, 10.272-22.88, 22.88-22.88c 12.608,0, 22.88,10.272, 22.88,22.88L 187.392,269.728 c0,37.824, 30.784,68.608, 68.608,68.608s 68.608-30.784, 68.608-63.616
+		l0-22.176 L 295.296,244L 278.848,252.576L 278.848,274.752 C 278.848,282.336, 268.576,292.608, 256,292.608z M 416.064,178.272c0-37.824-30.784-68.608-68.608-68.608
+		s-68.608,30.784-68.608,73.632L 278.848,227.584 l 16.448-8.576l 29.312,8.576l0-44.32 c0-17.6, 10.272-27.872, 22.88-27.872s 22.88,10.272, 22.88,22.88L 370.368,224 l 45.728,0 
+		L 416.096,178.272 z"  />
+<glyph unicode="&#xe0b0;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 36.576,224c0,30.976, 6.848,60.416, 19.008,86.976
+		l 104.672-279.296C 87.040,66.304, 36.576,139.424, 36.576,224z M 256,10.272c-21.536,0-42.304,3.072-61.984,8.704L 259.84,205.312l 67.424-179.968
+		c 0.448-1.056, 0.992-2.048, 1.568-2.976C 306.080,14.56, 281.568,10.272, 256,10.272z M 286.176,324.192c 13.216,0.672, 25.12,2.016, 25.12,2.016
+		c 11.84,1.376, 10.432,18.272-1.376,17.632c0,0-35.552-2.72-58.464-2.72c-21.536,0-57.792,2.72-57.792,2.72
+		C 181.824,344.512, 180.448,326.912, 192.256,326.208c0,0, 11.2-1.344, 23.008-2.016L 249.44,232.96l-48.032-140.256L 121.536,324.192
+		c 13.248,0.672, 25.12,2.016, 25.12,2.016c 11.808,1.376, 10.432,18.272-1.376,17.632c0,0-35.552-2.72-58.464-2.72
+		c-4.096,0-8.96,0.096-14.112,0.256C 111.904,399.392, 179.36,437.728, 256,437.728c 57.12,0, 109.12-21.28, 148.192-56.096
+		c-0.96,0.064-1.856,0.192-2.848,0.192c-21.568,0-36.864-18.272-36.864-37.92c0-17.632, 10.432-32.512, 21.536-50.144
+		c 8.384-14.272, 18.112-32.544, 18.112-58.944c0-18.272-7.2-39.52-16.672-69.12l-21.92-71.2L 286.176,324.192z M 475.424,224
+		c0-78.848-43.872-147.68-109.12-184.672l 67.040,188.704c 12.512,30.496, 16.672,54.848, 16.672,76.544c0,7.872-0.512,15.168-1.472,21.984
+		C 465.664,296.096, 475.424,261.152, 475.424,224z"  />
+<glyph unicode="&#xe0b1;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 416,75.552
+		C 416,69.184, 410.816,64, 404.448,64L 107.552,64 C 101.184,64, 96,69.184, 96,75.552L 96,372.448 C 96,378.816, 101.184,384, 107.552,384l 296.896,0 C 410.816,384, 416,378.816, 416,372.448
+		L 416,75.552 zM 192,224A64,64 1260 1 1 320,224A64,64 1260 1 1 192,224zM 320,352L 384,352L 384,288L 320,288zM 351.2,224c0-52.512-42.72-95.2-95.2-95.2S 160.8,171.488, 160.8,224c0,6.816, 0.8,9.568, 2.144,16L 128,240 L 128,96 l 256,0 L 384,240 
+		l-34.944,0 C 350.432,233.568, 351.2,230.816, 351.2,224z"  />
+<glyph unicode="&#xe0b2;" d="M 315.648,204.768c 21.408-58.816, 30.112-106.72, 31.776-116.672c 36.704,24.832, 62.848,64.16, 70.144,109.696
+		C 412,199.552, 366.944,212.992, 315.648,204.768zM 283.936,196.832c-92.288-32.16-125.44-96.192-128.384-102.208c 27.744-21.632, 62.624-34.528, 100.448-34.528
+		c 22.688-0.032, 44.32,4.608, 63.936,12.992c-2.432,14.368-11.936,64.416-34.912,124.096C 284.64,197.088, 284.288,196.96, 283.936,196.832zM 291.264,262.72c 3.808-7.808, 7.456-15.744, 10.848-23.712c 1.184-2.816, 2.368-5.664, 3.52-8.448
+		c 54.464,6.848, 108.576-4.128, 113.952-5.28c-0.32,38.624-14.144,74.112-36.928,101.952C 379.232,322.592, 351.808,287.424, 291.264,262.72zM 267.424,222.336C 269.568,223.008, 271.712,223.68, 273.856,224.256C 269.76,233.568, 265.28,242.88, 260.608,252.032
+		C 178.88,227.584, 99.552,228.608, 92.384,228.768C 92.352,227.104, 92.32,225.44, 92.32,223.776c 0.032-42.048, 15.936-80.416, 42.080-109.44
+		C 138.112,120.672, 183.008,195.040, 267.424,222.336zM 247.104,277.216C 219.968,325.44, 190.752,365.952, 186.432,371.872C 140.64,350.272, 106.4,308.064, 95.808,257.28
+		C 103.136,257.184, 170.56,256.896, 247.104,277.216zM 364.48,346.176C 335.584,371.808, 297.6,387.424, 256,387.424c-13.184,0-26.048-1.568-38.336-4.544
+		C 222.176,376.8, 251.904,336.32, 278.72,287.072C 336.928,308.864, 361.536,341.984, 364.48,346.176zM 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 256,32.416
+		c-105.632,0-191.584,85.952-191.584,191.584c0,105.632, 85.952,191.584, 191.584,191.584S 447.584,329.632, 447.584,224C 447.584,118.368, 361.632,32.416, 256,32.416z"  />
+<glyph unicode="&#xe0b3;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 408.064,293.664
+		c-17.184-96.704-113.088-178.592-141.92-197.28c-28.864-18.688-55.168,7.488-64.736,27.296C 190.496,146.272, 157.76,268.736, 149.184,278.88
+		C 140.608,289.024, 114.88,268.736, 114.88,268.736L 102.4,285.088c0,0, 52.256,62.368, 92,70.208C 236.544,363.584, 236.48,290.56, 246.624,250.048
+		c 9.824-39.2, 16.384-61.632, 24.96-61.632c 8.576,0, 24.96,21.856, 42.88,55.36c 17.984,33.536-0.768,63.168-35.872,42.112
+		C 292.672,370.080, 425.216,390.336, 408.064,293.664z"  />
+<glyph unicode="&#xe0b4;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 192,100L 128,100 l0,224 l 64,0 L 192,100 z
+		 M 161.984,337.728c-16.576,0-29.984,13.44-29.984,30.016c0,16.576, 13.44,30.016, 29.984,30.016C 178.56,397.728, 192,384.288, 192,367.744
+		C 192,351.168, 178.56,337.728, 161.984,337.728z M 416,100l-64,0 L 352,238.496 c0,16.224-4.64,27.584-24.576,27.584C 294.368,266.080, 288,238.496, 288,238.496l0-138.496 L 224,100 l0,224 l 64,0 
+		l0-21.408 c 9.152,7.008, 32,21.376, 64,21.376c 20.768,0, 64-12.416, 64-87.424L 416,100 z"  />
+<glyph unicode="&#xe0b5;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 138.080,64.768
+		c-23.008,0-41.696,18.56-41.696,41.536c0,22.848, 18.688,41.632, 41.696,41.632c 23.072,0, 41.728-18.784, 41.76-41.632
+		C 179.84,83.328, 161.184,64.768, 138.080,64.768z M 242.848,64.384c0,39.264-15.264,76.16-42.912,103.776C 172.288,195.872, 135.52,211.168, 96.448,211.168L 96.448,271.2 
+		c 113.952,0, 206.72-92.768, 206.72-206.816L 242.848,64.384 z M 349.376,64.416c0,139.584-113.44,253.152-252.864,253.152L 96.512,377.6 c 172.608,0, 313.088-140.544, 313.088-313.184
+		L 349.376,64.416 z"  />
+<glyph unicode="&#xe0b6;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 273.664,183.36L 233.184,256.352
+		c 17.536,3.008, 32.704,3.776, 45.856,3.008l 22.976-36.704l 55.040,13.344c-21.632,21.184-61.152,41.088-133.408,28.224
+		C 222.048,263.936, 220.48,263.616, 218.944,263.328l 44.672-82.72l-160.864-44.192c-3.488,5.408-6.304,11.168-8.384,17.216
+		C 83.968,183.744, 92.512,214.656, 114.144,239.2c 13.088,14.688, 31.264,26.912, 53.376,35.456L 153.984,303.008c 12.032,3.84, 25.056,6.72, 38.88,8.576
+		l 14.208-26.336C 208.608,285.504, 210.144,285.76, 211.712,285.984c 42.784,6.464, 84.576,6.848, 123.136-2.208c 39.328-7.744, 75.424-24.928, 92.064-44.224
+		c 3.36-3.872, 5.888-7.904, 7.616-12.032L 273.664,183.36zM 148.736,185.536l 55.040,13.344L 179.168,250.336C 147.744,233.504, 143.776,208.192, 148.736,185.536z"  />
+<glyph unicode="&#xe0b7;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 309.152,165.984
+		c 7.904,5.984, 17.76,9.568, 28.448,9.568c 26.112,0, 47.296-21.152, 47.296-47.296c0-26.112-21.184-47.296-47.296-47.296
+		c-26.112,0-47.264,21.152-47.264,47.296c0,0,0,0.032,0,0.032L 169.728,186.592c-7.392-4.768-16.16-7.584-25.6-7.584
+		c-26.112,0-47.296,21.184-47.296,47.296c0,26.112, 21.184,47.296, 47.296,47.296c 11.136,0, 21.344-3.872, 29.44-10.304L 290.304,319.68
+		c0,0,0,0.032,0,0.032c0,26.112, 21.184,47.296, 47.264,47.296c 26.112,0, 47.296-21.152, 47.296-47.296s-21.184-47.296-47.296-47.296
+		c-10.688,0-20.512,3.584-28.448,9.568L 191.36,225.088c0-0.704-0.064-1.44-0.096-2.144L 309.152,165.984z"  />
+<glyph unicode="&#xe0b8;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 265.088,352.256
+		C 267.84,358.496, 271.552,364, 276.256,368.704c 4.736,4.736, 10.176,8.448, 16.448,11.2C 298.944,382.656, 305.76,384, 313.024,384
+		c 7.328,0, 14.080-1.344, 20.32-4.096c 6.24-2.72, 11.712-6.464, 16.416-11.2c 4.736-4.704, 8.48-10.208, 11.2-16.448
+		c 2.752-6.24, 4.128-12.992, 4.128-20.32c0-7.328-1.376-14.080-4.128-20.32c-2.72-6.24-6.464-11.712-11.2-16.448
+		c-4.736-4.704-10.176-8.448-16.416-11.2c-6.24-2.72-12.992-4.096-20.32-4.096c-7.296,0-14.080,1.376-20.32,4.096
+		c-6.24,2.752-11.712,6.464-16.448,11.2C 271.552,299.904, 267.84,305.376, 265.088,311.616C 262.336,317.856, 260.96,324.64, 260.96,331.936
+		C 260.96,339.264, 262.336,346.016, 265.088,352.256z M 184.032,360.512c 7.776,7.744, 17.12,11.616, 28.064,11.616c 11.264,0, 20.8-3.872, 28.544-11.616
+		C 248.416,352.736, 252.288,343.36, 252.288,332.384c0-11.264-3.904-20.768-11.68-28.544C 232.896,296.096, 223.36,292.224, 212.096,292.224
+		c-10.912,0-20.288,3.872-28.064,11.648c-7.776,7.776-11.68,17.28-11.68,28.544C 172.384,343.36, 176.256,352.736, 184.032,360.512z M 114.176,353.184
+		c 5.92,5.952, 13.152,8.928, 21.664,8.928c 8.544,0, 15.68-2.976, 21.472-8.928c 5.76-5.92, 8.64-12.992, 8.64-21.216
+		c0-8.544-2.912-15.744-8.64-21.696C 151.52,304.32, 144.384,301.344, 135.84,301.344c-8.512,0-15.744,2.976-21.664,8.896
+		C 108.224,316.192, 105.248,323.424, 105.248,331.936C 105.248,340.16, 108.224,347.264, 114.176,353.184z M 384,64L 243.36,64 l0,64 L 155.264,128 L 155.264,192 L 102.688,192 L 102.688,250.208 
+		c0,10.336-0.256,19.104, 6.912,26.24c 7.136,7.136, 15.904,10.72, 26.24,10.72c 8.832,0, 16.48-2.656, 22.848-8
+		c 6.4-5.344, 10.624-11.936, 12.8-19.872c 5.152,6.080, 11.264,10.784, 18.24,14.176c 7.008,3.328, 14.464,5.024, 22.368,5.024
+		c 12.48,0, 23.36-3.744, 32.672-11.2c 9.28-7.456, 15.456-16.832, 18.496-28.064c 6.4,6.080, 13.824,10.976, 22.4,14.592
+		c 8.512,3.648, 17.664,5.472, 27.392,5.472c 9.76,0, 18.976-1.824, 27.648-5.472c 8.64-3.648, 16.192-8.672, 22.592-15.072
+		c 6.4-6.4, 11.488-13.92, 15.264-22.592C 382.368,207.52, 384,198.304, 384,188.544L 384,64 z"  />
+<glyph unicode="&#xe0b9;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 325.408,72.608
+		c-16.32,0-31.552,4.672-44.48,12.704c-8.32-1.504-16.864-2.368-25.664-2.368c-77.92,0-141.056,62.816-141.056,140.32
+		c0,7.52, 0.608,14.912, 1.76,22.112C 107.36,258.56, 102.4,274.304, 102.4,291.2c0,46.496, 37.664,84.16, 84.16,84.192c 16.96,0, 32.704-5.024, 45.952-13.664
+		c 7.36,1.216, 14.976,1.856, 22.72,1.856c 77.888,0, 141.056-62.848, 141.056-140.32c0-6.464-0.48-12.8-1.312-19.040
+		C 404.224,190.688, 409.6,174.368, 409.6,156.8C 409.6,110.304, 371.936,72.608, 325.408,72.608zM 237.568,250.272c-40.768,9.92-18.464,44.8, 14.56,44.288C 284.192,294.048, 300.48,260.192, 315.008,261.952
+		c 14.56,1.76, 26.944,23.552, 4.064,43.072C 299.296,321.92, 274.272,331.232, 235.808,327.744C 205.664,325.024, 177.024,305.6, 173.504,267.776
+		C 170.016,229.92, 214.88,210.688, 250.4,205.408c 24.896-3.648, 58.816-15.712, 38.432-39.008c-18.72-21.408-54.176-8.16-63.488-2.336
+		C 216.032,169.92, 205.536,190.88, 188.064,189.728c-17.504-1.184-26.112-24.128-4.64-44.288c 19.232-18.016, 40.192-27.968, 85.024-25.6
+		c 44.864,2.336, 85.056,41.92, 69.312,79.2S 278.336,240.384, 237.568,250.272z"  />
+<glyph unicode="&#xe0ba;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 413.28,166.688
+		c-1.728-21.312-17.888-48.512-40.544-52.448c-72.416-5.6-158.368-4.928-233.44,0c-23.424,2.944-38.816,31.168-40.544,52.448
+		c-3.648,44.736-3.648,70.208,0,114.944C 100.48,302.912, 116.256,330.976, 139.296,333.536c 74.208,6.24, 160.576,4.896, 233.44,0
+		c 26.112-0.96, 38.816-27.808, 40.544-49.12C 416.896,239.68, 416.896,211.424, 413.28,166.688zM 224,160L 320,224L 224,288 	z"  />
+<glyph unicode="&#xe0bb;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 256,416
+		c 25.472,0, 49.76-4.96, 72-13.952L 328,268.16 L 191.328,404.832C 211.52,412.032, 233.312,416, 256,416z M 69.6,177.792C 65.952,192.576, 64,208.064, 64,224
+		c0,72.544, 40.192,135.648, 99.552,168.32l 60.288-60.32L 69.6,177.792z M 160,57.696c-35.488,20.512-63.776,52.064-80.192,89.952L 160,227.84L 160,57.696 z M 256,32
+		c-25.472,0-49.76,4.96-72,13.984L 184,128 l 238.304,0 C 389.088,70.624, 327.072,32, 256,32z M 434.016,152L 352,152 L 352,390.304 C 409.376,357.088, 448,295.072, 448,224
+		C 448,198.528, 443.040,174.24, 434.016,152z"  />
+<glyph unicode="&#xe0bc;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 305.376,352.288l 84.736-146.816L 291.392,205.472 
+		L 206.624,352.288L 305.376,352.288 z M 107.904,181.248L 192.608,328l 49.344-85.536l-84.704-146.752L 107.904,181.248z M 354.72,95.712L 191.424,95.712 l 49.344,85.536l 163.328,0 
+		L 354.72,95.712z"  />
+<glyph unicode="&#xe0bd;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 161.792,159.872
+		c-35.872,0-64.928,29.056-64.928,64.928s 29.056,64.928, 64.928,64.928c 35.872,0, 64.928-29.056, 64.928-64.928S 197.664,159.872, 161.792,159.872z
+		 M 350.88,159.872c-35.872,0-64.928,29.056-64.928,64.928s 29.056,64.928, 64.928,64.928c 35.872,0, 64.928-29.056, 64.928-64.928
+		S 386.752,159.872, 350.88,159.872z"  />
+<glyph unicode="&#xe0be;" d="M 315.84,184.096L 196.16,184.096 c-10.976,0-19.936-8.992-19.936-19.936s 8.992-19.936, 19.936-19.936L 315.84,144.224 
+		c 10.976,0, 19.936,8.992, 19.936,19.936S 326.816,184.096, 315.84,184.096zM 196.16,263.904L 256,263.904 c 10.976,0, 19.936,8.992, 19.936,19.936c0,10.976-8.992,19.936-19.936,19.936L 196.16,303.776 
+		c-10.976,0-19.936-8.992-19.936-19.936C 176.192,272.864, 185.184,263.904, 196.16,263.904zM 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 415.584,167.456
+		c0-56.928-46.336-103.040-103.68-103.040L 200.192,64.416 c-57.28,0-103.808,46.112-103.808,103.008L 96.384,280.512 c 0.032,56.928, 46.496,103.072, 103.808,103.072l 52.32,0 
+		c 57.344,0, 103.232-42.816, 103.232-99.744c 0.768-10.656, 10.368-19.936, 21.312-19.936l 0.384,0 l 17.504,0 c 11.456,0, 20.64-12.032, 20.64-23.392L 415.584,167.456 z"  />
+<glyph unicode="&#xe0bf;" d="M 225.856,314.72c-29.504,0-58.88-3.584-87.392-10.656C 129.024,301.728, 123.296,290.336, 125.632,280.928
+		s 11.872-15.168, 21.312-12.832c 25.728,6.368, 52.288,9.6, 78.944,9.6c 51.136,0, 100.128-11.488, 145.6-34.176c 2.528-1.248, 5.184-1.856, 7.84-1.856
+		c 6.464,0, 12.672,5.408, 15.776,11.584c 4.32,8.672, 0.8,19.264-7.904,23.584C 336.768,301.984, 282.496,314.72, 225.856,314.72zM 225.856,165.888c-23.776,0-47.264-3.552-69.824-10.496c-6.976-2.144-10.848-16.928-8.704-23.872
+		c 2.144-6.976, 9.536-10.88, 16.512-8.704c 20,6.208, 40.896,9.344, 62.016,9.344c 35.264,0, 70.176-8.96, 100.928-25.888
+		c 2.016-1.12, 4.192-1.632, 6.368-1.632c 4.672,0, 9.184,2.464, 11.552,6.848c 3.52,6.368, 1.216,21.792-5.184,25.312
+		C 304.896,155.808, 265.568,165.888, 225.856,165.888zM 362.528,204.512c-41.888,21.76-89.152,33.28-136.64,33.28c-26.496,0-52.864-3.52-78.304-10.464
+		c-8.192-2.24-13.024-16.224-10.784-24.416c 2.24-8.192, 10.688-13.024, 18.912-10.784c 22.784,6.208, 46.432,9.376, 70.176,9.376
+		c 43.2,0, 84.384-10.048, 122.464-29.824c 2.272-1.184, 4.672-1.728, 7.072-1.728c 5.568,0, 10.912,8.576, 13.664,13.824
+		C 372.992,191.296, 370.048,200.608, 362.528,204.512zM 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 256,32c-106.048,0-192,85.952-192,192
+		c0,106.048, 85.952,192, 192,192s 192-85.952, 192-192C 448,117.952, 362.048,32, 256,32z"  />
+<glyph unicode="&#xe0c0;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256C 512,365.408, 397.376,480, 256,480z M 416,223.648L 416,80 l0-4.608 
+		C 416,69.12, 410.88,64, 404.608,64L 400,64 L 256.192,64 L 112,64 C 103.168,64, 96,71.168, 96,80L 96,223.648 L 96,368 L 96,372.608 C 96,378.88, 101.12,384, 107.392,384L 112,384 l 144.192,0 L 400,384 
+		C 408.832,384, 416,376.832, 416,368L 416,223.648 zM 128,223.648L 256.192,223.648L 256.192,96L 128,96zM 256.192,352L 384,352L 384,223.648L 256.192,223.648z"  />
+<glyph unicode="&#xe0c1;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 322.176,224.032L 280.224,224l-0.032-153.6L 222.624,70.4 L 222.624,224 l-38.4,0 L 184.224,276.928 l 38.4,0.032L 222.56,308.128C 222.56,351.328, 234.272,377.6, 285.12,377.6l 42.368,0 l0-52.96 L 300.992,324.64 
+		c-19.808,0-20.768-7.392-20.768-21.184L 280.16,276.96l 47.616,0 L 322.176,224.032z"  />
+<glyph unicode="&#xe0c2;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 383.36,281.472c 0.128-2.72, 0.192-5.44, 0.192-8.16c0-83.296-63.392-179.328-179.328-179.328c-35.584,0-68.704,10.432-96.608,28.32
+		c 4.928-0.576, 9.952-0.896, 15.040-0.896c 29.536,0, 56.704,10.080, 78.272,26.976c-27.584,0.512-50.848,18.752-58.88,43.776
+		C 145.92,191.424, 149.824,191.040, 153.92,191.040c 5.76,0, 11.328,0.768, 16.608,2.208C 141.696,199.040, 119.968,224.512, 119.968,255.040c0,0.256,0,0.512,0,0.8
+		c 8.512-4.736, 18.208-7.552, 28.544-7.904C 131.616,259.232, 120.48,278.528, 120.48,300.384c0,11.552, 3.104,22.368, 8.512,31.68
+		c 31.072-38.144, 77.536-63.232, 129.92-65.856C 257.824,270.816, 257.28,275.648, 257.28,280.576c0,34.784, 28.224,63.008, 63.040,63.008
+		c 18.112,0, 34.496-7.648, 46.016-19.904c 14.368,2.848, 27.872,8.096, 40.032,15.296c-4.704-14.72-14.688-27.072-27.712-34.88
+		c 12.736,1.504, 24.896,4.928, 36.192,9.92C 406.4,301.408, 395.68,290.304, 383.36,281.472z"  />
+<glyph unicode="&#xe0c3;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 275.968,154.784c-18.72,1.44-26.56,10.72-41.216,19.648c-8.064-42.304-17.92-82.88-47.104-104.032C 178.624,134.304, 200.864,182.304, 211.2,233.28
+		C 193.6,262.944, 213.312,322.56, 250.432,307.872c 45.664-18.080-39.584-110.176, 17.664-121.664c 59.744-12.032, 84.16,103.68, 47.104,141.312
+		c-53.568,54.336-155.84,1.248-143.264-76.544c 3.072-19.008, 22.688-24.768, 7.84-51.040C 145.504,207.52, 135.264,234.56, 136.576,270.592
+		c 2.112,58.976, 52.992,100.256, 104.032,105.984c 64.544,7.232, 125.088-23.68, 133.472-84.384C 383.52,223.68, 344.96,149.44, 275.968,154.784z"  />
+<glyph unicode="&#xe0c4;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 184.576,51.744c-56.672,0-104.48,23.072-104.48,59.936c0,37.408, 43.616,73.536, 100.288,73.504c 6.176,0, 11.84,0.16, 17.696,0.16
+		C 190.336,192.864, 184.192,202.112, 184.192,213.536c0,6.784, 2.176,13.28, 5.184,19.072C 186.304,232.384, 183.168,232.288, 179.936,232.288
+		c-46.56,0-77.728,33.12-77.728,74.176c0,40.16, 43.040,74.816, 88.8,74.816c 25.536,0, 102.080,0, 102.080,0L 270.176,364.768L 237.824,364.768 
+		c 21.472-8.256, 32.896-33.28, 32.896-58.944c0-21.536-11.936-40.096-28.8-53.28C 225.44,239.648, 222.336,234.272, 222.336,223.328
+		c0-9.344, 17.664-25.216, 26.88-31.744c 26.976-19.072, 35.68-36.8, 35.68-66.336C 284.864,88.384, 249.184,51.744, 184.576,51.744z M 448,255.392l-64,0 l0-63.872 
+		l-31.968,0 L 352.032,255.392 L 288,255.392 L 288,288 l 64.032,0 L 352.032,352 L 384,352 l0-64 l 64,0 L 448,255.392 zM 234.048,303.84C 229.504,338.336, 204.512,366.048, 178.24,366.848c-26.272,0.768-43.904-25.632-39.36-60.192
+		c 4.544-34.528, 29.536-63.168, 55.84-63.936C 220.96,241.92, 238.624,269.28, 234.048,303.84zM 216.608,171.584C 208.864,174.080, 200.32,175.552, 191.2,175.648c-39.168,0.416-74.24-23.872-74.24-53.088
+		c0-29.792, 28.288-54.592, 67.456-54.592c 55.072,0, 74.24,23.296, 74.24,53.056c0,3.616-0.448,7.104-1.248,10.528
+		C 253.12,148.448, 237.856,156.832, 216.608,171.584z"  />
+<glyph unicode="&#xe0c5;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 351.968,243.2L 275.2,243.2 L 275.168,172.96c0-17.824-0.224-28.096, 1.664-33.152c 1.888-5.024, 6.56-10.24, 11.68-13.248
+		c 6.816-4.096, 14.56-6.112, 23.296-6.112c 15.552,0, 24.736,2.048, 40.128,12.16L 351.936,86.4 c-13.12-6.176-24.544-9.76-35.2-12.256
+		C 306.112,71.648, 294.624,70.4, 282.24,70.4c-14.048,0-22.336,1.76-33.12,5.312c-10.784,3.552-20,8.64-27.616,15.168
+		c-7.648,6.56-12.896,13.568-15.872,20.96c-2.944,7.392-4.416,18.112-4.416,32.16L 201.216,251.712 L 160.032,251.712 l0,43.52 
+		c 12.064,3.904, 25.568,9.536, 34.144,16.864c 8.608,7.328, 15.52,16.096, 20.736,26.368C 220.096,348.672, 223.68,361.76, 225.664,377.6L 275.2,377.6 l0-76.8 l 76.768,0 L 351.968,243.2 z"  />
+<glyph unicode="&#xe0c6;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 256,292.608c-12.608,0-22.88-10.272-22.88-22.88l0-91.488 c0-37.824-30.784-68.608-68.608-68.608c-37.824,0-68.608,30.784-68.608,68.608L 95.904,224 l 45.728,0 
+		l0-45.728 c0-12.608, 10.272-22.88, 22.88-22.88c 12.608,0, 22.88,10.272, 22.88,22.88L 187.392,269.728 c0,37.824, 30.784,68.608, 68.608,68.608
+		s 68.608-30.784, 68.608-63.616l0-22.176 L 295.296,244L 278.848,252.576L 278.848,274.752 C 278.848,282.336, 268.576,292.608, 256,292.608z M 416.064,178.272
+		c0-37.824-30.784-68.608-68.608-68.608s-68.608,30.784-68.608,73.632L 278.848,227.584 l 16.448-8.576l 29.312,8.576l0-44.32 c0-17.6, 10.272-27.872, 22.88-27.872
+		s 22.88,10.272, 22.88,22.88L 370.368,224 l 45.728,0 L 416.096,178.272 z"  />
+<glyph unicode="&#xe0c7;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 58.88,224c0,27.84, 6.144,54.272, 17.088,78.112l 94.016-250.912C 104.224,82.336, 58.88,148, 58.88,224z M 256,32c-19.36,0-38.016,2.752-55.68,7.808
+		l 61.696,161.184l 58.048-155.456c 0.384-0.96, 0.896-1.824, 1.408-2.656C 300.992,35.84, 278.976,32, 256,32z M 283.104,314.016
+		C 294.976,314.624, 305.664,315.84, 305.664,315.84c 10.656,1.248, 9.376,16.416-1.248,15.84c0,0-31.936-2.432-52.544-2.432
+		c-19.36,0-51.904,2.432-51.904,2.432C 189.376,332.256, 188.128,316.448, 198.72,315.84c0,0, 10.048-1.216, 20.672-1.792l 30.72-81.984l-47.104-126.048
+		L 135.2,314.016C 147.072,314.624, 157.76,315.84, 157.76,315.84c 10.624,1.248, 9.376,16.416-1.248,15.84c0,0-31.936-2.432-52.544-2.432
+		c-3.68,0-8.064,0.096-12.672,0.224C 126.56,381.568, 187.136,416, 256,416c 51.328,0, 98.048-19.136, 133.12-50.4c-0.864,0.064-1.664,0.16-2.56,0.16
+		c-19.392,0-33.12-16.416-33.12-34.080c0-15.84, 9.376-29.216, 19.36-45.056c 7.52-12.8, 12.864-19.872, 12.864-43.584
+		c0-16.416-6.464-35.52-14.976-62.080l-19.68-63.968L 283.104,314.016z M 355.072,58.080l 60.224,169.536c 11.232,27.392, 14.976,49.28, 14.976,68.768
+		c0,7.072-0.448,13.632-1.312,19.744C 444.352,288.768, 453.12,257.376, 453.12,224C 453.12,153.152, 413.696,91.328, 355.072,58.080z"  />
+<glyph unicode="&#xe0c8;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 416,75.552C 416,69.184, 410.816,64, 404.448,64L 107.552,64 C 101.184,64, 96,69.184, 96,75.552L 96,372.448 C 96,378.816, 101.184,384, 107.552,384l 296.896,0 
+		C 410.816,384, 416,378.816, 416,372.448L 416,75.552 zM 320,352L 384,352L 384,288L 320,288zM 192,224A64,64 1260 1 1 320,224A64,64 1260 1 1 192,224zM 351.2,224c0-52.512-42.72-95.2-95.2-95.2S 160.8,171.488, 160.8,224c0,6.816, 0.8,9.568, 2.144,16L 128,240 L 128,96 l 256,0 L 384,240 
+		l-34.944,0 C 350.432,233.568, 351.2,230.816, 351.2,224z"  />
+<glyph unicode="&#xe0c9;" d="M 247.104,277.216C 219.968,325.44, 190.752,365.952, 186.432,371.872C 140.64,350.272, 106.4,308.064, 95.808,257.28
+		C 103.136,257.184, 170.56,256.896, 247.104,277.216zM 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 256,32.416c-105.632,0-191.584,85.952-191.584,191.584c0,105.632, 85.952,191.584, 191.584,191.584S 447.584,329.632, 447.584,224
+		C 447.584,118.368, 361.632,32.416, 256,32.416zM 267.424,222.336C 269.568,223.008, 271.712,223.68, 273.856,224.256C 269.76,233.568, 265.28,242.88, 260.608,252.032
+		C 178.88,227.584, 99.552,228.608, 92.384,228.768C 92.352,227.104, 92.32,225.44, 92.32,223.776c 0.032-42.048, 15.936-80.416, 42.080-109.44
+		C 138.112,120.672, 183.008,195.040, 267.424,222.336zM 291.264,262.72c 3.808-7.808, 7.456-15.744, 10.848-23.712c 1.184-2.816, 2.368-5.664, 3.52-8.448
+		c 54.464,6.848, 108.576-4.128, 113.952-5.28c-0.32,38.624-14.144,74.112-36.928,101.952C 379.232,322.592, 351.808,287.424, 291.264,262.72zM 283.936,196.832c-92.288-32.16-125.44-96.192-128.384-102.208c 27.744-21.632, 62.624-34.528, 100.448-34.528
+		c 22.688-0.032, 44.32,4.608, 63.936,12.992c-2.432,14.368-11.936,64.416-34.912,124.096C 284.64,197.088, 284.288,196.96, 283.936,196.832zM 364.48,346.176C 335.584,371.808, 297.6,387.424, 256,387.424c-13.184,0-26.048-1.568-38.336-4.544
+		C 222.176,376.8, 251.904,336.32, 278.72,287.072C 336.928,308.864, 361.536,341.984, 364.48,346.176zM 315.648,204.768c 21.408-58.816, 30.112-106.72, 31.776-116.672c 36.704,24.832, 62.848,64.16, 70.144,109.696
+		C 412,199.552, 366.944,212.992, 315.648,204.768z"  />
+<glyph unicode="&#xe0ca;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 408.064,293.664c-17.184-96.704-113.088-178.592-141.92-197.28c-28.864-18.688-55.168,7.488-64.736,27.296C 190.496,146.272, 157.76,268.736, 149.184,278.88
+		C 140.608,289.024, 114.88,268.736, 114.88,268.736L 102.4,285.088c0,0, 52.256,62.368, 92,70.208C 236.544,363.584, 236.48,290.56, 246.624,250.048
+		c 9.824-39.2, 16.384-61.632, 24.96-61.632c 8.576,0, 24.96,21.856, 42.88,55.36c 17.984,33.536-0.768,63.168-35.872,42.112
+		C 292.672,370.080, 425.216,390.336, 408.064,293.664z"  />
+<glyph unicode="&#xe0cb;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 192,100L 128,100 l0,224 l 64,0 L 192,100 z M 161.984,337.728c-16.576,0-29.984,13.44-29.984,30.016c0,16.576, 13.44,30.016, 29.984,30.016
+		C 178.56,397.728, 192,384.288, 192,367.744C 192,351.168, 178.56,337.728, 161.984,337.728z M 416,100l-64,0 L 352,238.496 c0,16.224-4.64,27.584-24.576,27.584
+		C 294.368,266.080, 288,238.496, 288,238.496l0-138.496 L 224,100 l0,224 l 64,0 l0-21.408 c 9.152,7.008, 32,21.376, 64,21.376c 20.768,0, 64-12.416, 64-87.424L 416,100 z"  />
+<glyph unicode="&#xe0cc;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 138.080,64.768c-23.008,0-41.696,18.56-41.696,41.536c0,22.848, 18.688,41.632, 41.696,41.632c 23.072,0, 41.728-18.784, 41.76-41.632
+		C 179.84,83.328, 161.184,64.768, 138.080,64.768z M 242.848,64.384c0,39.264-15.264,76.16-42.912,103.776C 172.288,195.872, 135.52,211.168, 96.448,211.168L 96.448,271.2 
+		c 113.952,0, 206.72-92.768, 206.72-206.816L 242.848,64.384 z M 349.376,64.416c0,139.584-113.44,253.152-252.864,253.152L 96.512,377.6 c 172.608,0, 313.088-140.544, 313.088-313.184
+		L 349.376,64.416 z"  />
+<glyph unicode="&#xe0cd;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 273.664,183.36L 233.184,256.352c 17.536,3.008, 32.704,3.776, 45.856,3.008l 22.976-36.704l 55.040,13.344c-21.632,21.184-61.152,41.088-133.408,28.224
+		C 222.048,263.936, 220.48,263.616, 218.944,263.328l 44.672-82.72l-160.864-44.192c-3.488,5.408-6.304,11.168-8.384,17.216
+		C 83.968,183.744, 92.512,214.656, 114.144,239.2c 13.088,14.688, 31.264,26.912, 53.376,35.456L 153.984,303.008c 12.032,3.84, 25.056,6.72, 38.88,8.576
+		l 14.208-26.336C 208.608,285.504, 210.144,285.76, 211.712,285.984c 42.784,6.464, 84.576,6.848, 123.136-2.208c 39.328-7.744, 75.424-24.928, 92.064-44.224
+		c 3.36-3.872, 5.888-7.904, 7.616-12.032L 273.664,183.36zM 148.736,185.536l 55.040,13.344L 179.168,250.336C 147.744,233.504, 143.776,208.192, 148.736,185.536z"  />
+<glyph unicode="&#xe0ce;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 309.152,165.984c 7.904,5.984, 17.76,9.568, 28.448,9.568c 26.112,0, 47.296-21.152, 47.296-47.296c0-26.112-21.184-47.296-47.296-47.296
+		c-26.112,0-47.264,21.152-47.264,47.296c0,0,0,0.032,0,0.032L 169.728,186.592c-7.392-4.768-16.16-7.584-25.6-7.584
+		c-26.112,0-47.296,21.184-47.296,47.296c0,26.112, 21.184,47.296, 47.296,47.296c 11.136,0, 21.344-3.872, 29.44-10.304L 290.304,319.68
+		c0,0,0,0.032,0,0.032c0,26.112, 21.184,47.296, 47.264,47.296c 26.112,0, 47.296-21.152, 47.296-47.296s-21.184-47.296-47.296-47.296
+		c-10.688,0-20.512,3.584-28.448,9.568L 191.36,225.088c0-0.704-0.064-1.44-0.096-2.144L 309.152,165.984z"  />
+<glyph unicode="&#xe0cf;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 265.088,352.256C 267.84,358.496, 271.552,364, 276.256,368.704c 4.736,4.736, 10.176,8.448, 16.448,11.2C 298.944,382.656, 305.76,384, 313.024,384
+		c 7.328,0, 14.080-1.344, 20.32-4.096c 6.24-2.72, 11.712-6.464, 16.416-11.2c 4.736-4.704, 8.48-10.208, 11.2-16.448
+		c 2.752-6.24, 4.128-12.992, 4.128-20.32c0-7.328-1.376-14.080-4.128-20.32c-2.72-6.24-6.464-11.712-11.2-16.448
+		c-4.736-4.704-10.176-8.448-16.416-11.2c-6.24-2.72-12.992-4.096-20.32-4.096c-7.296,0-14.080,1.376-20.32,4.096
+		c-6.24,2.752-11.712,6.464-16.448,11.2C 271.552,299.904, 267.84,305.376, 265.088,311.616C 262.336,317.856, 260.96,324.64, 260.96,331.936
+		C 260.96,339.264, 262.336,346.016, 265.088,352.256z M 184.032,360.512c 7.776,7.744, 17.12,11.616, 28.064,11.616c 11.264,0, 20.8-3.872, 28.544-11.616
+		C 248.416,352.736, 252.288,343.36, 252.288,332.384c0-11.264-3.904-20.768-11.68-28.544C 232.896,296.096, 223.36,292.224, 212.096,292.224
+		c-10.912,0-20.288,3.872-28.064,11.648c-7.776,7.776-11.68,17.28-11.68,28.544C 172.384,343.36, 176.256,352.736, 184.032,360.512z M 114.176,353.184
+		c 5.92,5.952, 13.152,8.928, 21.664,8.928c 8.544,0, 15.68-2.976, 21.472-8.928c 5.76-5.92, 8.64-12.992, 8.64-21.216
+		c0-8.544-2.912-15.744-8.64-21.696C 151.52,304.32, 144.384,301.344, 135.84,301.344c-8.512,0-15.744,2.976-21.664,8.896
+		C 108.224,316.192, 105.248,323.424, 105.248,331.936C 105.248,340.16, 108.224,347.264, 114.176,353.184z M 384,64L 243.36,64 l0,64 L 155.264,128 L 155.264,192 L 102.688,192 L 102.688,250.208 
+		c0,10.336-0.256,19.104, 6.912,26.24c 7.136,7.136, 15.904,10.72, 26.24,10.72c 8.832,0, 16.48-2.656, 22.848-8
+		c 6.4-5.344, 10.624-11.936, 12.8-19.872c 5.152,6.080, 11.264,10.784, 18.24,14.176c 7.008,3.328, 14.464,5.024, 22.368,5.024
+		c 12.48,0, 23.36-3.744, 32.672-11.2c 9.28-7.456, 15.456-16.832, 18.496-28.064c 6.4,6.080, 13.824,10.976, 22.4,14.592
+		c 8.512,3.648, 17.664,5.472, 27.392,5.472c 9.76,0, 18.976-1.824, 27.648-5.472c 8.64-3.648, 16.192-8.672, 22.592-15.072
+		c 6.4-6.4, 11.488-13.92, 15.264-22.592C 382.368,207.52, 384,198.304, 384,188.544L 384,64 z"  />
+<glyph unicode="&#xe0d0;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 325.408,72.608c-16.32,0-31.552,4.672-44.48,12.704c-8.32-1.504-16.864-2.368-25.664-2.368c-77.92,0-141.056,62.816-141.056,140.32
+		c0,7.52, 0.608,14.912, 1.76,22.112C 107.36,258.56, 102.4,274.304, 102.4,291.2c0,46.496, 37.664,84.16, 84.16,84.192c 16.96,0, 32.704-5.024, 45.952-13.664
+		c 7.36,1.216, 14.976,1.856, 22.72,1.856c 77.888,0, 141.056-62.848, 141.056-140.32c0-6.464-0.48-12.8-1.312-19.040
+		C 404.224,190.688, 409.6,174.368, 409.6,156.8C 409.6,110.304, 371.936,72.608, 325.408,72.608zM 237.568,250.272c-40.768,9.92-18.464,44.8, 14.56,44.288C 284.192,294.048, 300.48,260.192, 315.008,261.952
+		c 14.56,1.76, 26.944,23.552, 4.064,43.072C 299.296,321.92, 274.272,331.232, 235.808,327.744C 205.664,325.024, 177.024,305.6, 173.504,267.776
+		C 170.016,229.92, 214.88,210.688, 250.4,205.408c 24.896-3.648, 58.816-15.712, 38.432-39.008c-18.72-21.408-54.176-8.16-63.488-2.336
+		C 216.032,169.92, 205.536,190.88, 188.064,189.728c-17.504-1.184-26.112-24.128-4.64-44.288c 19.232-18.016, 40.192-27.968, 85.024-25.6
+		c 44.864,2.336, 85.056,41.92, 69.312,79.2S 278.336,240.384, 237.568,250.272z"  />
+<glyph unicode="&#xe0d1;" d="M 224,160L 320,224L 224,288 	zM 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 413.28,166.688c-1.728-21.312-17.888-48.512-40.544-52.448c-72.416-5.6-158.368-4.928-233.44,0c-23.424,2.944-38.816,31.168-40.544,52.448
+		c-3.648,44.736-3.648,70.208,0,114.944C 100.48,302.912, 116.256,330.976, 139.296,333.536c 74.208,6.24, 160.576,4.896, 233.44,0
+		c 26.112-0.96, 38.816-27.808, 40.544-49.12C 416.896,239.68, 416.896,211.424, 413.28,166.688z"  />
+<glyph unicode="&#xe0d2;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 256,416c 25.472,0, 49.76-4.96, 72-13.952L 328,268.16 L 191.328,404.832C 211.52,412.032, 233.312,416, 256,416z M 64,224c0,72.544, 40.192,135.648, 99.552,168.32l 60.288-60.32
+		l-154.24-154.208C 65.952,192.576, 64,208.064, 64,224z M 160,57.696c-35.488,20.512-63.776,52.064-80.192,89.952L 160,227.84L 160,57.696 z M 256,32
+		c-25.472,0-49.76,4.96-72,13.984L 184,128 l 238.304,0 C 389.088,70.624, 327.072,32, 256,32z M 434.016,152L 352,152 L 352,390.304 C 409.376,357.088, 448,295.072, 448,224
+		C 448,198.528, 443.040,174.24, 434.016,152z"  />
+<glyph unicode="&#xe0d3;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 305.376,352.288l 84.736-146.816L 291.392,205.472 L 206.624,352.288L 305.376,352.288 z M 107.904,181.248L 192.608,328l 49.344-85.536l-84.704-146.752L 107.904,181.248z
+		 M 354.72,95.712L 191.424,95.712 l 49.344,85.536l 163.328,0 L 354.72,95.712z"  />
+<glyph unicode="&#xe0d4;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 161.792,159.872c-35.872,0-64.928,29.056-64.928,64.928s 29.056,64.928, 64.928,64.928c 35.872,0, 64.928-29.056, 64.928-64.928
+		S 197.664,159.872, 161.792,159.872z M 350.88,159.872c-35.872,0-64.928,29.056-64.928,64.928s 29.056,64.928, 64.928,64.928
+		c 35.872,0, 64.928-29.056, 64.928-64.928S 386.752,159.872, 350.88,159.872z"  />
+<glyph unicode="&#xe0d5;" d="M 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 415.584,167.456c0-56.928-46.336-103.040-103.68-103.040L 200.192,64.416 c-57.28,0-103.808,46.112-103.808,103.008L 96.384,280.512 c 0.032,56.928, 46.496,103.072, 103.808,103.072
+		l 52.32,0 c 57.344,0, 103.232-42.816, 103.232-99.744c 0.768-10.656, 10.368-19.936, 21.312-19.936l 0.384,0 l 17.504,0 c 11.456,0, 20.64-12.032, 20.64-23.392L 415.584,167.456 zM 315.84,184.096L 196.16,184.096 c-10.976,0-19.936-8.992-19.936-19.936s 8.992-19.936, 19.936-19.936L 315.84,144.224 
+		c 10.976,0, 19.936,8.992, 19.936,19.936S 326.816,184.096, 315.84,184.096zM 196.16,263.904L 256,263.904 c 10.976,0, 19.936,8.992, 19.936,19.936c0,10.976-8.992,19.936-19.936,19.936L 196.16,303.776 
+		c-10.976,0-19.936-8.992-19.936-19.936C 176.192,272.864, 185.184,263.904, 196.16,263.904z"  />
+<glyph unicode="&#xe0d6;" d="M 362.528,204.512c-41.888,21.76-89.152,33.28-136.64,33.28c-26.496,0-52.864-3.52-78.304-10.464
+		c-8.192-2.24-13.024-16.224-10.784-24.416c 2.24-8.192, 10.688-13.024, 18.912-10.784c 22.784,6.208, 46.432,9.376, 70.176,9.376
+		c 43.2,0, 84.384-10.048, 122.464-29.824c 2.272-1.184, 4.672-1.728, 7.072-1.728c 5.568,0, 10.912,8.576, 13.664,13.824
+		C 372.992,191.296, 370.048,200.608, 362.528,204.512zM 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 256,32c-106.048,0-192,85.952-192,192c0,106.048, 85.952,192, 192,192s 192-85.952, 192-192C 448,117.952, 362.048,32, 256,32zM 225.856,314.72c-29.504,0-58.88-3.584-87.392-10.656C 129.024,301.728, 123.296,290.336, 125.632,280.928
+		s 11.872-15.168, 21.312-12.832c 25.728,6.368, 52.288,9.6, 78.944,9.6c 51.136,0, 100.128-11.488, 145.6-34.176c 2.528-1.248, 5.184-1.856, 7.84-1.856
+		c 6.464,0, 12.672,5.408, 15.776,11.584c 4.32,8.672, 0.8,19.264-7.904,23.584C 336.768,301.984, 282.496,314.72, 225.856,314.72zM 225.856,165.888c-23.776,0-47.264-3.552-69.824-10.496c-6.976-2.144-10.848-16.928-8.704-23.872
+		c 2.144-6.976, 9.536-10.88, 16.512-8.704c 20,6.208, 40.896,9.344, 62.016,9.344c 35.264,0, 70.176-8.96, 100.928-25.888
+		c 2.016-1.12, 4.192-1.632, 6.368-1.632c 4.672,0, 9.184,2.464, 11.552,6.848c 3.52,6.368, 1.216,21.792-5.184,25.312
+		C 304.896,155.808, 265.568,165.888, 225.856,165.888z"  />
+<glyph unicode="&#xe0d7;" d="M 256.192,352L 384,352L 384,223.648L 256.192,223.648zM 416,480L 96,480 C 42.976,480,0,437.024,0,384l0-320 c0-53.024, 42.976-96, 96-96l 320,0 c 53.024,0, 96,42.976, 96,96L 512,384 C 512,437.024, 469.024,480, 416,480z
+		 M 416,223.648L 416,80 l0-4.608 C 416,69.12, 410.88,64, 404.608,64L 400,64 L 256.192,64 L 112,64 C 103.168,64, 96,71.168, 96,80L 96,223.648 L 96,368 L 96,372.608 
+		C 96,378.88, 101.12,384, 107.392,384L 112,384 l 144.192,0 L 400,384 C 408.832,384, 416,376.832, 416,368L 416,223.648 zM 128,223.648L 256.192,223.648L 256.192,96L 128,96z"  />
+<glyph unicode="&#xe103;" d="M 480,320l-32,0 L 448,448 c0,17.664-14.336,32-32,32L 96,480 C 78.336,480, 64,465.664, 64,448l0-128 L 32,320 C 14.336,320,0,305.664,0,288l0-160 c0-17.664, 14.336-32, 32-32l 32,0 l0-96 
+		c0-17.664, 14.336-32, 32-32l 320,0 c 17.664,0, 32,14.336, 32,32l0,96 l 32,0 c 17.664,0, 32,14.336, 32,32L 512,288 C 512,305.664, 497.664,320, 480,320z M 96,160l 320,0 l0-160 L 96,0 L 96,160 z M 416,192L 96,192 
+		c-17.664,0-32-14.336-32-32l0-32 L 32,128 L 32,288 l 448,0 l0-160 l-32,0 l0,32 C 448,177.664, 433.664,192, 416,192z M 96,448l 320,0 l0-128 L 96,320 L 96,448 zM 352,240A16,16 180 1 1 384,240A16,16 180 1 1 352,240zM 64,240A16,16 180 1 1 96,240A16,16 180 1 1 64,240zM 416,240A16,16 180 1 1 448,240A16,16 180 1 1 416,240zM 384,112c0,8.832-7.168,16-16,16l-224,0 C 135.168,128, 128,120.832, 128,112C 128,103.168, 135.168,96, 144,96l 224,0 
+		C 376.832,96, 384,103.168, 384,112zM 368,64l-224,0 C 135.168,64, 128,56.832, 128,48C 128,39.168, 135.168,32, 144,32l 224,0 c 8.832,0, 16,7.168, 16,16
+		C 384,56.832, 376.832,64, 368,64z"  />
+<glyph unicode="&#xe0ee;" d="M 96-32l 320,0 c 17.664,0, 32,14.336, 32,32L 448,448 c0,17.664-14.336,32-32,32L 96,480 C 78.336,480, 64,465.664, 64,448l0-448 C 64-17.664, 78.336-32, 96-32z
+		 M 96,448l 320,0 l0-448 L 96,0 L 96,448 zM 352,416L 160,416 C 142.336,416, 128,401.664, 128,384l0-32 c0-17.664, 14.336-32, 32-32l 192,0 c 17.664,0, 32,14.336, 32,32L 384,384 C 384,401.664, 369.664,416, 352,416z M 352,352
+		L 160,352 L 160,384 l 192,0 L 352,352 zM 128,256A32,32 180 1 1 192,256A32,32 180 1 1 128,256zM 128,160A32,32 180 1 1 192,160A32,32 180 1 1 128,160zM 128,64A32,32 180 1 1 192,64A32,32 180 1 1 128,64zM 224,256A32,32 180 1 1 288,256A32,32 180 1 1 224,256zM 224,160A32,32 180 1 1 288,160A32,32 180 1 1 224,160zM 224,64A32,32 180 1 1 288,64A32,32 180 1 1 224,64zM 320,256A32,32 180 1 1 384,256A32,32 180 1 1 320,256zM 320,160A32,32 180 1 1 384,160A32,32 180 1 1 320,160zM 320,64A32,32 180 1 1 384,64A32,32 180 1 1 320,64z"  />
+<glyph unicode="&#xe0ef;" d="M 320,416L 352,416L 352,384L 320,384zM 384,416L 416,416L 416,384L 384,384zM 320,352L 352,352L 352,320L 320,320zM 384,352L 416,352L 416,320L 384,320zM 320,288L 352,288L 352,256L 320,256zM 384,288L 416,288L 416,256L 384,256zM 320,224L 352,224L 352,192L 320,192zM 384,224L 416,224L 416,192L 384,192zM 320,160L 352,160L 352,128L 320,128zM 384,160L 416,160L 416,128L 384,128zM 448,480L 288,480 C 270.336,480, 256,465.664, 256,448l0-96 L 96,352 C 78.336,352, 64,337.664, 64,320l0-320 c0-17.664, 14.336-32, 32-32l 352,0 c 17.664,0, 32,14.336, 32,32L 480,448 
+			C 480,465.664, 465.664,480, 448,480z M 192,0L 160,0 l0,64 l 32,0 L 192,0 z M 224,0l0,64 l0,32 L 192,96 L 160,96 L 128,96 l0-32 l0-64 L 96,0 L 96,320 l 160,0 l0-320 L 224,0 z M 384,0l-32,0 l0,64 l 32,0 L 384,0 z M 448,0l-32,0 l0,64 l0,32 l-32,0 l-32,0 l-32,0 l0-96 L 288,0 L 288,320 
+			L 288,448 l 160,0 L 448,0 zM 128,288L 160,288L 160,256L 128,256zM 192,288L 224,288L 224,256L 192,256zM 128,224L 160,224L 160,192L 128,192zM 192,224L 224,224L 224,192L 192,192zM 128,160L 160,160L 160,128L 128,128zM 192,160L 224,160L 224,128L 192,128z"  />
+<glyph unicode="&#xe0e8;" d="M 384,480l-64,0 L 128,480 L 32,480 C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,384 l-96,96L 384,480 z M 384,448l0-128 l-64,0 L 320,448 
+		L 384,448 z M 288,448l0-128 L 128,320 L 128,448 L 288,448 z M 128,0L 128,192 l 256,0 l0-192 L 128,0 z M 480,0l-64,0 L 416,192 c0,17.664-14.336,32-32,32L 128,224 C 110.336,224, 96,209.664, 96,192l0-192 L 32,0 L 32,448 l 64,0 l0-128 c0-17.664, 14.336-32, 32-32l 192,0 l 64,0 
+		c 17.664,0, 32,14.336, 32,32L 416,434.752 l 64-64L 480,0 z"  />
+<glyph unicode="&#xe0ea;" d="M 480,416c-1.984,31.328-28.64,64-64,64L 96,480 C 60.64,480, 33.984,447.328, 32,416L0,73.344c0-1.504, 0.352-3.36, 0.448-4.96
+		C 0.352,66.912,0,65.504,0,64l0-32 c0-35.36, 28.64-64, 64-64l 384,0 c 35.36,0, 64,28.64, 64,64l0,32 c0,1.504-0.352,2.912-0.448,4.352
+		C 511.648,69.984, 512,71.84, 512,73.344L 480,416z M 32,32l0,32 c0,17.632, 14.368,32, 32,32l 384,0 c 17.632,0, 32-14.368, 32-32l0-32 c0-17.632-14.368-32-32-32L 64,0 
+		C 46.368,0, 32,14.368, 32,32z M 63.936,413.952C 64.928,429.696, 79.168,448, 96,448l 320,0 c 16.832,0, 31.072-18.304, 32.128-34.976l 27.2-291.392
+		C 467.040,125.6, 457.824,128, 448,128L 64,128 c-9.824,0-19.040-2.4-27.36-6.368L 63.936,413.952zM 416,48A16,16 180 1 1 448,48A16,16 180 1 1 416,48zM 352,48A16,16 180 1 1 384,48A16,16 180 1 1 352,48zM 80,32l 224,0 c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16l-224,0 C 71.168,64, 64,56.832, 64,48
+		C 64,39.168, 71.168,32, 80,32z"  />
+<glyph unicode="&#xe101;" d="M 32,0l 288,0 c 17.664,0, 32,14.336, 32,32l0,43.2 c 6.816,3.264, 13.184,7.168, 19.168,11.68l 98.208-98.208
+		c 3.136-3.136, 7.232-4.672, 11.328-4.672s 8.192,1.568, 11.328,4.672c 6.24,6.24, 6.24,16.384,0,22.624l-98.272,98.272
+		C 407.552,128.192, 416,151.040, 416,176c0,44.608-26.272,82.784-64,100.8L 352,448 c0,17.664-14.336,32-32,32L 32,480 C 14.336,480,0,465.664,0,448l0-416 
+		C0,14.336, 14.336,0, 32,0z M 304,96C 259.904,96, 224,131.904, 224,176S 259.904,256, 304,256S 384,220.096, 384,176S 348.096,96, 304,96z M 32,448l 288,0 l0-160 L 84.576,288 
+		C 73.216,288, 64,280.832, 64,272C 64,263.168, 73.216,256, 84.576,256l 141.216,0 C 208.608,239.232, 197.216,216.896, 193.6,192L 80,192 C 71.168,192, 64,184.832, 64,176
+		C 64,167.168, 71.168,160, 80,160l 113.6,0 c 7.84-54.208, 54.016-96, 110.4-96c 5.472,0, 10.72,0.864, 16,1.6L 320,32 L 32,32 L 32,448 zM 80,352l 192,0 C 280.832,352, 288,359.168, 288,368C 288,376.832, 280.832,384, 272,384l-192,0 C 71.168,384, 64,376.832, 64,368C 64,359.168, 71.168,352, 80,352z"  />
+<glyph unicode="&#xe107;" d="M 480,384L 32,384 C 14.336,384,0,369.664,0,352l0-288 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,352 C 512,369.664, 497.664,384, 480,384z M 32,352
+		l 448,0 l0-288 L 32,64 L 32,352 zM 434.656,224L 240,224 C 231.168,224, 224,216.832, 224,208C 224,199.168, 231.168,192, 240,192l 194.656,0 c 8.832,0, 16,7.168, 16,16
+		C 450.656,216.832, 443.488,224, 434.656,224zM 434.656,160L 240,160 C 231.168,160, 224,152.832, 224,144C 224,135.168, 231.168,128, 240,128l 194.656,0 c 8.832,0, 16,7.168, 16,16
+		C 450.656,152.832, 443.488,160, 434.656,160zM 434.656,288L 240,288 C 231.168,288, 224,280.832, 224,272C 224,263.168, 231.168,256, 240,256l 194.656,0 c 8.832,0, 16,7.168, 16,16
+		C 450.656,280.832, 443.488,288, 434.656,288zM 89.28,281.344A38.656,38.656 180 1 1 166.592,281.344A38.656,38.656 180 1 1 89.28,281.344zM 128.768,227.232c-34.944,0-63.232-37.952-63.232-84.8S 192,95.616, 192,142.432S 163.68,227.232, 128.768,227.232z"  />
+<glyph unicode="&#xe108;" d="M 480,384l-160,0 l0-64 c0-17.664-14.336-32-32-32l 16,0 C 330.496,288, 352,309.504, 352,336c0,6.080-0.096,11.36-0.288,16L 480,352 l0-352 L 32,0 L 32,352 
+		l 128.288,0 C 160.096,347.36, 160,342.080, 160,336C 160,309.504, 181.504,288, 208,288L 224,288 C 206.336,288, 192,302.336, 192,320L 192,384 L 32,384 C 14.336,384,0,369.664,0,352l0-352 c0-17.664, 14.336-32, 32-32l 448,0 
+		c 17.664,0, 32,14.336, 32,32L 512,352 C 512,369.664, 497.664,384, 480,384zM 434.656,160L 240,160 C 231.168,160, 224,152.832, 224,144C 224,135.168, 231.168,128, 240,128l 194.656,0 c 8.832,0, 16,7.168, 16,16
+		C 450.656,152.832, 443.488,160, 434.656,160zM 434.656,96L 240,96 C 231.168,96, 224,88.832, 224,80C 224,71.168, 231.168,64, 240,64l 194.656,0 c 8.832,0, 16,7.168, 16,16
+		C 450.656,88.832, 443.488,96, 434.656,96zM 240,192l 194.656,0 c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16L 240,224 C 231.168,224, 224,216.832, 224,208
+		C 224,199.168, 231.168,192, 240,192zM 89.28,217.344A38.656,38.656 180 1 1 166.592,217.344A38.656,38.656 180 1 1 89.28,217.344zM 128.768,163.232c-34.944,0-63.232-37.952-63.232-84.8S 192,31.616, 192,78.432S 163.68,163.232, 128.768,163.232zM 192,320c0-17.664, 14.336-32, 32-32l 64,0 c 17.664,0, 32,14.336, 32,32L 320,384 L 320,448 c0,17.664-14.336,32-32,32L 224,480 C 206.336,480, 192,465.664, 192,448l0-64 L 192,320 z M 288,320
+		L 224,320 L 224,448 l 64,0 L 288,320 z"  />
+<glyph unicode="&#xe102;" d="M 179.968,104.896c-14.4,0-27.808,5.632-37.76,15.84c-27.392,28.224-61.344,15.904-69.376-21.472
+		c-12.96-60.48-11.712-99.232, 3.84-118.496c 8.928-11.072, 19.424-11.904, 22.4-11.904L 432.992-32c 43.456,0, 78.848,34.048, 78.848,75.904l0,209.6 
+		l 0.096,10.016c 0.288,25.76, 0.608,52.384-13.088,66.208c-9.056,9.184-22.112,11.136-36.896,4.832c-27.328-11.68-56.96-13.248-95.456-5.696
+		c-9.632,1.92-13.44,5.056-13.312,4.64c0,0.032, 0.64,2.848, 6.432,7.968c 17.216,15.264, 27.104,36.704, 27.104,58.944
+		C 386.688,444.32, 349.6,480, 304,480C 258.432,480, 221.344,444.32, 221.344,400.448c0-21.824, 9.984-42.304, 29.664-60.96
+		C 251.936,338.56, 253.824,336.768, 255.296,335.104c-3.2-1.568-9.568-3.872-21.728-5.92C 201.76,323.84, 170.432,331.392, 146.464,337.056
+		C 119.712,343.36, 102.688,345.44, 92.8,335.392c-11.072-11.2-35.104-45.472-19.872-122.464c 2.304-11.776, 9.408-47.616, 36.64-47.616
+		c 13.472,0, 23.552,9.76, 29.792,15.744c 39.616,38.112, 91.296,10.848, 91.296-28.608C 230.624,126.24, 207.904,104.896, 179.968,104.896z M 179.968,232.032
+		c-22.4,0-43.52-9.376-63.616-28.672C 115.264,202.272, 112.832,199.968, 110.88,198.496C 109.312,201.184, 106.72,207.072, 104.32,219.136
+		C 92.8,277.376, 107.456,302.976, 113.728,310.816C 119.136,310.656, 128.832,308.352, 139.136,305.92c 19.872-4.672, 44.608-10.496, 71.936-10.496
+		c 9.6,0, 18.976,0.736, 27.808,2.208C 257.184,300.704, 282.208,307.008, 288,325.984c 5.312,17.472-8.928,30.976-15.072,36.768
+		C 259.744,375.264, 253.344,387.552, 253.344,400.448C 253.344,426.656, 276.064,448, 304,448s 50.688-21.344, 50.688-47.552c0-13.248-5.792-25.664-16.288-34.944
+		c-17.984-15.872-18.752-30.24-16.224-39.488c 3.808-14.080, 17.728-24.48, 38.080-28.48c 44.8-8.768, 81.088-6.496, 114.24,7.616
+		c 1.024,0.48, 1.824,0.704, 2.24,0.928c 3.552-7.168, 3.296-30.56, 3.168-42.176l-0.096-220c0-24.192-20.992-43.904-46.816-43.904
+		l-330.88,0.288c-0.16,0.128-15.040,13.184, 1.984,92.256c 1.76,8.288, 5.024,11.968, 5.856,12.352c0,0, 3.2-0.16, 9.28-6.432
+		c 16-16.48, 37.568-25.536, 60.672-25.536c 45.568,0, 82.656,35.68, 82.656,79.552S 225.536,232.032, 179.968,232.032z"  />
+<glyph unicode="&#xe106;" d="M 433.6,320c0,0-121.952,0-145.6,0L 288,403.008 c 1.152,44.928-8.992,76.928-47.008,76.928C 200,479.936, 192,445.92, 192,445.92
+		C 184.512,325.44, 64,288, 64,288l0-256 l 46.752-1.984C 231.808,30.016, 159.168-32, 358.080-32C 509.12-32, 512,100.928, 512,192S 470.496,320, 433.6,320z M 358.080,0
+		c-101.056,0-122.464,16.096-141.376,30.304c-23.904,17.952-46.848,31.68-104.384,31.68c-0.064,0-0.128,0-0.192,0L 96,62.656L 96,266.496 
+		C 135.904,285.12, 215.2,335.040, 223.648,439.84c 1.248,2.56, 5.376,8.096, 17.344,8.096c 2.848,0, 6.528-0.32, 8.096-1.92
+		C 250.4,444.704, 256.832,436.384, 256,403.008L 256,320 l0-32 l 32,0 l 145.6,0 C 456.672,288, 480,255.040, 480,192C 480,67.488, 460.576,0, 358.080,0zM 16,0C 24.832,0, 32,7.168, 32,16L 32,302.656 c0,8.832-7.168,16-16,16S0,311.488,0,302.656L0,16 
+		C0,7.168, 7.168,0, 16,0z"  />
+<glyph unicode="&#xe0eb;" d="M 78.4,127.936c0,0, 121.952,0, 145.6,0l0-83.008 C 222.88,0.032, 232.992-32, 271.008-32C 312-32, 320,2.016, 320,2.016
+		c 7.488,120.48, 128,157.92, 128,157.92l0,256 l-46.752,1.984c-121.056,0-48.416,62.016-247.328,62.016c-151.040,0-153.92-132.928-153.92-224
+		S 41.504,127.936, 78.4,127.936z M 153.92,447.936c 101.056,0, 122.464-16.096, 141.376-30.304c 23.872-17.952, 46.848-31.68, 104.384-31.68
+		c 0.064,0, 0.128,0, 0.192,0L 416,385.28l0-203.808 c-39.904-18.656-119.2-68.544-127.648-173.376C 287.104,5.536, 282.976,0, 271.008,0
+		c-2.848,0-6.528,0.32-8.096,1.92C 261.6,3.264, 255.168,11.552, 256,44.928l0,83.008 l0,32 L 224,159.936 L 78.4,159.936 c-23.072,0-46.4,32.96-46.4,96
+		C 32,380.448, 51.424,447.936, 153.92,447.936zM 496,447.936c-8.832,0-16-7.168-16-16l0-286.656 c0-8.832, 7.168-16, 16-16s 16,7.168, 16,16L 512,431.936 
+		C 512,440.768, 504.832,447.936, 496,447.936z"  />
+<glyph unicode="&#xe105;" d="M 414.24,319.936c 0.896,13.376, 1.44,24.224, 1.728,30.72c 0.352,8.704-2.848,17.184-8.864,23.488S 392.704,384, 384,384L 32,384 
+		C 23.296,384, 14.944,380.448, 8.896,374.144S-0.32,359.36, 0.032,350.656c 1.76-42.272, 13.664-255.936, 74.624-310.496C 80.512,34.912, 88.128,32, 96,32l 224,0 
+		c 7.872,0, 15.488,2.912, 21.344,8.16c 19.104,17.12, 33.408,49.856, 44.064,88.064c 15.84,0.064, 26.784,0.096, 28.064,0.096
+		c 54.432,0, 98.56,39.68, 98.56,95.84C 512,300.416, 446.080,319.648, 414.24,319.936z M 320,64L 96,64 c-53.984,48.32-64,288-64,288l 352,0 C 384,352, 373.984,112.32, 320,64z
+		 M 413.44,160.32l-10.080-0.032c-2.88,0-6.304-0.032-10.176-0.032c 9.536,43.808, 15.264,90.56, 18.56,127.744l 1.696,0 C 416.16,288, 480,287.264, 480,224.16
+		C 480,187.168, 452,160.32, 413.44,160.32z"  />
+<glyph unicode="&#xe0ed;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 272,0
+		C 157.312,0, 64,93.312, 64,208S 157.312,416, 272,416S 480,322.688, 480,208S 386.688,0, 272,0zM 299.424,320C 328.416,320, 352,298.464, 352,272C 352,263.168, 359.168,256, 368,256S 384,263.168, 384,272C 384,316.128, 346.048,352, 299.424,352L 288,352 
+		L 288,368 C 288,376.832, 280.832,384, 272,384S 256,376.832, 256,368L 256,352 L 244.576,352 C 197.952,352, 160,316.128, 160,272S 197.952,192, 244.576,192L 256,192 l0-96 L 244.576,96 C 215.584,96, 192,117.536, 192,144
+		C 192,152.832, 184.832,160, 176,160S 160,152.832, 160,144C 160,99.872, 197.952,64, 244.576,64L 256,64 l0-16 C 256,39.168, 263.168,32, 272,32S 288,39.168, 288,48L 288,64 l 11.424,0 
+		C 346.048,64, 384,99.872, 384,144S 346.048,224, 299.424,224L 288,224 L 288,320 L 299.424,320 z M 299.424,192C 328.416,192, 352,170.464, 352,144S 328.416,96, 299.424,96L 288,96 L 288,192 L 299.424,192 z M 256,224
+		L 244.576,224 C 215.584,224, 192,245.536, 192,272S 215.584,320, 244.576,320L 256,320 L 256,224 z"  />
+<glyph unicode="&#xe100;" d="M 480,256L 480,352 c0,17.664-14.336,32-32,32l-9.536,0 l-10.784,66.56c-0.672,4.192-2.976,7.936-6.432,10.4
+		c-3.392,2.496-7.68,3.552-11.904,2.816L 61.44,407.328C 52.704,405.92, 46.784,397.696, 48.224,388.96L 49.024,384L 32,384 C 14.336,384,0,369.664,0,352l0-352 
+		c0-17.664, 14.336-32, 32-32l 416,0 c 17.664,0, 32,14.336, 32,32l0,96 c 17.664,0, 32,14.336, 32,32L 512,224 C 512,241.664, 497.664,256, 480,256z M 32,352l 416,0 l0-96 l-128,0 C 302.336,256, 288,241.664, 288,224
+		l0-96 c0-17.664, 14.336-32, 32-32l 128,0 l0-96 L 32,0 L 32,352 z M 117.376,384l 281.28,45.664L 406.048,384L 117.376,384 z M 320,128L 320,224 l 160,0 l0-96 L 320,128 zM 352,176A16,16 180 1 1 384,176A16,16 180 1 1 352,176z"  />
+<glyph unicode="&#xe104;" d="M 64,384l0-256 l 4.736-11.84L 128-32l 64,160l-0.16,0.064C 191.936,128.16, 191.904,128.32, 192,128.416L 192,384 L 192,416 c0,35.36-28.64,64-64,64
+		S 64,451.36, 64,416L 64,384 z M 96,416c0,17.632, 14.368,32, 32,32s 32-14.368, 32-32l0-32 L 96,384 L 96,416 z M 128,54.176l-16.48,41.184l-6.4,16L 104.64,112.544L 128,124.224l 23.36-11.68
+		l-0.48-1.216l-6.4-16L 128,54.176z M 160,144L 128,160l-32-16L 96,328.864 L 96,348.48 L 96,352 l 32,0 l 32,0 l0-3.52 l0-19.616 L 160,144 zM 402.944,384.672L 372.288,464l-0.288-0.096C 369.76,473.056, 361.856,480, 352,480c-10.592,0-18.944-7.936-20.416-18.112
+		l-0.576,0.128L 301.056,384.672L 288,352l0-320 c0-35.36, 28.64-64, 64-64s 64,28.64, 64,64c 17.664,0, 32,14.336, 32,32l0,96 c0,17.664-14.336,32-32,32L 416,352 L 402.944,384.672z
+		 M 384,160l0-96 l0-32 c0-17.632-14.368-32-32-32s-32,14.368-32,32L 320,352 l 2.464,0 l 59.072,0 L 384,352 l0-160 L 384,160 z M 368.736,384l-33.472,0 L 352,425.824L 368.736,384z"  />
+<glyph unicode="&#xe0e9;" d="M 144.48,216c 4.736,0, 9.472,2.112, 12.64,6.176l 70.464,90.72l 48.256-56.672c 3.072-3.552, 6.528-5.12, 12.256-5.632
+		C 292.736,250.624, 297.216,252.672, 300.256,256.32l 112,133.408c 5.696,6.752, 4.8,16.832-1.984,22.528c-6.752,5.728-16.832,4.768-22.528-1.984
+		l-99.84-118.912L 239.2,348.64C 236.032,352.288, 230.208,353.984, 226.656,354.24C 221.824,354.112, 217.312,351.872, 214.368,348.064L 131.84,241.824
+		C 126.4,234.848, 127.68,224.768, 134.656,219.36C 137.568,217.088, 141.024,216, 144.48,216zM 495.648,480L 448,480 L 96,480 L 48.352,480 C 39.328,480, 32,472.832, 32,464C 32,455.168, 39.328,448, 48.352,448L 64,448 l0-288 c0-17.664, 14.336-32, 32-32l 160,0 l0-49.952 
+		L 165.248-4.16c-6.528-5.92-7.040-16.032-1.088-22.592c 5.984-6.528, 16.096-7.040, 22.592-1.088L 256,34.88l0-50.88 C 256-24.832, 263.168-32, 272-32
+		S 288-24.832, 288-16l0,50.88 l 69.248-62.72C 360.32-30.624, 364.16-32, 368-32c 4.352,0, 8.672,1.792, 11.84,5.248
+		c 5.952,6.56, 5.44,16.672-1.088,22.592L 288,78.048L 288,128 l 160,0 c 17.664,0, 32,14.336, 32,32L 480,448 l 15.648,0 C 504.672,448, 512,455.168, 512,464
+		C 512,472.832, 504.672,480, 495.648,480z M 448,160L 96,160 L 96,448 l 352,0 L 448,160 z"  />
+<glyph unicode="&#xe109;" d="M 480,160L 480,224 c0,17.664-14.336,32-32,32L 288,256 L 288,320 l 96,0 c 17.664,0, 32,14.336, 32,32L 416,384 c0,17.664-14.336,32-32,32L 160,416 C 142.336,416, 128,401.664, 128,384l0-32 
+		c0-17.664, 14.336-32, 32-32l 96,0 l0-64 L 96,256 C 78.336,256, 64,241.664, 64,224l0-64 c-17.664,0-32-14.336-32-32l0-64 c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l0,32 l0,32 
+		c0,17.664-14.336,32-32,32L 96,224 l 160,0 l0-64 c-17.664,0-32-14.336-32-32l0-32 l0-32 c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l0,32 l0,32 c0,17.664-14.336,32-32,32L 288,224 l 160,0 l0-64 
+		c-17.664,0-32-14.336-32-32l0-32 l0-32 c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l0,64 C 512,145.664, 497.664,160, 480,160z M 160,384l 224,0 l0-32 L 160,352 L 160,384 z M 96,96l0-32 L 64,64 l0,64 l 32,0 
+		L 96,96 z M 288,64L 256,64 l0,64 l 32,0 L 288,64 z M 448,96l0,32 l 32,0 l0-64 l-32,0 L 448,96 z"  />
+<glyph unicode="&#xe0ec;" d="M 32,0c0-17.664, 14.336-32, 32-32l 384,0 c 17.664,0, 32,14.336, 32,32L 480,448 c0,17.664-14.336,32-32,32L 64,480 C 46.336,480, 32,465.664, 32,448L 32,0 z M 64,448
+		l 384,0 l0-448 L 64,0 L 64,448 zM 128,192L 192,192L 192,64L 128,64zM 224,352L 288,352L 288,64L 224,64zM 320,288L 384,288L 384,64L 320,64z"  />
+<glyph unicode="&#xe0fe;" d="M 480,352l-96,0 L 384,416 c0,17.664-14.336,32-32,32L 160,448 C 142.336,448, 128,433.664, 128,416l0-64 L 32,352 C 14.336,352,0,337.664,0,320l0-288 c0-17.664, 14.336-32, 32-32l 448,0 
+		c 17.664,0, 32,14.336, 32,32L 512,320 C 512,337.664, 497.664,352, 480,352z M 32,320l 128,0 l 192,0 l 128,0 l0-288 L 32,32 L 32,320 z M 160,416l 192,0 l0-64 L 160,352 L 160,416 z"  />
+<glyph unicode="&#xe0f6;" d="M 247.2-30.752C 250.080-31.584, 253.056-32, 256-32s 5.92,0.416, 8.8,1.248c 198.048,56.576, 227.2,256.768, 214.976,354.752
+		C 477.76,339.968, 464.128,352, 448,352c-4.576,0.352-32,5.088-32,64c0,8.48-3.36,16.64-9.376,22.624C 399.712,445.536, 360,480, 256,480
+		S 112.288,445.536, 105.376,438.624C 99.36,432.64, 96,424.48, 96,416c0-58.912-27.424-63.648-32.928-64.032c-16.128,0-28.832-12-30.848-28
+		C 20,226.016, 49.184,25.824, 247.2-30.752z M 64,320c0,0, 64,0, 64,96c0,0, 32,32, 128,32s 128-32, 128-32c0-96, 64-96, 64-96s 32-256-192-320C 32,64, 64,320, 64,320zM 256,160c 17.664,0, 32,14.336, 32,32L 288,352 c0,17.664-14.336,32-32,32S 224,369.664, 224,352l0-160 C 224,174.336, 238.336,160, 256,160zM 224,96A32,32 180 1 1 288,96A32,32 180 1 1 224,96z"  />
+<glyph unicode="&#xe0fb;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,0c-123.52,0-224,100.48-224,224s 100.48,224, 224,224
+		s 224-100.48, 224-224S 379.52,0, 256,0zM 225.984,304.992c0,27.072-21.952,48.992-48.992,48.992S 128,332.064, 128,304.992S 149.952,256, 176.992,256S 225.984,277.952, 225.984,304.992z
+		 M 160,304.992c0,9.376, 7.616,16.992, 16.992,16.992s 16.992-7.616, 16.992-16.992S 186.368,288, 176.992,288S 160,295.616, 160,304.992zM 335.008,193.984c-27.072,0-48.992-21.952-48.992-48.992S 307.936,96, 335.008,96S 384,117.952, 384,144.992
+		S 362.048,193.984, 335.008,193.984z M 335.008,128c-9.376,0-16.992,7.616-16.992,16.992s 7.616,16.992, 16.992,16.992S 352,154.368, 352,144.992
+		S 344.384,128, 335.008,128zM 363.328,331.328c-6.24,6.24-16.384,6.24-22.624,0l-192-192c-6.24-6.24-6.24-16.384,0-22.624
+		C 151.808,113.568, 155.904,112, 160,112s 8.192,1.568, 11.328,4.672l 192,192C 369.568,314.944, 369.568,325.056, 363.328,331.328z"  />
+<glyph unicode="&#xe0e2;" d="M 481.888,133.792c-87.136-87.104-228.928-87.168-316.064,0C 123.648,175.936, 100.448,232.064, 100.448,291.84
+		s 23.232,115.904, 65.344,158.016c 6.24,6.24, 6.24,16.384,0,22.624s-16.384,6.24-22.624,0C 94.976,424.32, 68.448,360.16, 68.448,291.84
+		s 26.56-132.512, 74.72-180.672C 183.84,70.464, 234.976,46.688, 288,39.232L 288,0 L 240,0 C 231.168,0, 224-7.168, 224-16C 224-24.832, 231.168-32, 240-32l 128,0 
+		c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16L 320,0 l0,36.608 c 1.28-0.032, 2.56-0.192, 3.84-0.192
+		c 65.408,0, 130.848,24.896, 180.672,74.72c 6.24,6.24, 6.24,16.384,0,22.624S 488.128,140.032, 481.888,133.792zM 323.84,480C 219.904,480, 135.68,395.744, 135.68,291.84s 84.256-188.16, 188.16-188.16S 512,187.904, 512,291.84S 427.744,480, 323.84,480z
+		 M 323.84,135.68c-86.112,0-156.16,70.048-156.16,156.16C 167.68,377.952, 237.728,448, 323.84,448C 409.952,448, 480,377.952, 480,291.84
+		C 480,205.728, 409.952,135.68, 323.84,135.68z"  />
+<glyph unicode="&#xe0e3;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 447.008,320l-47.68,0 
+		c-9.28,29.184-22.016,54.752-37.376,75.264C 396.768,378.464, 426.24,352.32, 447.008,320z M 288,320L 288,413.376 C 318.24,404.448, 347.712,370.912, 365.856,320L 288,320 z
+		 M 375.168,288c 4.512-19.584, 7.424-41.024, 8.352-64L 288,224 L 288,288 L 375.168,288 z M 256,413.376L 256,320 L 178.144,320 C 196.288,370.912, 225.76,404.448, 256,413.376z M 256,288l0-64 L 160.48,224 
+		c 0.928,22.976, 3.84,44.416, 8.352,64L 256,288 z M 128.48,224l-63.68,0 c 1.728,22.496, 6.88,44.064, 15.232,64l 56.32,0 C 132.064,267.744, 129.376,246.336, 128.48,224z
+		 M 128.48,192c 0.896-22.336, 3.584-43.744, 7.872-64l-56.32,0 c-8.352,19.936-13.504,41.504-15.232,64L 128.48,192 z M 160.48,192L 256,192 l0-64 L 168.832,128 
+		C 164.32,147.584, 161.408,169.024, 160.48,192z M 256,96l0-93.376 C 225.76,11.552, 196.288,45.088, 178.144,96L 256,96 z M 288,2.624L 288,96 l 77.856,0 
+		C 347.712,45.088, 318.24,11.552, 288,2.624z M 288,128L 288,192 l 95.52,0 c-0.928-22.976-3.84-44.416-8.352-64L 288,128 z M 415.52,192l 63.68,0 
+		c-1.728-22.496-6.88-44.064-15.232-64l-56.32,0 C 411.936,148.256, 414.624,169.664, 415.52,192z M 415.52,224c-0.896,22.336-3.584,43.744-7.872,64l 56.32,0 
+		c 8.352-19.936, 13.504-41.504, 15.232-64L 415.52,224 z M 182.048,395.264C 166.72,374.752, 153.952,349.184, 144.672,320l-47.68,0 C 117.76,352.32, 147.232,378.464, 182.048,395.264z
+		 M 96.992,96l 47.68,0 c 9.28-29.184, 22.016-54.752, 37.376-75.264C 147.232,37.536, 117.76,63.68, 96.992,96z M 361.952,20.736
+		c 15.328,20.512, 28.096,46.080, 37.376,75.264l 47.68,0 C 426.24,63.68, 396.768,37.536, 361.952,20.736z"  />
+<glyph unicode="&#xe0f5;" d="M 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 256,0c-123.52,0-224,100.48-224,224s 100.48,224, 224,224
+		s 224-100.48, 224-224S 379.52,0, 256,0zM 256,384C 167.648,384, 96,312.352, 96,224s 71.648-160, 160-160s 160,71.648, 160,160S 344.352,384, 256,384z M 256,128c-52.928,0-96,43.072-96,96
+		c0,52.928, 43.072,96, 96,96s 96-43.072, 96-96C 352,171.072, 308.928,128, 256,128zM 224,224A32,32 180 1 1 288,224A32,32 180 1 1 224,224z"  />
+<glyph unicode="&#xe0e1;" d="M 416,309.568L 416,448 l 15.776,0 C 440.736,448, 448,455.168, 448,464C 448,472.832, 440.736,480, 431.776,480L 112.224,480 C 103.264,480, 96,472.832, 96,464
+		C 96,455.168, 103.264,448, 112.224,448L 128,448 l0-138.432 c0-9.12, 3.904-17.824, 10.72-23.904L 207.904,224L 138.72,162.336C 131.904,156.256, 128,147.552, 128,138.432L 128,0 L 112.224,0 
+		C 103.264,0, 96-7.168, 96-16C 96-24.832, 103.264-32, 112.224-32l 319.584,0 C 440.736-32, 448-24.832, 448-16c0,8.832-7.264,16-16.224,16L 416,0 l0,138.432 
+		c0,9.12-3.904,17.824-10.72,23.904L 336.096,224l 69.184,61.664C 412.096,291.744, 416,300.448, 416,309.568z M 384,309.568L 288,224l 96-85.568L 384,0 L 160,0 l0,138.432 L 256,224
+		L 160,309.568L 160,448 l 224,0 L 384,309.568 zM 352,355.904L 352,384L 192,384L 192,355.904L 272,284.608 	zM 192,91.968L 192,32L 352,32L 352,91.968L 311.584,128L 232.416,128 	z"  />
+<glyph unicode="&#xe0ff;" d="M 507.168,251.424l-77.152,140.32c-0.192,0.352-0.608,0.48-0.832,0.8c-3.872,5.984-11.168,9.024-18.272,6.656
+		L 288,358.272L 288,400 C 288,408.832, 280.832,416, 272,416S 256,408.832, 256,400l0-52.352 L 122.4,303.2c-1.088-0.352-1.92-1.088-2.88-1.664c0,0,0,0-0.032,0
+		C 117.312,300.224, 115.488,298.56, 114.176,296.48c-0.16-0.224-0.448-0.32-0.608-0.576l-79.456-140c-1.792-3.136-2.112-6.592-1.696-9.92
+		C 32.32,145.312, 32,144.704, 32,144C 32,111.040, 81.76,64, 128,64s 96,47.040, 96,80c0,2.048-0.448,4-1.184,5.792
+		c0,0.064-0.032,0.128-0.032,0.192c-0.032,0.096-0.064,0.224-0.096,0.32c-0.288,1.92-0.832,3.808-1.824,5.6L 151.008,278.944L 256,313.888
+		L 256,48 C 256,39.168, 263.168,32, 272,32S 288,39.168, 288,48L 288,324.544 l 94.272,31.36l-57.44-104.512C 321.856,248.512, 320,244.48, 320,240
+		c0-32.96, 49.76-80, 96-80s 96,47.040, 96,80C 512,244.48, 510.144,248.512, 507.168,251.424z M 73.216,160l 54.272,95.584L 181.728,160L 73.216,160 z M 363.904,256
+		L 416,350.784L 468.096,256L 363.904,256 z"  />
+<glyph unicode="&#xe0f8;" d="M 320,256L 192,256 l0-160 c0-32-64-78.336-64-96l0-16 C 128-24.832, 135.168-32, 144-32l 224,0 c 8.832,0, 16,7.168, 16,16L 384,0 c0,17.664-64,64-64,96L 320,256 
+		zM 370.656,447.456L 370.656,448 l-32,0 l0-0.544 C 337.76,447.616, 336.96,448, 336,448C 327.168,448, 320,440.832, 320,432L 320,416 L 288,416 L 288,432 
+		c0,7.904-5.824,14.144-13.344,15.456L 274.656,448 l-32,0 l0-0.544 C 241.76,447.616, 240.96,448, 240,448C 231.168,448, 224,440.832, 224,432L 224,416 L 192,416 L 192,432 
+		c0,7.904-5.824,14.144-13.344,15.456L 178.656,448 l-32,0 l0-0.544 C 145.76,447.616, 144.96,448, 144,448C 135.168,448, 128,440.832, 128,432L 128,384 l0-32 c0-8.48, 3.36-16.64, 9.376-22.624
+		l 32-32C 175.392,291.36, 183.52,288, 192,288l 128,0 c 8.48,0, 16.64,3.36, 22.624,9.376l 32,32C 380.64,335.36, 384,343.52, 384,352L 384,384 L 384,432 
+		C 384,439.904, 378.176,446.144, 370.656,447.456z"  />
+<glyph unicode="&#xe0fa;" d="M 480,320l-32,0 L 448,448 c0,17.664-14.336,32-32,32L 96,480 C 78.336,480, 64,465.664, 64,448l0-128 L 32,320 C 14.336,320,0,305.664,0,288l0-160 c0-17.664, 14.336-32, 32-32l 32,0 l0-96 
+		c0-17.664, 14.336-32, 32-32l 320,0 c 17.664,0, 32,14.336, 32,32l0,96 l 32,0 c 17.664,0, 32,14.336, 32,32L 512,288 C 512,305.664, 497.664,320, 480,320z M 96,160l 320,0 l0-160 L 96,0 L 96,160 z M 352,240
+		C 352,248.832, 359.168,256, 368,256S 384,248.832, 384,240C 384,231.168, 376.832,224, 368,224S 352,231.168, 352,240z M 80,224C 71.168,224, 64,231.168, 64,240
+		C 64,248.832, 71.168,256, 80,256S 96,248.832, 96,240C 96,231.168, 88.832,224, 80,224z M 432,224C 423.168,224, 416,231.168, 416,240C 416,248.832, 423.168,256, 432,256
+		S 448,248.832, 448,240C 448,231.168, 440.832,224, 432,224z M 96,448l 320,0 l0-128 L 96,320 L 96,448 zM 384,112c0,8.832-7.168,16-16,16l-224,0 C 135.168,128, 128,120.832, 128,112C 128,103.168, 135.168,96, 144,96l 224,0 
+		C 376.832,96, 384,103.168, 384,112zM 368,64l-224,0 C 135.168,64, 128,56.832, 128,48C 128,39.168, 135.168,32, 144,32l 224,0 c 8.832,0, 16,7.168, 16,16
+		C 384,56.832, 376.832,64, 368,64z"  />
+<glyph unicode="&#xe0e7;" d="M 96-32l 320,0 c 17.664,0, 32,14.336, 32,32L 448,448 c0,17.664-14.336,32-32,32L 96,480 C 78.336,480, 64,465.664, 64,448l0-448 C 64-17.664, 78.336-32, 96-32z
+		 M 352,128c-17.664,0-32,14.336-32,32c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32C 384,142.336, 369.664,128, 352,128z M 384,64c0-17.664-14.336-32-32-32
+		s-32,14.336-32,32c0,17.664, 14.336,32, 32,32S 384,81.664, 384,64z M 352,224c-17.664,0-32,14.336-32,32c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32
+		C 384,238.336, 369.664,224, 352,224z M 128,352L 128,416 l 256,0 l0-64 L 128,352 z M 256,128c-17.664,0-32,14.336-32,32c0,17.664, 14.336,32, 32,32s 32-14.336, 32-32C 288,142.336, 273.664,128, 256,128z
+		 M 288,64c0-17.664-14.336-32-32-32s-32,14.336-32,32c0,17.664, 14.336,32, 32,32S 288,81.664, 288,64z M 256,224C 238.336,224, 224,238.336, 224,256c0,17.664, 14.336,32, 32,32
+		s 32-14.336, 32-32C 288,238.336, 273.664,224, 256,224z M 160,288c 17.664,0, 32-14.336, 32-32c0-17.664-14.336-32-32-32S 128,238.336, 128,256C 128,273.664, 142.336,288, 160,288z M 160,192
+		c 17.664,0, 32-14.336, 32-32c0-17.664-14.336-32-32-32s-32,14.336-32,32C 128,177.664, 142.336,192, 160,192z M 160,96c 17.664,0, 32-14.336, 32-32c0-17.664-14.336-32-32-32
+		s-32,14.336-32,32C 128,81.664, 142.336,96, 160,96z"  />
+<glyph unicode="&#xe0fd;" d="M 32-32l 416,0 c 17.664,0, 32,14.336, 32,32L 480,192 c0,17.664-14.336,32-32,32l-96,0 c-17.664,0-32-14.336-32-32L 320,448 c0,17.664-14.336,32-32,32L 192,480 
+		C 174.336,480, 160,465.664, 160,448l0-128 c0,17.664-14.336,32-32,32L 32,352 C 14.336,352,0,337.664,0,320l0-320 C0-17.664, 14.336-32, 32-32z M 32,0l0,64 l 32,0 l0-64 L 32,0 z M 64,192l0-32 L 32,160 L 32,192 L 64,192 z M 32,224
+		L 32,256 l 32,0 l0-32 L 32,224 z M 64,128l0-32 L 32,96 l0,32 L 64,128 z M 96,160L 96,192 l 32,0 l0-32 L 96,160 z M 128,128l0-32 L 96,96 l0,32 L 128,128 z M 96,224L 96,256 l 32,0 l0-32 L 96,224 z M 96,0l0,64 l 32,0 l0-64 L 96,0 z M 128,288L 96,288 L 96,320 l 32,0 L 128,288 z M 64,288L 32,288 L 32,320 l 32,0 L 64,288 z M 256,0l0,64 l 32,0 
+		l0-64 L 256,0 z M 224,320l0-32 L 192,288 L 192,320 L 224,320 z M 192,352L 192,384 l 32,0 l0-32 L 192,352 z M 224,256l0-32 L 192,224 L 192,256 L 224,256 z M 224,192l0-32 L 192,160 L 192,192 L 224,192 z M 224,128l0-32 L 192,96 l0,32 L 224,128 z M 256,160L 256,192 l 32,0 l0-32 L 256,160 z M 288,128l0-32 L 256,96 l0,32 L 288,128 z M 256,224L 256,256 l 32,0 l0-32 L 256,224 z
+		 M 256,288L 256,320 l 32,0 l0-32 L 256,288 z M 256,352L 256,384 l 32,0 l0-32 L 256,352 z M 288,416L 256,416 L 256,448 l 32,0 L 288,416 z M 224,416L 192,416 L 192,448 l 32,0 L 224,416 z M 192,64l 32,0 l0-64 L 192,0 L 192,64 z M 384,96l-32,0 l0,32 l 32,0 L 384,96 z M 416,128l 32,0 l0-32 l-32,0 L 416,128 z M 416,64l 32,0 l0-64 l-32,0 L 416,64 
+		z M 448,160l-32,0 L 416,192 l 32,0 L 448,160 z M 384,160l-32,0 L 352,192 l 32,0 L 384,160 z M 352,64l 32,0 l0-64 l-32,0 L 352,64 z"  />
+<glyph unicode="&#xe0e4;" d="M 384,480L 128,480 L 32,480 C 14.336,480,0,465.664,0,448l0-448 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,384 l-96,96L 384,480 z M 352,320L 352,448 l 32,0 l0-128 
+		c0-17.664-14.336-32-32-32L 160,288 C 142.336,288, 128,302.336, 128,320L 128,448 l 128,0 l0-128 L 352,320 z M 96,192c0,17.664, 14.336,32, 32,32l 256,0 c 17.664,0, 32-14.336, 32-32l0-192 L 96,0 L 96,192 z"  />
+<glyph unicode="&#xe0e5;" d="M 64-32l 384,0 c 35.36,0, 64,28.64, 64,64l0,32 c0,1.504-0.352,2.912-0.448,4.352C 511.648,69.984, 512,71.84, 512,73.344L 480,416
+		c-1.984,31.328-28.64,64-64,64L 96,480 C 60.64,480, 33.984,447.328, 32,416L0,73.344c0-1.504, 0.352-3.36, 0.448-4.96C 0.352,66.912,0,65.504,0,64l0-32 
+		C0-3.36, 28.64-32, 64-32z M 32,32l0,32 c0,17.632, 14.368,32, 32,32l 384,0 c 17.632,0, 32-14.368, 32-32l0-32 c0-17.632-14.368-32-32-32L 64,0 C 46.368,0, 32,14.368, 32,32zM 416,48A16,16 180 1 1 448,48A16,16 180 1 1 416,48zM 355.328,48.672A16,16 180 1 1 387.328,48.672000000000025A16,16 180 1 1 355.328,48.672000000000025zM 80,32l 224,0 c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16l-224,0 C 71.168,64, 64,56.832, 64,48
+		C 64,39.168, 71.168,32, 80,32z"  />
+<glyph unicode="&#xe0f7;" d="M 32,0l 288,0 c 17.664,0, 32,14.336, 32,32l0,43.2 c 6.816,3.264, 13.184,7.168, 19.168,11.68l 98.208-98.208
+		c 3.136-3.136, 7.232-4.672, 11.328-4.672s 8.192,1.568, 11.328,4.672c 6.24,6.24, 6.24,16.384,0,22.624l-98.272,98.272
+		C 407.552,128.192, 416,151.040, 416,176c0,44.608-26.272,82.784-64,100.8L 352,448 c0,17.664-14.336,32-32,32L 32,480 C 14.336,480,0,465.664,0,448l0-416 
+		C0,14.336, 14.336,0, 32,0z M 304,96C 259.904,96, 224,131.904, 224,176S 259.904,256, 304,256S 384,220.096, 384,176S 348.096,96, 304,96z M 272,352l-192,0 
+		C 71.168,352, 64,359.168, 64,368C 64,376.832, 71.168,384, 80,384l 192,0 C 280.832,384, 288,376.832, 288,368C 288,359.168, 280.832,352, 272,352z M 80,288l 192,0 
+		c 3.104,0, 5.824-1.12, 8.256-2.624C 259.328,280.832, 240.576,270.464, 225.792,256L 80,256 C 71.168,256, 64,263.168, 64,272C 64,280.832, 71.168,288, 80,288z M 80,192l 113.6,0 
+		C 192.864,186.72, 192,181.472, 192,176S 192.864,165.28, 193.6,160L 80,160 C 71.168,160, 64,167.168, 64,176C 64,184.832, 71.168,192, 80,192z"  />
+<glyph unicode="&#xe0e0;" d="M 480,384L 32,384 C 14.336,384,0,369.664,0,352l0-288 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,352 C 512,369.664, 497.664,384, 480,384z
+		 M 434.656,192L 240,192 C 231.168,192, 224,199.168, 224,208C 224,216.832, 231.168,224, 240,224l 194.656,0 c 8.832,0, 16-7.168, 16-16C 450.656,199.168, 443.488,192, 434.656,192z
+		 M 450.656,144c0-8.832-7.168-16-16-16L 240,128 C 231.168,128, 224,135.168, 224,144C 224,152.832, 231.168,160, 240,160l 194.656,0 
+		C 443.488,160, 450.656,152.832, 450.656,144z M 434.656,256L 240,256 C 231.168,256, 224,263.168, 224,272C 224,280.832, 231.168,288, 240,288l 194.656,0 
+		c 8.832,0, 16-7.168, 16-16C 450.656,263.168, 443.488,256, 434.656,256z M 128.768,227.232C 163.68,227.232, 192,189.28, 192,142.432s-126.496-46.848-126.496,0
+		S 93.824,227.232, 128.768,227.232z M 89.312,281.344C 89.312,302.688, 106.592,320, 127.936,320c 21.344,0, 38.656-17.312, 38.656-38.656
+		c0-21.344-17.312-38.656-38.656-38.656C 106.592,242.688, 89.312,260, 89.312,281.344z"  />
+<glyph unicode="&#xe0fc;" d="M 480,384l-160,0 l0-32 c 17.664,0, 32-14.336, 32-32c0-17.664-14.336-32-32-32L 288,288 L 224,288 L 192,288 C 174.336,288, 160,302.336, 160,320c0,17.664, 14.336,32, 32,32L 192,384 L 32,384 
+		C 14.336,384,0,369.664,0,352l0-352 c0-17.664, 14.336-32, 32-32l 448,0 c 17.664,0, 32,14.336, 32,32L 512,352 C 512,369.664, 497.664,384, 480,384z M 240,224l 194.656,0 
+		c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 240,192 C 231.168,192, 224,199.168, 224,208C 224,216.832, 231.168,224, 240,224z M 240,160l 194.656,0 
+		c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 240,128 C 231.168,128, 224,135.168, 224,144C 224,152.832, 231.168,160, 240,160z M 240,96l 194.656,0 
+		c 8.832,0, 16-7.168, 16-16c0-8.832-7.168-16-16-16L 240,64 C 231.168,64, 224,71.168, 224,80C 224,88.832, 231.168,96, 240,96z M 192,78.432
+		c0-46.848-126.496-46.848-126.496,0s 28.32,84.8, 63.232,84.8C 163.68,163.232, 192,125.28, 192,78.432z M 166.592,217.344c0-21.344-17.312-38.656-38.656-38.656
+		c-21.344,0-38.656,17.312-38.656,38.656C 89.312,238.688, 106.592,256, 127.936,256C 149.312,256, 166.592,238.688, 166.592,217.344zM 224,448L 288,448L 288,320L 224,320z"  />
+<glyph unicode="&#xe0f9;" d="M 190.016,79.168c-19.84,0-37.632,8.608-50.144,22.112c-22.112,23.84-38.24,8.832-43.072-14.624
+		C 72.32-32.928, 107.68-32, 107.68-32l 340.16-0.928c 35.36,0, 64,28.64, 64,64l0,224 c0,35.36, 4.096,85.408-28.16,70.912
+		c-24.416-10.944-56.512-17.504-106.816-7.136c-23.456,4.832-38.464,20.96-14.624,43.072c 13.504,12.512, 22.112,30.272, 22.112,50.144
+		C 384.32,449.6, 353.92,480, 316.416,480C 278.88,480, 248.48,449.6, 248.48,412.064c0-21.248, 11.072-38.784, 25.056-52.704c 8.416-8.384, 30.624-30.304-26.208-40.32
+		C 184.832,308.064, 124.896,343.392, 112.832,330.56C 104.832,322.080, 82.816,290.080, 96.96,215.040c 10.752-57.12, 32-33.472, 40.352-25.056
+		C 151.232,203.968, 168.768,215.040, 190.016,215.040c 37.504,0, 67.936-30.4, 67.936-67.936C 257.952,109.6, 227.552,79.168, 190.016,79.168z"  />
+<glyph unicode="&#xe0dd;" d="M 433.6,320c0,0-111.2,0-144.992,0L 288.608,407.392 c 2.368,39.36-8.96,72.576-33.152,72.544
+		C 213.344,479.872, 214.528,445.92, 214.528,445.92C 207.040,325.44, 96,288, 96,288l0-256 l 14.752-1.984C 231.808,30.016, 159.168-32, 358.080-32C 509.12-32, 512,100.928, 512,192
+		S 470.496,320, 433.6,320zM 32,0c 17.664,0, 32,14.336, 32,32L 64,287.008 c0,17.664-14.336,32-32,32s-32-14.336-32-32L0,32 C0,14.336, 14.336,0, 32,0z"  />
+<glyph unicode="&#xe0f1;" d="M 78.4,127.936c0,0, 111.2,0, 144.992,0l0-87.392 c-2.368-39.36, 8.96-72.576, 33.152-72.544
+		c 42.112,0.064, 40.928,34.016, 40.928,34.016C 304.96,122.496, 416,159.936, 416,159.936l0,256 l-14.752,1.984c-121.056,0-48.416,62.016-247.328,62.016
+		c-151.040,0-153.92-132.928-153.92-224S 41.504,127.936, 78.4,127.936zM 480,447.936c-17.664,0-32-14.336-32-32l0-255.008 c0-17.664, 14.336-32, 32-32s 32,14.336, 32,32L 512,415.936 
+		C 512,433.6, 497.664,447.936, 480,447.936z"  />
+<glyph unicode="&#xe0dc;" d="M 414.24,319.936c 0.896,13.376, 1.44,24.224, 1.728,30.72c 0.352,8.704-2.848,17.184-8.864,23.488S 392.704,384, 384,384L 32,384 
+		C 23.296,384, 14.944,380.448, 8.896,374.144S-0.32,359.36, 0.032,350.656c 1.76-42.272, 13.664-255.936, 74.624-310.496C 80.512,34.912, 88.128,32, 96,32l 224,0 
+		c 7.872,0, 15.488,2.912, 21.344,8.16c 19.104,17.12, 33.408,49.856, 44.064,88.064c 15.84,0.064, 26.784,0.096, 28.064,0.096
+		c 54.432,0, 98.56,39.68, 98.56,95.84C 512,300.416, 446.080,319.648, 414.24,319.936z M 413.44,176.32l-10.144-0.032c-1.92,0-4.352,0-6.72-0.032
+		c 6.368,32.8, 10.72,66.432, 13.664,95.744l 3.2,0 c 8.448,0, 50.56-2.304, 50.56-47.84C 464,191.296, 437.792,176.32, 413.44,176.32z"  />
+<glyph unicode="&#xe0f3;" d="M 272,448C 139.456,448, 32,340.544, 32,208S 139.456-32, 272-32S 512,75.456, 512,208S 404.544,448, 272,448z M 299.424,224
+		C 346.048,224, 384,188.128, 384,144S 346.048,64, 299.424,64L 288,64 l0-16 C 288,39.168, 280.832,32, 272,32S 256,39.168, 256,48L 256,64 L 244.576,64 C 197.952,64, 160,99.872, 160,144
+		C 160,152.832, 167.168,160, 176,160S 192,152.832, 192,144C 192,117.536, 215.584,96, 244.576,96L 256,96 L 256,192 L 244.576,192 C 197.952,192, 160,227.872, 160,272S 197.952,352, 244.576,352L 256,352 L 256,368 
+		C 256,376.832, 263.168,384, 272,384S 288,376.832, 288,368L 288,352 l 11.424,0 C 346.048,352, 384,316.128, 384,272C 384,263.168, 376.832,256, 368,256S 352,263.168, 352,272
+		C 352,298.464, 328.416,320, 299.424,320L 288,320 l0-96 L 299.424,224 zM 192,272C 192,245.536, 215.584,224, 244.576,224L 256,224 L 256,320 L 244.576,320 C 215.584,320, 192,298.464, 192,272zM 299.424,96C 328.416,96, 352,117.536, 352,144S 328.416,192, 299.424,192L 288,192 l0-96 L 299.424,96 z"  />
+<glyph unicode="&#xe0d8;" d="M 352,96L 352,192 c0,17.664, 14.336,32, 32,32l 96,0 L 480,288 c0,17.664-14.336,32-32,32l-36.736,0 l-15.616,92.768
+			c-0.704,4.224-3.104,8-6.592,10.432c-3.52,2.464-7.904,3.328-12.096,2.656L 61.088,367.744C 56.896,366.976, 53.152,364.544, 50.752,360.992
+			C 48.352,357.44, 47.456,353.088, 48.32,348.864L 54.048,320L 32,320 C 14.336,320,0,305.664,0,288l0-288 c0-17.664, 14.336-32, 32-32l 416,0 c 17.664,0, 32,14.336, 32,32l0,64 l-96,0 
+			C 366.336,64, 352,78.336, 352,96z M 82.848,339.2l 283.936,52.256L 378.816,320l-292.16,0 L 82.848,339.2zM 496,192L 384,192 l0-96 l 112,0 c 8.832,0, 16,7.168, 16,16l0,64 C 512,184.832, 504.832,192, 496,192z M 432,128
+			c-8.832,0-16,7.168-16,16c0,8.832, 7.168,16, 16,16s 16-7.168, 16-16C 448,135.168, 440.832,128, 432,128z"  />
+<glyph unicode="&#xe0db;" d="M 64,416l0-32 l0-256 l 4.736-11.84L 128-32l 64,160l-0.16,0.064C 191.936,128.16, 191.904,128.32, 192,128.416L 192,384 L 192,416 c0,35.36-28.64,64-64,64
+		S 64,451.36, 64,416z M 96,416c0,17.632, 14.368,32, 32,32s 32-14.368, 32-32l0-32 L 96,384 L 96,416 z M 128,54.176l-16.48,41.184l-6.4,16L 104.64,112.544L 128,124.224l 23.36-11.68
+		l-0.48-1.216l-6.4-16L 128,54.176zM 402.944,384.672l-30.24,77.344l-0.288-0.064C 370.912,472.096, 362.56,480, 352,480c-10.432,0-18.976-8.032-20.672-18.080
+		l-0.32,0.064L 301.056,384.672L 288,352l0-320 c0-35.36, 28.64-64, 64-64s 64,28.64, 64,64c 17.664,0, 32,14.336, 32,32l0,96 c0,17.664-14.336,32-32,32L 416,352 L 402.944,384.672z
+		 M 373.216,372.768L 381.536,352l-59.072,0 l 8.32,20.768L 335.264,384L 352,425.824L 368.736,384L 373.216,372.768z"  />
+<glyph unicode="&#xe0f0;" d="M 480,480L 64,480 C 46.336,480, 32,465.664, 32,448c0-17.664, 14.336-32, 32-32l0-256 c0-17.664, 14.336-32, 32-32l 160,0 l0-49.952 L 165.248-4.16
+		c-6.528-5.92-7.040-16.032-1.088-22.592c 5.984-6.528, 16.096-7.040, 22.592-1.088L 256,34.88l0-50.88 C 256-24.832, 263.168-32, 272-32S 288-24.832, 288-16
+		l0,50.88 l 69.248-62.72C 360.32-30.624, 364.16-32, 368-32c 4.352,0, 8.672,1.792, 11.84,5.248c 5.952,6.56, 5.44,16.672-1.088,22.592L 288,78.048L 288,128 
+		l 160,0 c 17.664,0, 32,14.336, 32,32L 480,416 c 17.664,0, 32,14.336, 32,32C 512,465.664, 497.664,480, 480,480z M 411.104,356.48l-112-108
+		C 292.96,242.528, 283.232,242.496, 276.96,248.416L 227.52,295.424L 156,220.896C 152.864,217.664, 148.672,216, 144.48,216c-4,0-7.968,1.472-11.104,4.48
+		C 127.008,226.56, 126.816,236.672, 132.928,243.104l 82.528,86.016C 221.568,335.36, 231.68,335.616, 238.016,329.6l 49.92-47.424l 100.96,97.376
+		c 6.336,6.048, 16.48,6.016, 22.624-0.448C 417.664,372.736, 417.472,362.624, 411.104,356.48z"  />
+<glyph unicode="&#xe0df;" d="M 480,160L 480,224 c0,17.664-14.336,32-32,32L 288,256 L 288,320 l 96,0 c 17.664,0, 32,14.336, 32,32L 416,384 c0,17.664-14.336,32-32,32L 160,416 C 142.336,416, 128,401.664, 128,384l0-32 
+		c0-17.664, 14.336-32, 32-32l 96,0 l0-64 L 96,256 C 78.336,256, 64,241.664, 64,224l0-64 c-17.664,0-32-14.336-32-32l0-64 c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l0,32 l0,32 
+		c0,17.664-14.336,32-32,32L 96,224 l 160,0 l0-64 c-17.664,0-32-14.336-32-32l0-32 l0-32 c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l0,32 l0,32 c0,17.664-14.336,32-32,32L 288,224 l 160,0 l0-64 
+		c-17.664,0-32-14.336-32-32l0-32 l0-32 c0-17.664, 14.336-32, 32-32l 32,0 c 17.664,0, 32,14.336, 32,32l0,64 C 512,145.664, 497.664,160, 480,160z"  />
+<glyph unicode="&#xe0f2;" d="M 64,480C 46.336,480, 32,465.664, 32,448l0-448 c0-17.664, 14.336-32, 32-32l 416,0 c 17.664,0, 32,14.336, 32,32L 512,448 c0,17.664-14.336,32-32,32L 64,480 z
+		 M 448,305.792L 448,32 l-96,0 L 352,305.792 L 448,305.792 z M 320,384l0-352 L 224,32 L 224,384 L 320,384 z M 192,188.448L 192,32 L 96,32 L 96,188.448 L 192,188.448 z"  />
+<glyph unicode="&#xe0f4;" d="M 480,352l-96,0 L 384,416 c0,17.664-14.336,32-32,32L 160,448 C 142.336,448, 128,433.664, 128,416l0-64 L 32,352 C 14.336,352,0,337.664,0,320l0-288 c0-17.664, 14.336-32, 32-32l 448,0 
+		c 17.664,0, 32,14.336, 32,32L 512,320 C 512,337.664, 497.664,352, 480,352z M 160,416l 192,0 l0-64 L 160,352 L 160,416 z"  />
+<glyph unicode="&#xe0d9;" d="M 247.2-30.752C 250.080-31.584, 253.056-32, 256-32s 5.92,0.416, 8.8,1.248c 198.048,56.576, 227.2,256.768, 214.976,354.752
+		C 477.76,339.968, 464.128,352, 448,352c-4.576,0.352-32,5.088-32,64c0,8.48-3.36,16.64-9.376,22.624C 399.712,445.536, 360,480, 256,480
+		S 112.288,445.536, 105.376,438.624C 99.36,432.64, 96,424.48, 96,416c0-58.912-27.424-63.648-32.928-64.032c-16.128,0-28.832-12-30.848-28
+		C 20,226.016, 49.184,25.824, 247.2-30.752z M 64,320c0,0, 64,0, 64,96c0,0, 32,32, 128,32l0-224 l 188.448,0 c-12.608-79.712-54.912-185.856-188.448-224L 256,224 L 67.552,224 
+		C 59.040,278.016, 64,320, 64,320z"  />
+<glyph unicode="&#xe0da;" d="M 160,304.992A16.992,16.992 180 1 1 193.984,304.99199999999996A16.992,16.992 180 1 1 160,304.99199999999996zM 256,480C 114.624,480,0,365.376,0,224s 114.624-256, 256-256s 256,114.624, 256,256S 397.376,480, 256,480z M 128,304.992c0,27.072, 21.952,48.992, 48.992,48.992
+		s 48.992-21.952, 48.992-48.992S 204.064,256, 176.992,256S 128,277.952, 128,304.992z M 171.328,116.672C 168.192,113.568, 164.096,112, 160,112
+		s-8.192,1.568-11.328,4.672c-6.24,6.24-6.24,16.384,0,22.624l 192,192c 6.24,6.24, 16.384,6.24, 22.624,0s 6.24-16.384,0-22.624
+		L 171.328,116.672z M 335.008,96c-27.072,0-48.992,21.952-48.992,48.992s 21.952,48.992, 48.992,48.992S 384,172.064, 384,144.992S 362.048,96, 335.008,96zM 318.016,144.992A16.992,16.992 180 1 1 352,144.99200000000002A16.992,16.992 180 1 1 318.016,144.99200000000002z"  />
+<glyph unicode="&#xe0de;" d="M 481.888,133.792c-87.136-87.104-228.928-87.168-316.064,0C 123.648,175.936, 100.448,232.064, 100.448,291.84
+		s 23.232,115.904, 65.344,158.016c 6.24,6.24, 6.24,16.384,0,22.624s-16.384,6.24-22.624,0C 94.976,424.32, 68.448,360.16, 68.448,291.84
+		s 26.56-132.512, 74.72-180.672C 183.84,70.464, 234.976,46.688, 288,39.232L 288,0 L 240,0 C 231.168,0, 224-7.168, 224-16C 224-24.832, 231.168-32, 240-32l 128,0 
+		c 8.832,0, 16,7.168, 16,16c0,8.832-7.168,16-16,16L 320,0 l0,36.608 c 1.28-0.032, 2.56-0.192, 3.84-0.192
+		c 65.408,0, 130.848,24.896, 180.672,74.72c 6.24,6.24, 6.24,16.384,0,22.624S 488.128,140.032, 481.888,133.792zM 135.68,291.84A188.16,188.16 180 1 1 512,291.84000000000003A188.16,188.16 180 1 1 135.68,291.84000000000003z"  />
+<glyph unicode="&#xe0e6;" d="M 416,448l-96,0 c0,17.664-14.336,32-32,32L 224,480 C 206.336,480, 192,465.664, 192,448L 96,448 C 78.336,448, 64,433.664, 64,416l0-416 c0-17.664, 14.336-32, 32-32l 320,0 
+		c 17.664,0, 32,14.336, 32,32L 448,416 C 448,433.664, 433.664,448, 416,448z M 416,32L 96,32 L 96,416 l 64,0 c0-17.664, 14.336-32, 32-32l 32,0 l 64,0 l 32,0 c 17.664,0, 32,14.336, 32,32l 64,0 L 416,32 zM 128,304C 128,295.168, 135.168,288, 144,288l 224,0 C 376.832,288, 384,295.168, 384,304C 384,312.832, 376.832,320, 368,320l-224,0 
+		C 135.168,320, 128,312.832, 128,304zM 368,224l-224,0 C 135.168,224, 128,216.832, 128,208C 128,199.168, 135.168,192, 144,192l 224,0 C 376.832,192, 384,199.168, 384,208
+		C 384,216.832, 376.832,224, 368,224zM 368,128l-224,0 C 135.168,128, 128,120.832, 128,112C 128,103.168, 135.168,96, 144,96l 224,0 c 8.832,0, 16,7.168, 16,16
+		C 384,120.832, 376.832,128, 368,128z"  />
+<glyph unicode="&#x20;" horiz-adv-x="256" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf
new file mode 100755
index 0000000..12ff680
--- /dev/null
+++ b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf
Binary files differ
diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff
new file mode 100755
index 0000000..3933052
--- /dev/null
+++ b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff
Binary files differ
diff --git a/src/main/jbake/assets/fonts/eleganticons/et-icons.css b/src/main/jbake/assets/fonts/eleganticons/et-icons.css
new file mode 100755
index 0000000..26f2053
--- /dev/null
+++ b/src/main/jbake/assets/fonts/eleganticons/et-icons.css
@@ -0,0 +1,1159 @@
+@font-face {
+	font-family: 'ElegantIcons';
+	src:url('ElegantIcons.eot');
+	src:url('ElegantIcons.eot?#iefix') format('embedded-opentype'),
+		url('ElegantIcons.woff') format('woff'),
+		url('ElegantIcons.ttf') format('truetype'),
+		url('ElegantIcons.svg#ElegantIcons') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+/* Use the following CSS code if you want to use data attributes for inserting your icons */
+[data-icon]:before {
+	font-family: 'ElegantIcons';
+	content: attr(data-icon);
+	speak: none;
+	font-weight: normal;
+	font-variant: normal;
+	text-transform: none;
+	line-height: 1;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+
+/* Use the following CSS code if you want to have a class per icon */
+/*
+Instead of a list of all class selectors,
+you can use the generic selector below, but it's slower:
+[class*="your-class-prefix"] {
+*/
+.arrow_up, .arrow_down, .arrow_left, .arrow_right, .arrow_left-up, .arrow_right-up, .arrow_right-down, .arrow_left-down, .arrow-up-down, .arrow_up-down_alt, .arrow_left-right_alt, .arrow_left-right, .arrow_expand_alt2, .arrow_expand_alt, .arrow_condense, .arrow_expand, .arrow_move, .arrow_carrot-up, .arrow_carrot-down, .arrow_carrot-left, .arrow_carrot-right, .arrow_carrot-2up, .arrow_carrot-2down, .arrow_carrot-2left, .arrow_carrot-2right, .arrow_carrot-up_alt2, .arrow_carrot-down_alt2, .arrow_carrot-left_alt2, .arrow_carrot-right_alt2, .arrow_carrot-2up_alt2, .arrow_carrot-2down_alt2, .arrow_carrot-2left_alt2, .arrow_carrot-2right_alt2, .arrow_triangle-up, .arrow_triangle-down, .arrow_triangle-left, .arrow_triangle-right, .arrow_triangle-up_alt2, .arrow_triangle-down_alt2, .arrow_triangle-left_alt2, .arrow_triangle-right_alt2, .arrow_back, .icon_minus-06, .icon_plus, .icon_close, .icon_check, .icon_minus_alt2, .icon_plus_alt2, .icon_close_alt2, .icon_check_alt2, .icon_zoom-out_alt, .icon_zoom-in_alt, .icon_search, .icon_box-empty, .icon_box-selected, .icon_minus-box, .icon_plus-box, .icon_box-checked, .icon_circle-empty, .icon_circle-slelected, .icon_stop_alt2, .icon_stop, .icon_pause_alt2, .icon_pause, .icon_menu, .icon_menu-square_alt2, .icon_menu-circle_alt2, .icon_ul, .icon_ol, .icon_adjust-horiz, .icon_adjust-vert, .icon_document_alt, .icon_documents_alt, .icon_pencil, .icon_pencil-edit_alt, .icon_pencil-edit, .icon_folder-alt, .icon_folder-open_alt, .icon_folder-add_alt, .icon_info_alt, .icon_error-oct_alt, .icon_error-circle_alt, .icon_error-triangle_alt, .icon_question_alt2, .icon_question, .icon_comment_alt, .icon_chat_alt, .icon_vol-mute_alt, .icon_volume-low_alt, .icon_volume-high_alt, .icon_quotations, .icon_quotations_alt2, .icon_clock_alt, .icon_lock_alt, .icon_lock-open_alt, .icon_key_alt, .icon_cloud_alt, .icon_cloud-upload_alt, .icon_cloud-download_alt, .icon_image, .icon_images, .icon_lightbulb_alt, .icon_gift_alt, .icon_house_alt, .icon_genius, .icon_mobile, .icon_tablet, .icon_laptop, .icon_desktop, .icon_camera_alt, .icon_mail_alt, .icon_cone_alt, .icon_ribbon_alt, .icon_bag_alt, .icon_creditcard, .icon_cart_alt, .icon_paperclip, .icon_tag_alt, .icon_tags_alt, .icon_trash_alt, .icon_cursor_alt, .icon_mic_alt, .icon_compass_alt, .icon_pin_alt, .icon_pushpin_alt, .icon_map_alt, .icon_drawer_alt, .icon_toolbox_alt, .icon_book_alt, .icon_calendar, .icon_film, .icon_table, .icon_contacts_alt, .icon_headphones, .icon_lifesaver, .icon_piechart, .icon_refresh, .icon_link_alt, .icon_link, .icon_loading, .icon_blocked, .icon_archive_alt, .icon_heart_alt, .icon_star_alt, .icon_star-half_alt, .icon_star, .icon_star-half, .icon_tools, .icon_tool, .icon_cog, .icon_cogs, .arrow_up_alt, .arrow_down_alt, .arrow_left_alt, .arrow_right_alt, .arrow_left-up_alt, .arrow_right-up_alt, .arrow_right-down_alt, .arrow_left-down_alt, .arrow_condense_alt, .arrow_expand_alt3, .arrow_carrot_up_alt, .arrow_carrot-down_alt, .arrow_carrot-left_alt, .arrow_carrot-right_alt, .arrow_carrot-2up_alt, .arrow_carrot-2dwnn_alt, .arrow_carrot-2left_alt, .arrow_carrot-2right_alt, .arrow_triangle-up_alt, .arrow_triangle-down_alt, .arrow_triangle-left_alt, .arrow_triangle-right_alt, .icon_minus_alt, .icon_plus_alt, .icon_close_alt, .icon_check_alt, .icon_zoom-out, .icon_zoom-in, .icon_stop_alt, .icon_menu-square_alt, .icon_menu-circle_alt, .icon_document, .icon_documents, .icon_pencil_alt, .icon_folder, .icon_folder-open, .icon_folder-add, .icon_folder_upload, .icon_folder_download, .icon_info, .icon_error-circle, .icon_error-oct, .icon_error-triangle, .icon_question_alt, .icon_comment, .icon_chat, .icon_vol-mute, .icon_volume-low, .icon_volume-high, .icon_quotations_alt, .icon_clock, .icon_lock, .icon_lock-open, .icon_key, .icon_cloud, .icon_cloud-upload, .icon_cloud-download, .icon_lightbulb, .icon_gift, .icon_house, .icon_camera, .icon_mail, .icon_cone, .icon_ribbon, .icon_bag, .icon_cart, .icon_tag, .icon_tags, .icon_trash, .icon_cursor, .icon_mic, .icon_compass, .icon_pin, .icon_pushpin, .icon_map, .icon_drawer, .icon_toolbox, .icon_book, .icon_contacts, .icon_archive, .icon_heart, .icon_profile, .icon_group, .icon_grid-2x2, .icon_grid-3x3, .icon_music, .icon_pause_alt, .icon_phone, .icon_upload, .icon_download, .social_facebook, .social_twitter, .social_pinterest, .social_googleplus, .social_tumblr, .social_tumbleupon, .social_wordpress, .social_instagram, .social_dribbble, .social_vimeo, .social_linkedin, .social_rss, .social_deviantart, .social_share, .social_myspace, .social_skype, .social_youtube, .social_picassa, .social_googledrive, .social_flickr, .social_blogger, .social_spotify, .social_delicious, .social_facebook_circle, .social_twitter_circle, .social_pinterest_circle, .social_googleplus_circle, .social_tumblr_circle, .social_stumbleupon_circle, .social_wordpress_circle, .social_instagram_circle, .social_dribbble_circle, .social_vimeo_circle, .social_linkedin_circle, .social_rss_circle, .social_deviantart_circle, .social_share_circle, .social_myspace_circle, .social_skype_circle, .social_youtube_circle, .social_picassa_circle, .social_googledrive_alt2, .social_flickr_circle, .social_blogger_circle, .social_spotify_circle, .social_delicious_circle, .social_facebook_square, .social_twitter_square, .social_pinterest_square, .social_googleplus_square, .social_tumblr_square, .social_stumbleupon_square, .social_wordpress_square, .social_instagram_square, .social_dribbble_square, .social_vimeo_square, .social_linkedin_square, .social_rss_square, .social_deviantart_square, .social_share_square, .social_myspace_square, .social_skype_square, .social_youtube_square, .social_picassa_square, .social_googledrive_square, .social_flickr_square, .social_blogger_square, .social_spotify_square, .social_delicious_square, .icon_printer, .icon_calulator, .icon_building, .icon_floppy, .icon_drive, .icon_search-2, .icon_id, .icon_id-2, .icon_puzzle, .icon_like, .icon_dislike, .icon_mug, .icon_currency, .icon_wallet, .icon_pens, .icon_easel, .icon_flowchart, .icon_datareport, .icon_briefcase, .icon_shield, .icon_percent, .icon_globe, .icon_globe-2, .icon_target, .icon_hourglass, .icon_balance, .icon_rook, .icon_printer-alt, .icon_calculator_alt, .icon_building_alt, .icon_floppy_alt, .icon_drive_alt, .icon_search_alt, .icon_id_alt, .icon_id-2_alt, .icon_puzzle_alt, .icon_like_alt, .icon_dislike_alt, .icon_mug_alt, .icon_currency_alt, .icon_wallet_alt, .icon_pens_alt, .icon_easel_alt, .icon_flowchart_alt, .icon_datareport_alt, .icon_briefcase_alt, .icon_shield_alt, .icon_percent_alt, .icon_globe_alt, .icon_clipboard {
+	font-family: 'ElegantIcons';
+	speak: none;
+	font-style: normal;
+	font-weight: normal;
+	font-variant: normal;
+	text-transform: none;
+	line-height: 1;
+	-webkit-font-smoothing: antialiased;
+}
+.arrow_up:before {
+	content: "\21";
+}
+.arrow_down:before {
+	content: "\22";
+}
+.arrow_left:before {
+	content: "\23";
+}
+.arrow_right:before {
+	content: "\24";
+}
+.arrow_left-up:before {
+	content: "\25";
+}
+.arrow_right-up:before {
+	content: "\26";
+}
+.arrow_right-down:before {
+	content: "\27";
+}
+.arrow_left-down:before {
+	content: "\28";
+}
+.arrow-up-down:before {
+	content: "\29";
+}
+.arrow_up-down_alt:before {
+	content: "\2a";
+}
+.arrow_left-right_alt:before {
+	content: "\2b";
+}
+.arrow_left-right:before {
+	content: "\2c";
+}
+.arrow_expand_alt2:before {
+	content: "\2d";
+}
+.arrow_expand_alt:before {
+	content: "\2e";
+}
+.arrow_condense:before {
+	content: "\2f";
+}
+.arrow_expand:before {
+	content: "\30";
+}
+.arrow_move:before {
+	content: "\31";
+}
+.arrow_carrot-up:before {
+	content: "\32";
+}
+.arrow_carrot-down:before {
+	content: "\33";
+}
+.arrow_carrot-left:before {
+	content: "\34";
+}
+.arrow_carrot-right:before {
+	content: "\35";
+}
+.arrow_carrot-2up:before {
+	content: "\36";
+}
+.arrow_carrot-2down:before {
+	content: "\37";
+}
+.arrow_carrot-2left:before {
+	content: "\38";
+}
+.arrow_carrot-2right:before {
+	content: "\39";
+}
+.arrow_carrot-up_alt2:before {
+	content: "\3a";
+}
+.arrow_carrot-down_alt2:before {
+	content: "\3b";
+}
+.arrow_carrot-left_alt2:before {
+	content: "\3c";
+}
+.arrow_carrot-right_alt2:before {
+	content: "\3d";
+}
+.arrow_carrot-2up_alt2:before {
+	content: "\3e";
+}
+.arrow_carrot-2down_alt2:before {
+	content: "\3f";
+}
+.arrow_carrot-2left_alt2:before {
+	content: "\40";
+}
+.arrow_carrot-2right_alt2:before {
+	content: "\41";
+}
+.arrow_triangle-up:before {
+	content: "\42";
+}
+.arrow_triangle-down:before {
+	content: "\43";
+}
+.arrow_triangle-left:before {
+	content: "\44";
+}
+.arrow_triangle-right:before {
+	content: "\45";
+}
+.arrow_triangle-up_alt2:before {
+	content: "\46";
+}
+.arrow_triangle-down_alt2:before {
+	content: "\47";
+}
+.arrow_triangle-left_alt2:before {
+	content: "\48";
+}
+.arrow_triangle-right_alt2:before {
+	content: "\49";
+}
+.arrow_back:before {
+	content: "\4a";
+}
+.icon_minus-06:before {
+	content: "\4b";
+}
+.icon_plus:before {
+	content: "\4c";
+}
+.icon_close:before {
+	content: "\4d";
+}
+.icon_check:before {
+	content: "\4e";
+}
+.icon_minus_alt2:before {
+	content: "\4f";
+}
+.icon_plus_alt2:before {
+	content: "\50";
+}
+.icon_close_alt2:before {
+	content: "\51";
+}
+.icon_check_alt2:before {
+	content: "\52";
+}
+.icon_zoom-out_alt:before {
+	content: "\53";
+}
+.icon_zoom-in_alt:before {
+	content: "\54";
+}
+.icon_search:before {
+	content: "\55";
+}
+.icon_box-empty:before {
+	content: "\56";
+}
+.icon_box-selected:before {
+	content: "\57";
+}
+.icon_minus-box:before {
+	content: "\58";
+}
+.icon_plus-box:before {
+	content: "\59";
+}
+.icon_box-checked:before {
+	content: "\5a";
+}
+.icon_circle-empty:before {
+	content: "\5b";
+}
+.icon_circle-slelected:before {
+	content: "\5c";
+}
+.icon_stop_alt2:before {
+	content: "\5d";
+}
+.icon_stop:before {
+	content: "\5e";
+}
+.icon_pause_alt2:before {
+	content: "\5f";
+}
+.icon_pause:before {
+	content: "\60";
+}
+.icon_menu:before {
+	content: "\61";
+}
+.icon_menu-square_alt2:before {
+	content: "\62";
+}
+.icon_menu-circle_alt2:before {
+	content: "\63";
+}
+.icon_ul:before {
+	content: "\64";
+}
+.icon_ol:before {
+	content: "\65";
+}
+.icon_adjust-horiz:before {
+	content: "\66";
+}
+.icon_adjust-vert:before {
+	content: "\67";
+}
+.icon_document_alt:before {
+	content: "\68";
+}
+.icon_documents_alt:before {
+	content: "\69";
+}
+.icon_pencil:before {
+	content: "\6a";
+}
+.icon_pencil-edit_alt:before {
+	content: "\6b";
+}
+.icon_pencil-edit:before {
+	content: "\6c";
+}
+.icon_folder-alt:before {
+	content: "\6d";
+}
+.icon_folder-open_alt:before {
+	content: "\6e";
+}
+.icon_folder-add_alt:before {
+	content: "\6f";
+}
+.icon_info_alt:before {
+	content: "\70";
+}
+.icon_error-oct_alt:before {
+	content: "\71";
+}
+.icon_error-circle_alt:before {
+	content: "\72";
+}
+.icon_error-triangle_alt:before {
+	content: "\73";
+}
+.icon_question_alt2:before {
+	content: "\74";
+}
+.icon_question:before {
+	content: "\75";
+}
+.icon_comment_alt:before {
+	content: "\76";
+}
+.icon_chat_alt:before {
+	content: "\77";
+}
+.icon_vol-mute_alt:before {
+	content: "\78";
+}
+.icon_volume-low_alt:before {
+	content: "\79";
+}
+.icon_volume-high_alt:before {
+	content: "\7a";
+}
+.icon_quotations:before {
+	content: "\7b";
+}
+.icon_quotations_alt2:before {
+	content: "\7c";
+}
+.icon_clock_alt:before {
+	content: "\7d";
+}
+.icon_lock_alt:before {
+	content: "\7e";
+}
+.icon_lock-open_alt:before {
+	content: "\e000";
+}
+.icon_key_alt:before {
+	content: "\e001";
+}
+.icon_cloud_alt:before {
+	content: "\e002";
+}
+.icon_cloud-upload_alt:before {
+	content: "\e003";
+}
+.icon_cloud-download_alt:before {
+	content: "\e004";
+}
+.icon_image:before {
+	content: "\e005";
+}
+.icon_images:before {
+	content: "\e006";
+}
+.icon_lightbulb_alt:before {
+	content: "\e007";
+}
+.icon_gift_alt:before {
+	content: "\e008";
+}
+.icon_house_alt:before {
+	content: "\e009";
+}
+.icon_genius:before {
+	content: "\e00a";
+}
+.icon_mobile:before {
+	content: "\e00b";
+}
+.icon_tablet:before {
+	content: "\e00c";
+}
+.icon_laptop:before {
+	content: "\e00d";
+}
+.icon_desktop:before {
+	content: "\e00e";
+}
+.icon_camera_alt:before {
+	content: "\e00f";
+}
+.icon_mail_alt:before {
+	content: "\e010";
+}
+.icon_cone_alt:before {
+	content: "\e011";
+}
+.icon_ribbon_alt:before {
+	content: "\e012";
+}
+.icon_bag_alt:before {
+	content: "\e013";
+}
+.icon_creditcard:before {
+	content: "\e014";
+}
+.icon_cart_alt:before {
+	content: "\e015";
+}
+.icon_paperclip:before {
+	content: "\e016";
+}
+.icon_tag_alt:before {
+	content: "\e017";
+}
+.icon_tags_alt:before {
+	content: "\e018";
+}
+.icon_trash_alt:before {
+	content: "\e019";
+}
+.icon_cursor_alt:before {
+	content: "\e01a";
+}
+.icon_mic_alt:before {
+	content: "\e01b";
+}
+.icon_compass_alt:before {
+	content: "\e01c";
+}
+.icon_pin_alt:before {
+	content: "\e01d";
+}
+.icon_pushpin_alt:before {
+	content: "\e01e";
+}
+.icon_map_alt:before {
+	content: "\e01f";
+}
+.icon_drawer_alt:before {
+	content: "\e020";
+}
+.icon_toolbox_alt:before {
+	content: "\e021";
+}
+.icon_book_alt:before {
+	content: "\e022";
+}
+.icon_calendar:before {
+	content: "\e023";
+}
+.icon_film:before {
+	content: "\e024";
+}
+.icon_table:before {
+	content: "\e025";
+}
+.icon_contacts_alt:before {
+	content: "\e026";
+}
+.icon_headphones:before {
+	content: "\e027";
+}
+.icon_lifesaver:before {
+	content: "\e028";
+}
+.icon_piechart:before {
+	content: "\e029";
+}
+.icon_refresh:before {
+	content: "\e02a";
+}
+.icon_link_alt:before {
+	content: "\e02b";
+}
+.icon_link:before {
+	content: "\e02c";
+}
+.icon_loading:before {
+	content: "\e02d";
+}
+.icon_blocked:before {
+	content: "\e02e";
+}
+.icon_archive_alt:before {
+	content: "\e02f";
+}
+.icon_heart_alt:before {
+	content: "\e030";
+}
+.icon_star_alt:before {
+	content: "\e031";
+}
+.icon_star-half_alt:before {
+	content: "\e032";
+}
+.icon_star:before {
+	content: "\e033";
+}
+.icon_star-half:before {
+	content: "\e034";
+}
+.icon_tools:before {
+	content: "\e035";
+}
+.icon_tool:before {
+	content: "\e036";
+}
+.icon_cog:before {
+	content: "\e037";
+}
+.icon_cogs:before {
+	content: "\e038";
+}
+.arrow_up_alt:before {
+	content: "\e039";
+}
+.arrow_down_alt:before {
+	content: "\e03a";
+}
+.arrow_left_alt:before {
+	content: "\e03b";
+}
+.arrow_right_alt:before {
+	content: "\e03c";
+}
+.arrow_left-up_alt:before {
+	content: "\e03d";
+}
+.arrow_right-up_alt:before {
+	content: "\e03e";
+}
+.arrow_right-down_alt:before {
+	content: "\e03f";
+}
+.arrow_left-down_alt:before {
+	content: "\e040";
+}
+.arrow_condense_alt:before {
+	content: "\e041";
+}
+.arrow_expand_alt3:before {
+	content: "\e042";
+}
+.arrow_carrot_up_alt:before {
+	content: "\e043";
+}
+.arrow_carrot-down_alt:before {
+	content: "\e044";
+}
+.arrow_carrot-left_alt:before {
+	content: "\e045";
+}
+.arrow_carrot-right_alt:before {
+	content: "\e046";
+}
+.arrow_carrot-2up_alt:before {
+	content: "\e047";
+}
+.arrow_carrot-2dwnn_alt:before {
+	content: "\e048";
+}
+.arrow_carrot-2left_alt:before {
+	content: "\e049";
+}
+.arrow_carrot-2right_alt:before {
+	content: "\e04a";
+}
+.arrow_triangle-up_alt:before {
+	content: "\e04b";
+}
+.arrow_triangle-down_alt:before {
+	content: "\e04c";
+}
+.arrow_triangle-left_alt:before {
+	content: "\e04d";
+}
+.arrow_triangle-right_alt:before {
+	content: "\e04e";
+}
+.icon_minus_alt:before {
+	content: "\e04f";
+}
+.icon_plus_alt:before {
+	content: "\e050";
+}
+.icon_close_alt:before {
+	content: "\e051";
+}
+.icon_check_alt:before {
+	content: "\e052";
+}
+.icon_zoom-out:before {
+	content: "\e053";
+}
+.icon_zoom-in:before {
+	content: "\e054";
+}
+.icon_stop_alt:before {
+	content: "\e055";
+}
+.icon_menu-square_alt:before {
+	content: "\e056";
+}
+.icon_menu-circle_alt:before {
+	content: "\e057";
+}
+.icon_document:before {
+	content: "\e058";
+}
+.icon_documents:before {
+	content: "\e059";
+}
+.icon_pencil_alt:before {
+	content: "\e05a";
+}
+.icon_folder:before {
+	content: "\e05b";
+}
+.icon_folder-open:before {
+	content: "\e05c";
+}
+.icon_folder-add:before {
+	content: "\e05d";
+}
+.icon_folder_upload:before {
+	content: "\e05e";
+}
+.icon_folder_download:before {
+	content: "\e05f";
+}
+.icon_info:before {
+	content: "\e060";
+}
+.icon_error-circle:before {
+	content: "\e061";
+}
+.icon_error-oct:before {
+	content: "\e062";
+}
+.icon_error-triangle:before {
+	content: "\e063";
+}
+.icon_question_alt:before {
+	content: "\e064";
+}
+.icon_comment:before {
+	content: "\e065";
+}
+.icon_chat:before {
+	content: "\e066";
+}
+.icon_vol-mute:before {
+	content: "\e067";
+}
+.icon_volume-low:before {
+	content: "\e068";
+}
+.icon_volume-high:before {
+	content: "\e069";
+}
+.icon_quotations_alt:before {
+	content: "\e06a";
+}
+.icon_clock:before {
+	content: "\e06b";
+}
+.icon_lock:before {
+	content: "\e06c";
+}
+.icon_lock-open:before {
+	content: "\e06d";
+}
+.icon_key:before {
+	content: "\e06e";
+}
+.icon_cloud:before {
+	content: "\e06f";
+}
+.icon_cloud-upload:before {
+	content: "\e070";
+}
+.icon_cloud-download:before {
+	content: "\e071";
+}
+.icon_lightbulb:before {
+	content: "\e072";
+}
+.icon_gift:before {
+	content: "\e073";
+}
+.icon_house:before {
+	content: "\e074";
+}
+.icon_camera:before {
+	content: "\e075";
+}
+.icon_mail:before {
+	content: "\e076";
+}
+.icon_cone:before {
+	content: "\e077";
+}
+.icon_ribbon:before {
+	content: "\e078";
+}
+.icon_bag:before {
+	content: "\e079";
+}
+.icon_cart:before {
+	content: "\e07a";
+}
+.icon_tag:before {
+	content: "\e07b";
+}
+.icon_tags:before {
+	content: "\e07c";
+}
+.icon_trash:before {
+	content: "\e07d";
+}
+.icon_cursor:before {
+	content: "\e07e";
+}
+.icon_mic:before {
+	content: "\e07f";
+}
+.icon_compass:before {
+	content: "\e080";
+}
+.icon_pin:before {
+	content: "\e081";
+}
+.icon_pushpin:before {
+	content: "\e082";
+}
+.icon_map:before {
+	content: "\e083";
+}
+.icon_drawer:before {
+	content: "\e084";
+}
+.icon_toolbox:before {
+	content: "\e085";
+}
+.icon_book:before {
+	content: "\e086";
+}
+.icon_contacts:before {
+	content: "\e087";
+}
+.icon_archive:before {
+	content: "\e088";
+}
+.icon_heart:before {
+	content: "\e089";
+}
+.icon_profile:before {
+	content: "\e08a";
+}
+.icon_group:before {
+	content: "\e08b";
+}
+.icon_grid-2x2:before {
+	content: "\e08c";
+}
+.icon_grid-3x3:before {
+	content: "\e08d";
+}
+.icon_music:before {
+	content: "\e08e";
+}
+.icon_pause_alt:before {
+	content: "\e08f";
+}
+.icon_phone:before {
+	content: "\e090";
+}
+.icon_upload:before {
+	content: "\e091";
+}
+.icon_download:before {
+	content: "\e092";
+}
+.social_facebook:before {
+	content: "\e093";
+}
+.social_twitter:before {
+	content: "\e094";
+}
+.social_pinterest:before {
+	content: "\e095";
+}
+.social_googleplus:before {
+	content: "\e096";
+}
+.social_tumblr:before {
+	content: "\e097";
+}
+.social_tumbleupon:before {
+	content: "\e098";
+}
+.social_wordpress:before {
+	content: "\e099";
+}
+.social_instagram:before {
+	content: "\e09a";
+}
+.social_dribbble:before {
+	content: "\e09b";
+}
+.social_vimeo:before {
+	content: "\e09c";
+}
+.social_linkedin:before {
+	content: "\e09d";
+}
+.social_rss:before {
+	content: "\e09e";
+}
+.social_deviantart:before {
+	content: "\e09f";
+}
+.social_share:before {
+	content: "\e0a0";
+}
+.social_myspace:before {
+	content: "\e0a1";
+}
+.social_skype:before {
+	content: "\e0a2";
+}
+.social_youtube:before {
+	content: "\e0a3";
+}
+.social_picassa:before {
+	content: "\e0a4";
+}
+.social_googledrive:before {
+	content: "\e0a5";
+}
+.social_flickr:before {
+	content: "\e0a6";
+}
+.social_blogger:before {
+	content: "\e0a7";
+}
+.social_spotify:before {
+	content: "\e0a8";
+}
+.social_delicious:before {
+	content: "\e0a9";
+}
+.social_facebook_circle:before {
+	content: "\e0aa";
+}
+.social_twitter_circle:before {
+	content: "\e0ab";
+}
+.social_pinterest_circle:before {
+	content: "\e0ac";
+}
+.social_googleplus_circle:before {
+	content: "\e0ad";
+}
+.social_tumblr_circle:before {
+	content: "\e0ae";
+}
+.social_stumbleupon_circle:before {
+	content: "\e0af";
+}
+.social_wordpress_circle:before {
+	content: "\e0b0";
+}
+.social_instagram_circle:before {
+	content: "\e0b1";
+}
+.social_dribbble_circle:before {
+	content: "\e0b2";
+}
+.social_vimeo_circle:before {
+	content: "\e0b3";
+}
+.social_linkedin_circle:before {
+	content: "\e0b4";
+}
+.social_rss_circle:before {
+	content: "\e0b5";
+}
+.social_deviantart_circle:before {
+	content: "\e0b6";
+}
+.social_share_circle:before {
+	content: "\e0b7";
+}
+.social_myspace_circle:before {
+	content: "\e0b8";
+}
+.social_skype_circle:before {
+	content: "\e0b9";
+}
+.social_youtube_circle:before {
+	content: "\e0ba";
+}
+.social_picassa_circle:before {
+	content: "\e0bb";
+}
+.social_googledrive_alt2:before {
+	content: "\e0bc";
+}
+.social_flickr_circle:before {
+	content: "\e0bd";
+}
+.social_blogger_circle:before {
+	content: "\e0be";
+}
+.social_spotify_circle:before {
+	content: "\e0bf";
+}
+.social_delicious_circle:before {
+	content: "\e0c0";
+}
+.social_facebook_square:before {
+	content: "\e0c1";
+}
+.social_twitter_square:before {
+	content: "\e0c2";
+}
+.social_pinterest_square:before {
+	content: "\e0c3";
+}
+.social_googleplus_square:before {
+	content: "\e0c4";
+}
+.social_tumblr_square:before {
+	content: "\e0c5";
+}
+.social_stumbleupon_square:before {
+	content: "\e0c6";
+}
+.social_wordpress_square:before {
+	content: "\e0c7";
+}
+.social_instagram_square:before {
+	content: "\e0c8";
+}
+.social_dribbble_square:before {
+	content: "\e0c9";
+}
+.social_vimeo_square:before {
+	content: "\e0ca";
+}
+.social_linkedin_square:before {
+	content: "\e0cb";
+}
+.social_rss_square:before {
+	content: "\e0cc";
+}
+.social_deviantart_square:before {
+	content: "\e0cd";
+}
+.social_share_square:before {
+	content: "\e0ce";
+}
+.social_myspace_square:before {
+	content: "\e0cf";
+}
+.social_skype_square:before {
+	content: "\e0d0";
+}
+.social_youtube_square:before {
+	content: "\e0d1";
+}
+.social_picassa_square:before {
+	content: "\e0d2";
+}
+.social_googledrive_square:before {
+	content: "\e0d3";
+}
+.social_flickr_square:before {
+	content: "\e0d4";
+}
+.social_blogger_square:before {
+	content: "\e0d5";
+}
+.social_spotify_square:before {
+	content: "\e0d6";
+}
+.social_delicious_square:before {
+	content: "\e0d7";
+}
+.icon_printer:before {
+	content: "\e103";
+}
+.icon_calulator:before {
+	content: "\e0ee";
+}
+.icon_building:before {
+	content: "\e0ef";
+}
+.icon_floppy:before {
+	content: "\e0e8";
+}
+.icon_drive:before {
+	content: "\e0ea";
+}
+.icon_search-2:before {
+	content: "\e101";
+}
+.icon_id:before {
+	content: "\e107";
+}
+.icon_id-2:before {
+	content: "\e108";
+}
+.icon_puzzle:before {
+	content: "\e102";
+}
+.icon_like:before {
+	content: "\e106";
+}
+.icon_dislike:before {
+	content: "\e0eb";
+}
+.icon_mug:before {
+	content: "\e105";
+}
+.icon_currency:before {
+	content: "\e0ed";
+}
+.icon_wallet:before {
+	content: "\e100";
+}
+.icon_pens:before {
+	content: "\e104";
+}
+.icon_easel:before {
+	content: "\e0e9";
+}
+.icon_flowchart:before {
+	content: "\e109";
+}
+.icon_datareport:before {
+	content: "\e0ec";
+}
+.icon_briefcase:before {
+	content: "\e0fe";
+}
+.icon_shield:before {
+	content: "\e0f6";
+}
+.icon_percent:before {
+	content: "\e0fb";
+}
+.icon_globe:before {
+	content: "\e0e2";
+}
+.icon_globe-2:before {
+	content: "\e0e3";
+}
+.icon_target:before {
+	content: "\e0f5";
+}
+.icon_hourglass:before {
+	content: "\e0e1";
+}
+.icon_balance:before {
+	content: "\e0ff";
+}
+.icon_rook:before {
+	content: "\e0f8";
+}
+.icon_printer-alt:before {
+	content: "\e0fa";
+}
+.icon_calculator_alt:before {
+	content: "\e0e7";
+}
+.icon_building_alt:before {
+	content: "\e0fd";
+}
+.icon_floppy_alt:before {
+	content: "\e0e4";
+}
+.icon_drive_alt:before {
+	content: "\e0e5";
+}
+.icon_search_alt:before {
+	content: "\e0f7";
+}
+.icon_id_alt:before {
+	content: "\e0e0";
+}
+.icon_id-2_alt:before {
+	content: "\e0fc";
+}
+.icon_puzzle_alt:before {
+	content: "\e0f9";
+}
+.icon_like_alt:before {
+	content: "\e0dd";
+}
+.icon_dislike_alt:before {
+	content: "\e0f1";
+}
+.icon_mug_alt:before {
+	content: "\e0dc";
+}
+.icon_currency_alt:before {
+	content: "\e0f3";
+}
+.icon_wallet_alt:before {
+	content: "\e0d8";
+}
+.icon_pens_alt:before {
+	content: "\e0db";
+}
+.icon_easel_alt:before {
+	content: "\e0f0";
+}
+.icon_flowchart_alt:before {
+	content: "\e0df";
+}
+.icon_datareport_alt:before {
+	content: "\e0f2";
+}
+.icon_briefcase_alt:before {
+	content: "\e0f4";
+}
+.icon_shield_alt:before {
+	content: "\e0d9";
+}
+.icon_percent_alt:before {
+	content: "\e0da";
+}
+.icon_globe_alt:before {
+	content: "\e0de";
+}
+.icon_clipboard:before {
+	content: "\e0e6";
+}
+
+
+	.glyph {
+		float: left;
+		text-align: center;
+		padding: .75em;
+		margin: .4em 1.5em .75em 0;
+		width: 6em;
+text-shadow: none;
+	}
+        .glyph_big {
+        font-size: 128px;
+        color: #59c5dc;
+        float: left;
+        margin-right: 20px;
+        }
+
+        .glyph div { padding-bottom: 10px;}
+
+	.glyph input {
+		font-family: consolas, monospace;
+		font-size: 12px;
+		width: 100%;
+		text-align: center;
+		border: 0;
+		box-shadow: 0 0 0 1px #ccc;
+		padding: .2em;
+                -moz-border-radius: 5px;
+                -webkit-border-radius: 5px;
+	}
+	.centered {
+		margin-left: auto;
+		margin-right: auto;
+	}
+	.glyph .fs1 {
+		font-size: 2em;
+	}
+
+	
diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/css/font-awesome.min.css b/src/main/jbake/assets/fonts/font-awesome-4.1.0/css/font-awesome.min.css
new file mode 100755
index 0000000..ec53d4d
--- /dev/null
+++ b/src/main/jbake/assets/fonts/font-awesome-4.1.0/css/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
+ *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}
\ No newline at end of file
diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/FontAwesome.otf b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/FontAwesome.otf
new file mode 100755
index 0000000..81c9ad9
--- /dev/null
+++ b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/FontAwesome.otf
Binary files differ
diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.eot b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.eot
new file mode 100755
index 0000000..84677bc
--- /dev/null
+++ b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.eot
Binary files differ
diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg
new file mode 100755
index 0000000..d907b25
--- /dev/null
+++ b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg
@@ -0,0 +1,520 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="fontawesomeregular" horiz-adv-x="1536" >
+<font-face units-per-em="1792" ascent="1536" descent="-256" />
+<missing-glyph horiz-adv-x="448" />
+<glyph unicode=" "  horiz-adv-x="448" />
+<glyph unicode="&#x09;" horiz-adv-x="448" />
+<glyph unicode="&#xa0;" horiz-adv-x="448" />
+<glyph unicode="&#xa8;" horiz-adv-x="1792" />
+<glyph unicode="&#xa9;" horiz-adv-x="1792" />
+<glyph unicode="&#xae;" horiz-adv-x="1792" />
+<glyph unicode="&#xb4;" horiz-adv-x="1792" />
+<glyph unicode="&#xc6;" horiz-adv-x="1792" />
+<glyph unicode="&#xd8;" horiz-adv-x="1792" />
+<glyph unicode="&#x2000;" horiz-adv-x="768" />
+<glyph unicode="&#x2001;" horiz-adv-x="1537" />
+<glyph unicode="&#x2002;" horiz-adv-x="768" />
+<glyph unicode="&#x2003;" horiz-adv-x="1537" />
+<glyph unicode="&#x2004;" horiz-adv-x="512" />
+<glyph unicode="&#x2005;" horiz-adv-x="384" />
+<glyph unicode="&#x2006;" horiz-adv-x="256" />
+<glyph unicode="&#x2007;" horiz-adv-x="256" />
+<glyph unicode="&#x2008;" horiz-adv-x="192" />
+<glyph unicode="&#x2009;" horiz-adv-x="307" />
+<glyph unicode="&#x200a;" horiz-adv-x="85" />
+<glyph unicode="&#x202f;" horiz-adv-x="307" />
+<glyph unicode="&#x205f;" horiz-adv-x="384" />
+<glyph unicode="&#x2122;" horiz-adv-x="1792" />
+<glyph unicode="&#x221e;" horiz-adv-x="1792" />
+<glyph unicode="&#x2260;" horiz-adv-x="1792" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
+<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
+<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
+<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
+<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
+<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
+<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
+<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
+<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
+<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
+<glyph unicode="&#xf016;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
+<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
+<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
+<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
+<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
+<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
+<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
+<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
+<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
+<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
+<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
+<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
+<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
+<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
+<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
+<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
+<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
+<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
+<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
+<glyph unicode="&#xf035;" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
+<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
+<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
+<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
+<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
+<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
+<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
+<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
+<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
+<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
+<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
+<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
+<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
+<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
+<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
+<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
+<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
+<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
+<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
+<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
+<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
+<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
+<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
+<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
+<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
+<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
+<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
+<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
+<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
+<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
+<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
+<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
+<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
+<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
+<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
+<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
+<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
+<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf082;" d="M1536 160q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5v-960z" />
+<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
+<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
+<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
+<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
+<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
+<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
+<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
+<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
+<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
+<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
+<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
+<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
+<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
+<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
+<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
+<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
+<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
+<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
+<glyph unicode="&#xf0a2;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
+<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
+<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
+<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
+<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
+<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
+<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
+<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
+<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
+<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
+<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
+<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
+<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
+<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
+<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
+<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
+<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
+<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
+<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
+<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
+<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
+<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
+<glyph unicode="&#xf0d4;" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" />
+<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
+<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
+<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
+<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
+<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
+<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
+<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
+<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
+<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
+<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
+<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
+<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
+<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
+<glyph unicode="&#xf0f3;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0f6;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
+<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
+<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
+<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
+<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
+<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
+<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
+<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
+<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
+<glyph unicode="&#xf110;" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
+<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
+<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
+<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
+<glyph unicode="&#xf116;" horiz-adv-x="1792" />
+<glyph unicode="&#xf117;" horiz-adv-x="1792" />
+<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
+<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
+<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
+<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
+<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
+<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
+<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
+<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
+<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
+<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
+<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
+<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
+<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
+<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
+<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
+<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
+<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
+<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
+<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
+<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
+<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
+<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
+<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
+<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
+<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
+<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
+<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
+<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
+<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
+<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
+<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
+<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
+<glyph unicode="&#xf15b;" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
+<glyph unicode="&#xf15c;" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
+<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
+<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
+<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
+<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
+<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
+<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
+<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
+<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
+<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
+<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
+<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
+<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
+<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
+<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
+<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
+<glyph unicode="&#xf174;" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
+<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
+<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
+<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
+<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
+<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
+<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
+<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
+<glyph unicode="&#xf180;" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
+<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
+<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
+<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
+<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
+<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
+<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
+<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
+<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
+<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
+<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
+<glyph unicode="&#xf194;" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
+<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
+<glyph unicode="&#xf199;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
+<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
+<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
+<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
+<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
+<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
+<glyph unicode="&#xf1a0;" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
+<glyph unicode="&#xf1a1;" horiz-adv-x="1984" d="M831 572q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98zM1292 711q56 0 96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41zM1984 722q0 -62 -31 -114t-83 -82q5 -33 5 -61 q0 -121 -68.5 -230.5t-197.5 -193.5q-125 -82 -285.5 -125.5t-335.5 -43.5q-176 0 -336.5 43.5t-284.5 125.5q-129 84 -197.5 193t-68.5 231q0 29 5 66q-48 31 -77 81.5t-29 109.5q0 94 66 160t160 66q83 0 148 -55q248 158 592 164l134 423q4 14 17.5 21.5t28.5 4.5 l347 -82q22 50 68.5 81t102.5 31q77 0 131.5 -54.5t54.5 -131.5t-54.5 -132t-131.5 -55q-76 0 -130.5 54t-55.5 131l-315 74l-116 -366q327 -14 560 -166q64 58 151 58q94 0 160 -66t66 -160zM1664 1459q-45 0 -77 -32t-32 -77t32 -77t77 -32t77 32t32 77t-32 77t-77 32z M77 722q0 -67 51 -111q49 131 180 235q-36 25 -82 25q-62 0 -105.5 -43.5t-43.5 -105.5zM1567 105q112 73 171.5 166t59.5 194t-59.5 193.5t-171.5 165.5q-116 75 -265.5 115.5t-313.5 40.5t-313.5 -40.5t-265.5 -115.5q-112 -73 -171.5 -165.5t-59.5 -193.5t59.5 -194 t171.5 -166q116 -75 265.5 -115.5t313.5 -40.5t313.5 40.5t265.5 115.5zM1850 605q57 46 57 117q0 62 -43.5 105.5t-105.5 43.5q-49 0 -86 -28q131 -105 178 -238zM1258 237q11 11 27 11t27 -11t11 -27.5t-11 -27.5q-99 -99 -319 -99h-2q-220 0 -319 99q-11 11 -11 27.5 t11 27.5t27 11t27 -11q77 -77 265 -77h2q188 0 265 77z" />
+<glyph unicode="&#xf1a2;" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
+<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
+<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
+<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
+<glyph unicode="&#xf1a7;" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
+<glyph unicode="&#xf1a9;" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
+<glyph unicode="&#xf1aa;" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
+<glyph unicode="&#xf1ab;" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
+<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
+<glyph unicode="&#xf1ad;" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
+<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
+<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
+<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
+<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
+<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
+<glyph unicode="&#xf1b5;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
+<glyph unicode="&#xf1b6;" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
+<glyph unicode="&#xf1b7;" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
+<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
+<glyph unicode="&#xf1b9;" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
+<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
+<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
+<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf1bd;" d="M1397 1408q58 0 98.5 -40.5t40.5 -98.5v-1258q0 -58 -40.5 -98.5t-98.5 -40.5h-1258q-58 0 -98.5 40.5t-40.5 98.5v1258q0 58 40.5 98.5t98.5 40.5h1258zM1465 11v1258q0 28 -20 48t-48 20h-1258q-28 0 -48 -20t-20 -48v-1258q0 -28 20 -48t48 -20h1258q28 0 48 20t20 48 zM694 749l188 -387l533 145v-496q0 -7 -5.5 -12.5t-12.5 -5.5h-1258q-7 0 -12.5 5.5t-5.5 12.5v141l711 195l-212 439q4 1 12 2.5t12 1.5q170 32 303.5 21.5t221 -46t143.5 -94.5q27 -28 -25 -42q-64 -16 -256 -62l-97 198q-111 7 -240 -16zM1397 1287q7 0 12.5 -5.5 t5.5 -12.5v-428q-85 30 -188 52q-294 64 -645 12l-18 -3l-65 134h-233l85 -190q-132 -51 -230 -137v560q0 7 5.5 12.5t12.5 5.5h1258zM286 387q-14 -3 -26 4.5t-14 21.5q-24 203 166 305l129 -270z" />
+<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
+<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
+<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
+<glyph unicode="&#xf1c2;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
+<glyph unicode="&#xf1c3;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
+<glyph unicode="&#xf1c4;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
+<glyph unicode="&#xf1c5;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
+<glyph unicode="&#xf1c6;" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
+<glyph unicode="&#xf1c7;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
+<glyph unicode="&#xf1c8;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
+<glyph unicode="&#xf1c9;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
+<glyph unicode="&#xf1ca;" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
+<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
+<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
+<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
+<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" />
+<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
+<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
+<glyph unicode="&#xf1d4;" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
+<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
+<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
+<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
+<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
+<glyph unicode="&#xf1da;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf1db;" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
+<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
+<glyph unicode="&#xf1de;" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
+<glyph unicode="&#xf1e0;" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
+<glyph unicode="&#xf1e1;" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+<glyph unicode="&#xf1e3;" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
+<glyph unicode="&#xf1e4;" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
+<glyph unicode="&#xf1e5;" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf1e6;" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
+<glyph unicode="&#xf1e7;" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
+<glyph unicode="&#xf1e8;" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
+<glyph unicode="&#xf1e9;" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
+<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
+<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
+<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf1ed;" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" />
+<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
+<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
+<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
+<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
+<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
+<glyph unicode="&#xf1f8;" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf1f9;" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf1fa;" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
+<glyph unicode="&#xf1fb;" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
+<glyph unicode="&#xf1fc;" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
+<glyph unicode="&#xf1fd;" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
+<glyph unicode="&#xf1fe;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
+<glyph unicode="&#xf200;" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="&#xf201;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
+<glyph unicode="&#xf202;" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
+<glyph unicode="&#xf203;" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="&#xf204;" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
+<glyph unicode="&#xf205;" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
+<glyph unicode="&#xf206;" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
+<glyph unicode="&#xf207;" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
+<glyph unicode="&#xf208;" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
+<glyph unicode="&#xf209;" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
+<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
+<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
+<glyph unicode="&#xf20d;" horiz-adv-x="1792" />
+<glyph unicode="&#xf20e;" horiz-adv-x="1792" />
+<glyph unicode="&#xf500;" horiz-adv-x="1792" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf
new file mode 100755
index 0000000..96a3639
--- /dev/null
+++ b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf
Binary files differ
diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff
new file mode 100755
index 0000000..628b6a5
--- /dev/null
+++ b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff
Binary files differ
diff --git a/src/main/jbake/assets/img/gdamour.jpg b/src/main/jbake/assets/img/gdamour.jpg
new file mode 100644
index 0000000..148cc7b
--- /dev/null
+++ b/src/main/jbake/assets/img/gdamour.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/genspring.jpg b/src/main/jbake/assets/img/genspring.jpg
new file mode 100644
index 0000000..a7bd1db
--- /dev/null
+++ b/src/main/jbake/assets/img/genspring.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/header.jpg b/src/main/jbake/assets/img/header.jpg
new file mode 100755
index 0000000..56da914
--- /dev/null
+++ b/src/main/jbake/assets/img/header.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/jgenender.jpg b/src/main/jbake/assets/img/jgenender.jpg
new file mode 100644
index 0000000..06c40dd
--- /dev/null
+++ b/src/main/jbake/assets/img/jgenender.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/loader.gif b/src/main/jbake/assets/img/loader.gif
new file mode 100755
index 0000000..ab26baa
--- /dev/null
+++ b/src/main/jbake/assets/img/loader.gif
Binary files differ
diff --git a/src/main/jbake/assets/img/logo-active.png b/src/main/jbake/assets/img/logo-active.png
new file mode 100755
index 0000000..2352448
--- /dev/null
+++ b/src/main/jbake/assets/img/logo-active.png
Binary files differ
diff --git a/src/main/jbake/assets/img/logo.png b/src/main/jbake/assets/img/logo.png
new file mode 100755
index 0000000..05dc2e7
--- /dev/null
+++ b/src/main/jbake/assets/img/logo.png
Binary files differ
diff --git a/src/main/jbake/assets/img/manugeorge.jpg b/src/main/jbake/assets/img/manugeorge.jpg
new file mode 100644
index 0000000..f69f4f7
--- /dev/null
+++ b/src/main/jbake/assets/img/manugeorge.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/mnour.jpg b/src/main/jbake/assets/img/mnour.jpg
new file mode 100644
index 0000000..e797b8b
--- /dev/null
+++ b/src/main/jbake/assets/img/mnour.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/noimg.png b/src/main/jbake/assets/img/noimg.png
new file mode 100644
index 0000000..f779c8f
--- /dev/null
+++ b/src/main/jbake/assets/img/noimg.png
Binary files differ
diff --git a/src/main/jbake/assets/img/popup.jpg b/src/main/jbake/assets/img/popup.jpg
new file mode 100755
index 0000000..ce52cc4
--- /dev/null
+++ b/src/main/jbake/assets/img/popup.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/pricing1.jpg b/src/main/jbake/assets/img/pricing1.jpg
new file mode 100755
index 0000000..549ed9a
--- /dev/null
+++ b/src/main/jbake/assets/img/pricing1.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/pricing2.jpg b/src/main/jbake/assets/img/pricing2.jpg
new file mode 100755
index 0000000..4834c99
--- /dev/null
+++ b/src/main/jbake/assets/img/pricing2.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/rickmcguire.jpg b/src/main/jbake/assets/img/rickmcguire.jpg
new file mode 100644
index 0000000..4e7252f
--- /dev/null
+++ b/src/main/jbake/assets/img/rickmcguire.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/table-1-hover.jpg b/src/main/jbake/assets/img/table-1-hover.jpg
new file mode 100755
index 0000000..8956876
--- /dev/null
+++ b/src/main/jbake/assets/img/table-1-hover.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/table-1.jpg b/src/main/jbake/assets/img/table-1.jpg
new file mode 100755
index 0000000..ede0992
--- /dev/null
+++ b/src/main/jbake/assets/img/table-1.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/table-2-hover.jpg b/src/main/jbake/assets/img/table-2-hover.jpg
new file mode 100755
index 0000000..c9e7c38
--- /dev/null
+++ b/src/main/jbake/assets/img/table-2-hover.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/table-2.jpg b/src/main/jbake/assets/img/table-2.jpg
new file mode 100755
index 0000000..bbd10d6
--- /dev/null
+++ b/src/main/jbake/assets/img/table-2.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/table-3-hover.jpg b/src/main/jbake/assets/img/table-3-hover.jpg
new file mode 100755
index 0000000..bac3c5d
--- /dev/null
+++ b/src/main/jbake/assets/img/table-3-hover.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/table-3.jpg b/src/main/jbake/assets/img/table-3.jpg
new file mode 100755
index 0000000..877a159
--- /dev/null
+++ b/src/main/jbake/assets/img/table-3.jpg
Binary files differ
diff --git a/src/main/jbake/assets/img/xuhaihong.jpg b/src/main/jbake/assets/img/xuhaihong.jpg
new file mode 100644
index 0000000..0d588d7
--- /dev/null
+++ b/src/main/jbake/assets/img/xuhaihong.jpg
Binary files differ
diff --git a/src/main/jbake/assets/js/bootstrap.min.js b/src/main/jbake/assets/js/bootstrap.min.js
new file mode 100755
index 0000000..133aeec
--- /dev/null
+++ b/src/main/jbake/assets/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),
+d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/src/main/jbake/assets/js/highlight.pack.js b/src/main/jbake/assets/js/highlight.pack.js
new file mode 100755
index 0000000..6797e89
--- /dev/null
+++ b/src/main/jbake/assets/js/highlight.pack.js
@@ -0,0 +1,3 @@
+/*! highlight.js v9.2.0 | BSD3 License | git.io/hljslicense */
+!function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(e){function t(e){return e.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0==r.index}function n(e){return/^(no-?highlight|plain|text)$/i.test(e)}function i(e){var t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",r=/\blang(?:uage)?-([\w-]+)\b/i.exec(i))return y(r[1])?r[1]:"no-highlight";for(i=i.split(/\s+/),t=0,a=i.length;a>t;t++)if(y(i[t])||n(i[t]))return i[t]}function s(e,t){var r,a={};for(r in e)a[r]=e[r];if(t)for(r in t)a[r]=t[r];return a}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?n+=i.nodeValue.length:1==i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!=a[0].offset?e[0].offset<a[0].offset?e:a:"start"==a[0].event?e:a:e.length?e:a}function s(e){function a(e){return" "+e.nodeName+'="'+t(e.value)+'"'}u+="<"+r(e)+Array.prototype.map.call(e.attributes,a).join("")+">"}function c(e){u+="</"+r(e)+">"}function o(e){("start"==e.event?s:c)(e.node)}for(var l=0,u="",d=[];e.length||a.length;){var b=i();if(u+=t(n.substr(l,b[0].offset-l)),l=b[0].offset,b==e){d.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b==e&&b.length&&b[0].offset==l);d.reverse().forEach(s)}else"start"==b[0].event?d.push(b[0].node):d.pop(),o(b.splice(0,1)[0])}return u+t(n.substr(l))}function l(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var c={},o=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(" ").forEach(function(e){var r=e.split("|");c[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?o("keyword",n.k):Object.keys(n.k).forEach(function(e){o(e,n.k[e])}),n.k=c}n.lR=r(n.l||/\b\w+\b/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),void 0===n.r&&(n.r=1),n.c||(n.c=[]);var l=[];n.c.forEach(function(e){e.v?e.v.forEach(function(t){l.push(s(e,t))}):l.push("self"==e?n:e)}),n.c=l,n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var u=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=u.length?r(u.join("|"),!0):{exec:function(){return null}}}}a(e)}function u(e,r,n,i){function s(e,t){for(var r=0;r<t.c.length;r++)if(a(t.c[r].bR,e))return t.c[r]}function c(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?c(e.parent,t):void 0}function o(e,t){return!n&&a(t.iR,e)}function b(e,t){var r=v.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(r)&&e.k[r]}function p(e,t,r,a){var n=a?"":w.classPrefix,i='<span class="'+n,s=r?"":"</span>";return i+=e+'">',i+t+s}function m(){if(!x.k)return t(E);var e="",r=0;x.lR.lastIndex=0;for(var a=x.lR.exec(E);a;){e+=t(E.substr(r,a.index-r));var n=b(x,a);n?(B+=n[1],e+=p(n[0],t(a[0]))):e+=t(a[0]),r=x.lR.lastIndex,a=x.lR.exec(E)}return e+t(E.substr(r))}function f(){var e="string"==typeof x.sL;if(e&&!N[x.sL])return t(E);var r=e?u(x.sL,E,!0,C[x.sL]):d(E,x.sL.length?x.sL:void 0);return x.r>0&&(B+=r.r),e&&(C[x.sL]=r.top),p(r.language,r.value,!1,!0)}function g(){M+=void 0!==x.sL?f():m(),E=""}function h(e,t){M+=e.cN?p(e.cN,"",!0):"",x=Object.create(e,{parent:{value:x}})}function _(e,t){if(E+=e,void 0===t)return g(),0;var r=s(t,x);if(r)return r.skip?E+=t:(r.eB&&(E+=t),g(),r.rB||r.eB||(E=t)),h(r,t),r.rB?0:t.length;var a=c(x,t);if(a){var n=x;n.skip?E+=t:(n.rE||n.eE||(E+=t),g(),n.eE&&(E=t));do x.cN&&(M+="</span>"),x.skip||(B+=x.r),x=x.parent;while(x!=a.parent);return a.starts&&h(a.starts,""),n.rE?0:t.length}if(o(t,x))throw new Error('Illegal lexeme "'+t+'" for mode "'+(x.cN||"<unnamed>")+'"');return E+=t,t.length||1}var v=y(e);if(!v)throw new Error('Unknown language: "'+e+'"');l(v);var k,x=i||v,C={},M="";for(k=x;k!=v;k=k.parent)k.cN&&(M=p(k.cN,"",!0)+M);var E="",B=0;try{for(var $,z,L=0;;){if(x.t.lastIndex=L,$=x.t.exec(r),!$)break;z=_(r.substr(L,$.index-L),$[0]),L=$.index+z}for(_(r.substr(L)),k=x;k.parent;k=k.parent)k.cN&&(M+="</span>");return{r:B,value:M,language:e,top:x}}catch(R){if(-1!=R.message.indexOf("Illegal"))return{r:0,value:t(r)};throw R}}function d(e,r){r=r||w.languages||Object.keys(N);var a={r:0,value:t(e)},n=a;return r.forEach(function(t){if(y(t)){var r=u(t,e,!1);r.language=t,r.r>n.r&&(n=r),r.r>a.r&&(n=a,a=r)}}),n.language&&(a.second_best=n),a}function b(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,t){return t.replace(/\t/g,w.tabReplace)})),w.useBR&&(e=e.replace(/\n/g,"<br>")),e}function p(e,t,r){var a=t?k[t]:r,n=[e.trim()];return e.match(/\bhljs\b/)||n.push("hljs"),-1===e.indexOf(a)&&n.push(a),n.join(" ").trim()}function m(e){var t=i(e);if(!n(t)){var r;w.useBR?(r=document.createElementNS("http://www.w3.org/1999/xhtml","div"),r.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):r=e;var a=r.textContent,s=t?u(t,a,!0):d(a),l=c(r);if(l.length){var m=document.createElementNS("http://www.w3.org/1999/xhtml","div");m.innerHTML=s.value,s.value=o(l,c(m),a)}s.value=b(s.value),e.innerHTML=s.value,e.className=p(e.className,t,s.language),e.result={language:s.language,re:s.r},s.second_best&&(e.second_best={language:s.second_best.language,re:s.second_best.r})}}function f(e){w=s(w,e)}function g(){if(!g.called){g.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,m)}}function h(){addEventListener("DOMContentLoaded",g,!1),addEventListener("load",g,!1)}function _(t,r){var a=N[t]=r(e);a.aliases&&a.aliases.forEach(function(e){k[e]=t})}function v(){return Object.keys(N)}function y(e){return e=(e||"").toLowerCase(),N[e]||N[k[e]]}var w={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},N={},k={};return e.highlight=u,e.highlightAuto=d,e.fixMarkup=b,e.highlightBlock=m,e.configure=f,e.initHighlighting=g,e.initHighlightingOnLoad=h,e.registerLanguage=_,e.listLanguages=v,e.getLanguage=y,e.inherit=s,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(t,r,a){var n=e.inherit({cN:"comment",b:t,e:r,c:[]},a||{});return n.c.push(e.PWM),n.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),n},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:"</?",e:">"},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),e.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,r,a,t]}}),e.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+r},{b:"`",e:"`",eB:!0,eE:!0,sL:"javascript"}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:r+":",e:":",rB:!0,rE:!0,r:0}])}}),e.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[e.inherit(e.QSM,{b:'((u8?|U)|L)?"'}),{b:'(u8?|U)?R"',e:'"',c:[e.BE]},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{b:e.CNR}],r:0},n={cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef"},c:[{b:/\\\n/,r:0},{bK:"include",e:"$",k:{"meta-keyword":"include"},c:[e.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:"<",e:">",i:"\\n"}]},r,e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"};return{aliases:["c","cc","h","c++","h++","hpp"],k:s,i:"</",c:[t,e.CLCM,e.CBCM,a,r,n,{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:s,c:["self",t]},{b:e.IR+"::",k:s},{bK:"new throw return else",r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:s,r:0,c:[e.CLCM,e.CBCM,r,a]},e.CLCM,e.CBCM,n]}]}}),e.registerLanguage("cs",function(e){var t="abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield",r=e.IR+"(<"+e.IR+">)?";return{aliases:["csharp"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:"<!--|-->"},{b:"</?",e:">"}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},e.ASM,e.QSM,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+r+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}}),e.registerLanguage("css",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",r={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:t,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}}),e.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),e.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),e.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),e.registerLanguage("java",function(e){var t=e.UIR+"(<"+e.UIR+"(\\s*,\\s*"+e.UIR+")*>)?",r="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",a="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",n={cN:"number",b:a,r:0};return{aliases:["jsp"],k:r,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},n,{cN:"meta",b:"@[A-Za-z]+"}]}}),e.registerLanguage("javascript",function(e){return{aliases:["js","jsx"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/</,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:["self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM]}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}}),e.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),e.registerLanguage("makefile",function(e){var t={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[t]}}},{cN:"section",b:/^[\w]+:\s*$/},{cN:"meta",b:/^\.PHONY:/,e:/$/,k:{"meta-keyword":".PHONY"},l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,t]}]}}),e.registerLanguage("xml",function(e){var t="[A-Za-z0-9\\._:-]+",r={eW:!0,i:/</,r:0,c:[{cN:"attr",b:t,r:0},{b:"=",r:0,c:[{cN:"string",v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("<!--","-->",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[r],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[r],starts:{e:"</script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},r]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}|	)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"symbol",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link",e:"$"}}]}]}}),e.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),e.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI|XC)\\w+"},r={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:r,l:a,i:"</",c:[t,e.CLCM,e.CBCM,e.CNM,e.QSM,{cN:"string",v:[{b:'@"',e:'"',i:"\\n",c:[e.BE]},{b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"}]},{cN:"meta",b:"#",e:"$",c:[{cN:"meta-string",v:[{b:'"',e:'"'},{b:"<",e:">"}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:a,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,a.c=s,{aliases:["pl"],k:t,c:s}}),e.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[r]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),e.registerLanguage("python",function(e){var t={cN:"meta",b:/^(>>>|\.\.\.) /},r={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},n={cN:"params",b:/\(/,e:/\)/,c:["self",t,a,r]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[t,a,r,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,n,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",a={cN:"doctag",b:"@[A-Za-z]+"},n={b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},o={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:t}),o].concat(i)},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l,o.c=l;var u="[>?]>",d="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",p=[{b:/^\s*=>/,starts:{e:"$",c:l}},{cN:"meta",b:"^("+u+"|"+d+"|"+b+")",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:i.concat(p).concat(l)}}),e.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke",e:/;/,eW:!0,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",
+    literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}}),e});
\ No newline at end of file
diff --git a/src/main/jbake/assets/js/jquery-1.11.1.min.js b/src/main/jbake/assets/js/jquery-1.11.1.min.js
new file mode 100755
index 0000000..d1608e3
--- /dev/null
+++ b/src/main/jbake/assets/js/jquery-1.11.1.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
\ No newline at end of file
diff --git a/src/main/jbake/assets/js/jquery.onepagenav.js b/src/main/jbake/assets/js/jquery.onepagenav.js
new file mode 100755
index 0000000..8668b46
--- /dev/null
+++ b/src/main/jbake/assets/js/jquery.onepagenav.js
@@ -0,0 +1,223 @@
+/*
+ * jQuery One Page Nav Plugin
+ * http://github.com/davist11/jQuery-One-Page-Nav
+ *
+ * Copyright (c) 2010 Trevor Davis (http://trevordavis.net)
+ * Dual licensed under the MIT and GPL licenses.
+ * Uses the same license as jQuery, see:
+ * http://jquery.org/license
+ *
+ * @version 3.0.0
+ *
+ * Example usage:
+ * $('#nav').onePageNav({
+ *   currentClass: 'current',
+ *   changeHash: false,
+ *   scrollSpeed: 750
+ * });
+ */
+
+;(function($, window, document, undefined){
+
+	// our plugin constructor
+	var OnePageNav = function(elem, options){
+		this.elem = elem;
+		this.$elem = $(elem);
+		this.options = options;
+		this.metadata = this.$elem.data('plugin-options');
+		this.$win = $(window);
+		this.sections = {};
+		this.didScroll = false;
+		this.$doc = $(document);
+		this.docHeight = this.$doc.height();
+	};
+
+	// the plugin prototype
+	OnePageNav.prototype = {
+		defaults: {
+			navItems: 'a',
+			currentClass: 'current',
+			changeHash: false,
+			easing: 'swing',
+			filter: '',
+			scrollSpeed: 750,
+			scrollThreshold: 0.5,
+			begin: false,
+			end: false,
+			scrollChange: false
+		},
+
+		init: function() {
+			// Introduce defaults that can be extended either
+			// globally or using an object literal.
+			this.config = $.extend({}, this.defaults, this.options, this.metadata);
+
+			this.$nav = this.$elem.find(this.config.navItems);
+
+			//Filter any links out of the nav
+			if(this.config.filter !== '') {
+				this.$nav = this.$nav.filter(this.config.filter);
+			}
+
+			//Handle clicks on the nav
+			this.$nav.on('click.onePageNav', $.proxy(this.handleClick, this));
+
+			//Get the section positions
+			this.getPositions();
+
+			//Handle scroll changes
+			this.bindInterval();
+
+			//Update the positions on resize too
+			this.$win.on('resize.onePageNav', $.proxy(this.getPositions, this));
+
+			return this;
+		},
+
+		adjustNav: function(self, $parent) {
+			self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass);
+			$parent.addClass(self.config.currentClass);
+		},
+
+		bindInterval: function() {
+			var self = this;
+			var docHeight;
+
+			self.$win.on('scroll.onePageNav', function() {
+				self.didScroll = true;
+			});
+
+			self.t = setInterval(function() {
+				docHeight = self.$doc.height();
+
+				//If it was scrolled
+				if(self.didScroll) {
+					self.didScroll = false;
+					self.scrollChange();
+				}
+
+				//If the document height changes
+				if(docHeight !== self.docHeight) {
+					self.docHeight = docHeight;
+					self.getPositions();
+				}
+			}, 250);
+		},
+
+		getHash: function($link) {
+			return $link.attr('href').split('#')[1];
+		},
+
+		getPositions: function() {
+			var self = this;
+			var linkHref;
+			var topPos;
+			var $target;
+
+			self.$nav.each(function() {
+				linkHref = self.getHash($(this));
+				$target = $('#' + linkHref);
+
+				if($target.length) {
+					topPos = $target.offset().top;
+					self.sections[linkHref] = Math.round(topPos);
+				}
+			});
+		},
+
+		getSection: function(windowPos) {
+			var returnValue = null;
+			var windowHeight = Math.round(this.$win.height() * this.config.scrollThreshold);
+
+			for(var section in this.sections) {
+				if((this.sections[section] - windowHeight) < windowPos) {
+					returnValue = section;
+				}
+			}
+
+			return returnValue;
+		},
+
+		handleClick: function(e) {
+			var self = this;
+			var $link = $(e.currentTarget);
+			var $parent = $link.parent();
+			var newLoc = '#' + self.getHash($link);
+
+			if(!$parent.hasClass(self.config.currentClass)) {
+				//Start callback
+				if(self.config.begin) {
+					self.config.begin();
+				}
+
+				//Change the highlighted nav item
+				self.adjustNav(self, $parent);
+
+				//Removing the auto-adjust on scroll
+				self.unbindInterval();
+
+				//Scroll to the correct position
+				self.scrollTo(newLoc, function() {
+					//Do we need to change the hash?
+					if(self.config.changeHash) {
+						window.location.hash = newLoc;
+					}
+
+					//Add the auto-adjust on scroll back in
+					self.bindInterval();
+
+					//End callback
+					if(self.config.end) {
+						self.config.end();
+					}
+				});
+			}
+
+			e.preventDefault();
+		},
+
+		scrollChange: function() {
+			var windowTop = this.$win.scrollTop();
+			var position = this.getSection(windowTop);
+			var $parent;
+
+			//If the position is set
+			if(position !== null) {
+				$parent = this.$elem.find('a[href$="#' + position + '"]').parent();
+
+				//If it's not already the current section
+				if(!$parent.hasClass(this.config.currentClass)) {
+					//Change the highlighted nav item
+					this.adjustNav(this, $parent);
+
+					//If there is a scrollChange callback
+					if(this.config.scrollChange) {
+						this.config.scrollChange($parent);
+					}
+				}
+			}
+		},
+
+		scrollTo: function(target, callback) {
+			var offset = $(target).offset().top;
+
+			$('html, body').animate({
+				scrollTop: offset
+			}, this.config.scrollSpeed, this.config.easing, callback);
+		},
+
+		unbindInterval: function() {
+			clearInterval(this.t);
+			this.$win.unbind('scroll.onePageNav');
+		}
+	};
+
+	OnePageNav.defaults = OnePageNav.prototype.defaults;
+
+	$.fn.onePageNav = function(options) {
+		return this.each(function() {
+			new OnePageNav(this, options).init();
+		});
+	};
+
+})( jQuery, window , document );
diff --git a/src/main/jbake/assets/js/main.js b/src/main/jbake/assets/js/main.js
new file mode 100755
index 0000000..a89e437
--- /dev/null
+++ b/src/main/jbake/assets/js/main.js
@@ -0,0 +1,178 @@
+jQuery(function($) {
+	"use strict";
+	// Author Code Here
+
+	var owlPricing;
+	var ratio = 2;
+
+	// Window Load
+	$(window).load(function() {
+		// Preloader
+		$('.intro-tables, .parallax, header').css('opacity', '0');
+		$('.preloader').addClass('animated fadeOut').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
+			$('.preloader').hide();
+			$('.parallax, header').addClass('animated fadeIn').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
+				$('.intro-tables').addClass('animated fadeInUp').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend');
+			});
+		});
+
+		// Header Init
+		if ($(window).height() > $(window).width()) {
+			var ratio = $('.parallax').width() / $('.parallax').height();
+			$('.parallax img').css('height', ($(window).height()) + 'px');
+			$('.parallax img').css('width', $('.parallax').height() * ratio + 'px');
+		}
+
+		$('header').height($(window).height() + 80);
+		$('section .cut').each(function() {
+			if ($(this).hasClass('cut-top'))
+				$(this).css('border-right-width', $(this).parent().width() + "px");
+			else if ($(this).hasClass('cut-bottom'))
+				$(this).css('border-left-width', $(this).parent().width() + "px");
+		});
+
+		// Sliders Init
+		$('.owl-schedule').owlCarousel({
+			singleItem: true,
+			pagination: true
+		});
+		$('.owl-testimonials').owlCarousel({
+			singleItem: true,
+			pagination: true
+		});
+		$('.owl-twitter').owlCarousel({
+			singleItem: true,
+			pagination: true
+		});
+
+		// Navbar Init
+		$('nav').insertAfter('nav').addClass('navbar-fixed-top').css('position', 'fixed').css('top', '0').css('margin-top', '0').removeClass('original');
+		$('.mobile-nav ul').html($('nav .navbar-nav').html());
+		$('nav.navbar-fixed-top .navbar-brand img').attr('src', $('nav.navbar-fixed-top .navbar-brand img').data("active-url"));
+
+		// Typing Intro Init
+		$(".typed").typewriter({
+			speed: 60
+		});
+
+		// Popup Form Init
+		var i = 0;
+		var interval = 0.15;
+		$('.popup-form .dropdown-menu li').each(function() {
+			$(this).css('animation-delay', i + "s");
+			i += interval;
+		});
+		$('.popup-form .dropdown-menu li a').click(function(event) {
+			event.preventDefault();
+			$(this).parent().parent().prev('button').html($(this).html());
+		});
+
+	});
+
+	// Window Resize
+	var resizeContent = function() {
+        $('#main-block').css('min-height', $(window).height() - $('footer').height() - (40 + 60) /*header/footer padding*/);
+    };
+	$(window).resize(resizeContent);
+	resizeContent();
+
+	// Pricing Box Click Event
+	$('.pricing .box-main').click(function() {
+		$('.pricing .box-main').removeClass('active');
+		$('.pricing .box-second').removeClass('active');
+		$(this).addClass('active');
+		$(this).next($('.box-second')).addClass('active');
+		$('#pricing').css("background-image", "url(" + $(this).data('img') + ")");
+		$('#pricing').css("background-size", "cover");
+	});
+
+	// Mobile Nav
+	$('body').on('click', 'nav .navbar-toggle', function() {
+		event.stopPropagation();
+		$('.mobile-nav').addClass('active');
+	});
+
+	$('body').on('click', '.mobile-nav a', function(event) {
+		$('.mobile-nav').removeClass('active');
+		if(!this.hash) return;
+		event.preventDefault();
+		if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
+			event.stopPropagation();
+			var target = $(this.hash);
+			target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
+			if (target.length) {
+				$('html,body').animate({
+					scrollTop: target.offset().top
+				}, 1000);
+				return false;
+			}
+		}
+	});
+
+	$('body').on('click', '.mobile-nav a.close-link', function(event) {
+		$('.mobile-nav').removeClass('active');
+		event.preventDefault();
+	});
+
+	$('body').on('click', 'nav.original .navbar-nav a:not([data-toggle])', function() {
+		if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
+			event.stopPropagation();
+			var target = $(this.hash);
+			target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
+			if (target.length) {
+				$('html,body').animate({
+					scrollTop: target.offset().top
+				}, 1000);
+				return false;
+			}
+		}
+	});
+
+	function centerModal() {
+		$(this).css('display', 'block');
+		var $dialog = $(this).find(".modal-dialog"),
+			offset = ($(window).height() - $dialog.height()) / 2,
+			bottomMargin = parseInt($dialog.css('marginBottom'), 10);
+
+		// Make sure you don't hide the top part of the modal w/ a negative margin
+		// if it's longer than the screen height, and keep the margin equal to 
+		// the bottom margin of the modal
+		if (offset < bottomMargin) offset = bottomMargin;
+		$dialog.css("margin-top", offset);
+	}
+
+	$('.modal').on('show.bs.modal', centerModal);
+
+	$('.modal-popup .close-link').click(function(event){
+		event.preventDefault();
+		$('#modal1').modal('hide');
+	});
+
+	$(window).on("resize", function() {
+		$('.modal:visible').each(centerModal);
+	});
+
+    $(document).ready(function() {
+        // if there is any file tree
+        $('#filetree').each(function (i , v) {
+            var self = $(this);
+            self.tree({
+                data: eval(self.find('p')[0].innerHTML),
+                closedIcon: $('<i class="fa fa-folder-o"</i>;'),
+                openedIcon: $('<i class="fa fa-folder-open-o"</i>')
+            });
+            self.bind(
+                'tree.click',
+                function(event) {
+                    var node = event.node;
+                    if (node.description) {$('#filetreedetail').html(node.description);}
+                }
+            );
+        });
+
+        // code snippet
+        $('pre code').each(function (i, block){
+            hljs.highlightBlock(block);
+        });
+    });
+});
diff --git a/src/main/jbake/assets/js/owl.carousel.min.js b/src/main/jbake/assets/js/owl.carousel.min.js
new file mode 100755
index 0000000..394505e
--- /dev/null
+++ b/src/main/jbake/assets/js/owl.carousel.min.js
@@ -0,0 +1,47 @@
+"function"!==typeof Object.create&&(Object.create=function(f){function g(){}g.prototype=f;return new g});
+(function(f,g,k){var l={init:function(a,b){this.$elem=f(b);this.options=f.extend({},f.fn.owlCarousel.options,this.$elem.data(),a);this.userOptions=a;this.loadContent()},loadContent:function(){function a(a){var d,e="";if("function"===typeof b.options.jsonSuccess)b.options.jsonSuccess.apply(this,[a]);else{for(d in a.owl)a.owl.hasOwnProperty(d)&&(e+=a.owl[d].item);b.$elem.html(e)}b.logIn()}var b=this,e;"function"===typeof b.options.beforeInit&&b.options.beforeInit.apply(this,[b.$elem]);"string"===typeof b.options.jsonPath?
+(e=b.options.jsonPath,f.getJSON(e,a)):b.logIn()},logIn:function(){this.$elem.data("owl-originalStyles",this.$elem.attr("style"));this.$elem.data("owl-originalClasses",this.$elem.attr("class"));this.$elem.css({opacity:0});this.orignalItems=this.options.items;this.checkBrowser();this.wrapperWidth=0;this.checkVisible=null;this.setVars()},setVars:function(){if(0===this.$elem.children().length)return!1;this.baseClass();this.eventTypes();this.$userItems=this.$elem.children();this.itemsAmount=this.$userItems.length;
+this.wrapItems();this.$owlItems=this.$elem.find(".owl-item");this.$owlWrapper=this.$elem.find(".owl-wrapper");this.playDirection="next";this.prevItem=0;this.prevArr=[0];this.currentItem=0;this.customEvents();this.onStartup()},onStartup:function(){this.updateItems();this.calculateAll();this.buildControls();this.updateControls();this.response();this.moveEvents();this.stopOnHover();this.owlStatus();!1!==this.options.transitionStyle&&this.transitionTypes(this.options.transitionStyle);!0===this.options.autoPlay&&
+(this.options.autoPlay=5E3);this.play();this.$elem.find(".owl-wrapper").css("display","block");this.$elem.is(":visible")?this.$elem.css("opacity",1):this.watchVisibility();this.onstartup=!1;this.eachMoveUpdate();"function"===typeof this.options.afterInit&&this.options.afterInit.apply(this,[this.$elem])},eachMoveUpdate:function(){!0===this.options.lazyLoad&&this.lazyLoad();!0===this.options.autoHeight&&this.autoHeight();this.onVisibleItems();"function"===typeof this.options.afterAction&&this.options.afterAction.apply(this,
+[this.$elem])},updateVars:function(){"function"===typeof this.options.beforeUpdate&&this.options.beforeUpdate.apply(this,[this.$elem]);this.watchVisibility();this.updateItems();this.calculateAll();this.updatePosition();this.updateControls();this.eachMoveUpdate();"function"===typeof this.options.afterUpdate&&this.options.afterUpdate.apply(this,[this.$elem])},reload:function(){var a=this;g.setTimeout(function(){a.updateVars()},0)},watchVisibility:function(){var a=this;if(!1===a.$elem.is(":visible"))a.$elem.css({opacity:0}),
+g.clearInterval(a.autoPlayInterval),g.clearInterval(a.checkVisible);else return!1;a.checkVisible=g.setInterval(function(){a.$elem.is(":visible")&&(a.reload(),a.$elem.animate({opacity:1},200),g.clearInterval(a.checkVisible))},500)},wrapItems:function(){this.$userItems.wrapAll('<div class="owl-wrapper">').wrap('<div class="owl-item"></div>');this.$elem.find(".owl-wrapper").wrap('<div class="owl-wrapper-outer">');this.wrapperOuter=this.$elem.find(".owl-wrapper-outer");this.$elem.css("display","block")},
+baseClass:function(){var a=this.$elem.hasClass(this.options.baseClass),b=this.$elem.hasClass(this.options.theme);a||this.$elem.addClass(this.options.baseClass);b||this.$elem.addClass(this.options.theme)},updateItems:function(){var a,b;if(!1===this.options.responsive)return!1;if(!0===this.options.singleItem)return this.options.items=this.orignalItems=1,this.options.itemsCustom=!1,this.options.itemsDesktop=!1,this.options.itemsDesktopSmall=!1,this.options.itemsTablet=!1,this.options.itemsTabletSmall=
+!1,this.options.itemsMobile=!1;a=f(this.options.responsiveBaseWidth).width();a>(this.options.itemsDesktop[0]||this.orignalItems)&&(this.options.items=this.orignalItems);if(!1!==this.options.itemsCustom)for(this.options.itemsCustom.sort(function(a,b){return a[0]-b[0]}),b=0;b<this.options.itemsCustom.length;b+=1)this.options.itemsCustom[b][0]<=a&&(this.options.items=this.options.itemsCustom[b][1]);else a<=this.options.itemsDesktop[0]&&!1!==this.options.itemsDesktop&&(this.options.items=this.options.itemsDesktop[1]),
+a<=this.options.itemsDesktopSmall[0]&&!1!==this.options.itemsDesktopSmall&&(this.options.items=this.options.itemsDesktopSmall[1]),a<=this.options.itemsTablet[0]&&!1!==this.options.itemsTablet&&(this.options.items=this.options.itemsTablet[1]),a<=this.options.itemsTabletSmall[0]&&!1!==this.options.itemsTabletSmall&&(this.options.items=this.options.itemsTabletSmall[1]),a<=this.options.itemsMobile[0]&&!1!==this.options.itemsMobile&&(this.options.items=this.options.itemsMobile[1]);this.options.items>this.itemsAmount&&
+!0===this.options.itemsScaleUp&&(this.options.items=this.itemsAmount)},response:function(){var a=this,b,e;if(!0!==a.options.responsive)return!1;e=f(g).width();a.resizer=function(){f(g).width()!==e&&(!1!==a.options.autoPlay&&g.clearInterval(a.autoPlayInterval),g.clearTimeout(b),b=g.setTimeout(function(){e=f(g).width();a.updateVars()},a.options.responsiveRefreshRate))};f(g).resize(a.resizer)},updatePosition:function(){this.jumpTo(this.currentItem);!1!==this.options.autoPlay&&this.checkAp()},appendItemsSizes:function(){var a=
+this,b=0,e=a.itemsAmount-a.options.items;a.$owlItems.each(function(c){var d=f(this);d.css({width:a.itemWidth}).data("owl-item",Number(c));if(0===c%a.options.items||c===e)c>e||(b+=1);d.data("owl-roundPages",b)})},appendWrapperSizes:function(){this.$owlWrapper.css({width:this.$owlItems.length*this.itemWidth*2,left:0});this.appendItemsSizes()},calculateAll:function(){this.calculateWidth();this.appendWrapperSizes();this.loops();this.max()},calculateWidth:function(){this.itemWidth=Math.round(this.$elem.width()/
+this.options.items)},max:function(){var a=-1*(this.itemsAmount*this.itemWidth-this.options.items*this.itemWidth);this.options.items>this.itemsAmount?this.maximumPixels=a=this.maximumItem=0:(this.maximumItem=this.itemsAmount-this.options.items,this.maximumPixels=a);return a},min:function(){return 0},loops:function(){var a=0,b=0,e,c;this.positionsInArray=[0];this.pagesInArray=[];for(e=0;e<this.itemsAmount;e+=1)b+=this.itemWidth,this.positionsInArray.push(-b),!0===this.options.scrollPerPage&&(c=f(this.$owlItems[e]),
+c=c.data("owl-roundPages"),c!==a&&(this.pagesInArray[a]=this.positionsInArray[e],a=c))},buildControls:function(){if(!0===this.options.navigation||!0===this.options.pagination)this.owlControls=f('<div class="owl-controls"/>').toggleClass("clickable",!this.browser.isTouch).appendTo(this.$elem);!0===this.options.pagination&&this.buildPagination();!0===this.options.navigation&&this.buildButtons()},buildButtons:function(){var a=this,b=f('<div class="owl-buttons"/>');a.owlControls.append(b);a.buttonPrev=
+f("<div/>",{"class":"owl-prev",html:a.options.navigationText[0]||""});a.buttonNext=f("<div/>",{"class":"owl-next",html:a.options.navigationText[1]||""});b.append(a.buttonPrev).append(a.buttonNext);b.on("touchstart.owlControls mousedown.owlControls",'div[class^="owl"]',function(a){a.preventDefault()});b.on("touchend.owlControls mouseup.owlControls",'div[class^="owl"]',function(b){b.preventDefault();f(this).hasClass("owl-next")?a.next():a.prev()})},buildPagination:function(){var a=this;a.paginationWrapper=
+f('<div class="owl-pagination"/>');a.owlControls.append(a.paginationWrapper);a.paginationWrapper.on("touchend.owlControls mouseup.owlControls",".owl-page",function(b){b.preventDefault();Number(f(this).data("owl-page"))!==a.currentItem&&a.goTo(Number(f(this).data("owl-page")),!0)})},updatePagination:function(){var a,b,e,c,d,g;if(!1===this.options.pagination)return!1;this.paginationWrapper.html("");a=0;b=this.itemsAmount-this.itemsAmount%this.options.items;for(c=0;c<this.itemsAmount;c+=1)0===c%this.options.items&&
+(a+=1,b===c&&(e=this.itemsAmount-this.options.items),d=f("<div/>",{"class":"owl-page"}),g=f("<span></span>",{text:!0===this.options.paginationNumbers?a:"","class":!0===this.options.paginationNumbers?"owl-numbers":""}),d.append(g),d.data("owl-page",b===c?e:c),d.data("owl-roundPages",a),this.paginationWrapper.append(d));this.checkPagination()},checkPagination:function(){var a=this;if(!1===a.options.pagination)return!1;a.paginationWrapper.find(".owl-page").each(function(){f(this).data("owl-roundPages")===
+f(a.$owlItems[a.currentItem]).data("owl-roundPages")&&(a.paginationWrapper.find(".owl-page").removeClass("active"),f(this).addClass("active"))})},checkNavigation:function(){if(!1===this.options.navigation)return!1;!1===this.options.rewindNav&&(0===this.currentItem&&0===this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.addClass("disabled")):0===this.currentItem&&0!==this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.removeClass("disabled")):this.currentItem===
+this.maximumItem?(this.buttonPrev.removeClass("disabled"),this.buttonNext.addClass("disabled")):0!==this.currentItem&&this.currentItem!==this.maximumItem&&(this.buttonPrev.removeClass("disabled"),this.buttonNext.removeClass("disabled")))},updateControls:function(){this.updatePagination();this.checkNavigation();this.owlControls&&(this.options.items>=this.itemsAmount?this.owlControls.hide():this.owlControls.show())},destroyControls:function(){this.owlControls&&this.owlControls.remove()},next:function(a){if(this.isTransition)return!1;
+this.currentItem+=!0===this.options.scrollPerPage?this.options.items:1;if(this.currentItem>this.maximumItem+(!0===this.options.scrollPerPage?this.options.items-1:0))if(!0===this.options.rewindNav)this.currentItem=0,a="rewind";else return this.currentItem=this.maximumItem,!1;this.goTo(this.currentItem,a)},prev:function(a){if(this.isTransition)return!1;this.currentItem=!0===this.options.scrollPerPage&&0<this.currentItem&&this.currentItem<this.options.items?0:this.currentItem-(!0===this.options.scrollPerPage?
+this.options.items:1);if(0>this.currentItem)if(!0===this.options.rewindNav)this.currentItem=this.maximumItem,a="rewind";else return this.currentItem=0,!1;this.goTo(this.currentItem,a)},goTo:function(a,b,e){var c=this;if(c.isTransition)return!1;"function"===typeof c.options.beforeMove&&c.options.beforeMove.apply(this,[c.$elem]);a>=c.maximumItem?a=c.maximumItem:0>=a&&(a=0);c.currentItem=c.owl.currentItem=a;if(!1!==c.options.transitionStyle&&"drag"!==e&&1===c.options.items&&!0===c.browser.support3d)return c.swapSpeed(0),
+!0===c.browser.support3d?c.transition3d(c.positionsInArray[a]):c.css2slide(c.positionsInArray[a],1),c.afterGo(),c.singleItemTransition(),!1;a=c.positionsInArray[a];!0===c.browser.support3d?(c.isCss3Finish=!1,!0===b?(c.swapSpeed("paginationSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},c.options.paginationSpeed)):"rewind"===b?(c.swapSpeed(c.options.rewindSpeed),g.setTimeout(function(){c.isCss3Finish=!0},c.options.rewindSpeed)):(c.swapSpeed("slideSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},
+c.options.slideSpeed)),c.transition3d(a)):!0===b?c.css2slide(a,c.options.paginationSpeed):"rewind"===b?c.css2slide(a,c.options.rewindSpeed):c.css2slide(a,c.options.slideSpeed);c.afterGo()},jumpTo:function(a){"function"===typeof this.options.beforeMove&&this.options.beforeMove.apply(this,[this.$elem]);a>=this.maximumItem||-1===a?a=this.maximumItem:0>=a&&(a=0);this.swapSpeed(0);!0===this.browser.support3d?this.transition3d(this.positionsInArray[a]):this.css2slide(this.positionsInArray[a],1);this.currentItem=
+this.owl.currentItem=a;this.afterGo()},afterGo:function(){this.prevArr.push(this.currentItem);this.prevItem=this.owl.prevItem=this.prevArr[this.prevArr.length-2];this.prevArr.shift(0);this.prevItem!==this.currentItem&&(this.checkPagination(),this.checkNavigation(),this.eachMoveUpdate(),!1!==this.options.autoPlay&&this.checkAp());"function"===typeof this.options.afterMove&&this.prevItem!==this.currentItem&&this.options.afterMove.apply(this,[this.$elem])},stop:function(){this.apStatus="stop";g.clearInterval(this.autoPlayInterval)},
+checkAp:function(){"stop"!==this.apStatus&&this.play()},play:function(){var a=this;a.apStatus="play";if(!1===a.options.autoPlay)return!1;g.clearInterval(a.autoPlayInterval);a.autoPlayInterval=g.setInterval(function(){a.next(!0)},a.options.autoPlay)},swapSpeed:function(a){"slideSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.slideSpeed)):"paginationSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.paginationSpeed)):"string"!==typeof a&&this.$owlWrapper.css(this.addCssSpeed(a))},
+addCssSpeed:function(a){return{"-webkit-transition":"all "+a+"ms ease","-moz-transition":"all "+a+"ms ease","-o-transition":"all "+a+"ms ease",transition:"all "+a+"ms ease"}},removeTransition:function(){return{"-webkit-transition":"","-moz-transition":"","-o-transition":"",transition:""}},doTranslate:function(a){return{"-webkit-transform":"translate3d("+a+"px, 0px, 0px)","-moz-transform":"translate3d("+a+"px, 0px, 0px)","-o-transform":"translate3d("+a+"px, 0px, 0px)","-ms-transform":"translate3d("+
+a+"px, 0px, 0px)",transform:"translate3d("+a+"px, 0px,0px)"}},transition3d:function(a){this.$owlWrapper.css(this.doTranslate(a))},css2move:function(a){this.$owlWrapper.css({left:a})},css2slide:function(a,b){var e=this;e.isCssFinish=!1;e.$owlWrapper.stop(!0,!0).animate({left:a},{duration:b||e.options.slideSpeed,complete:function(){e.isCssFinish=!0}})},checkBrowser:function(){var a=k.createElement("div");a.style.cssText="  -moz-transform:translate3d(0px, 0px, 0px); -ms-transform:translate3d(0px, 0px, 0px); -o-transform:translate3d(0px, 0px, 0px); -webkit-transform:translate3d(0px, 0px, 0px); transform:translate3d(0px, 0px, 0px)";
+a=a.style.cssText.match(/translate3d\(0px, 0px, 0px\)/g);this.browser={support3d:null!==a&&1===a.length,isTouch:"ontouchstart"in g||g.navigator.msMaxTouchPoints}},moveEvents:function(){if(!1!==this.options.mouseDrag||!1!==this.options.touchDrag)this.gestures(),this.disabledEvents()},eventTypes:function(){var a=["s","e","x"];this.ev_types={};!0===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl mousedown.owl","touchmove.owl mousemove.owl","touchend.owl touchcancel.owl mouseup.owl"]:
+!1===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl","touchmove.owl","touchend.owl touchcancel.owl"]:!0===this.options.mouseDrag&&!1===this.options.touchDrag&&(a=["mousedown.owl","mousemove.owl","mouseup.owl"]);this.ev_types.start=a[0];this.ev_types.move=a[1];this.ev_types.end=a[2]},disabledEvents:function(){this.$elem.on("dragstart.owl",function(a){a.preventDefault()});this.$elem.on("mousedown.disableTextSelect",function(a){return f(a.target).is("input, textarea, select, option")})},
+gestures:function(){function a(a){if(void 0!==a.touches)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(void 0===a.touches){if(void 0!==a.pageX)return{x:a.pageX,y:a.pageY};if(void 0===a.pageX)return{x:a.clientX,y:a.clientY}}}function b(a){"on"===a?(f(k).on(d.ev_types.move,e),f(k).on(d.ev_types.end,c)):"off"===a&&(f(k).off(d.ev_types.move),f(k).off(d.ev_types.end))}function e(b){b=b.originalEvent||b||g.event;d.newPosX=a(b).x-h.offsetX;d.newPosY=a(b).y-h.offsetY;d.newRelativeX=d.newPosX-h.relativePos;
+"function"===typeof d.options.startDragging&&!0!==h.dragging&&0!==d.newRelativeX&&(h.dragging=!0,d.options.startDragging.apply(d,[d.$elem]));(8<d.newRelativeX||-8>d.newRelativeX)&&!0===d.browser.isTouch&&(void 0!==b.preventDefault?b.preventDefault():b.returnValue=!1,h.sliding=!0);(10<d.newPosY||-10>d.newPosY)&&!1===h.sliding&&f(k).off("touchmove.owl");d.newPosX=Math.max(Math.min(d.newPosX,d.newRelativeX/5),d.maximumPixels+d.newRelativeX/5);!0===d.browser.support3d?d.transition3d(d.newPosX):d.css2move(d.newPosX)}
+function c(a){a=a.originalEvent||a||g.event;var c;a.target=a.target||a.srcElement;h.dragging=!1;!0!==d.browser.isTouch&&d.$owlWrapper.removeClass("grabbing");d.dragDirection=0>d.newRelativeX?d.owl.dragDirection="left":d.owl.dragDirection="right";0!==d.newRelativeX&&(c=d.getNewPosition(),d.goTo(c,!1,"drag"),h.targetElement===a.target&&!0!==d.browser.isTouch&&(f(a.target).on("click.disable",function(a){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();f(a.target).off("click.disable")}),
+a=f._data(a.target,"events").click,c=a.pop(),a.splice(0,0,c)));b("off")}var d=this,h={offsetX:0,offsetY:0,baseElWidth:0,relativePos:0,position:null,minSwipe:null,maxSwipe:null,sliding:null,dargging:null,targetElement:null};d.isCssFinish=!0;d.$elem.on(d.ev_types.start,".owl-wrapper",function(c){c=c.originalEvent||c||g.event;var e;if(3===c.which)return!1;if(!(d.itemsAmount<=d.options.items)){if(!1===d.isCssFinish&&!d.options.dragBeforeAnimFinish||!1===d.isCss3Finish&&!d.options.dragBeforeAnimFinish)return!1;
+!1!==d.options.autoPlay&&g.clearInterval(d.autoPlayInterval);!0===d.browser.isTouch||d.$owlWrapper.hasClass("grabbing")||d.$owlWrapper.addClass("grabbing");d.newPosX=0;d.newRelativeX=0;f(this).css(d.removeTransition());e=f(this).position();h.relativePos=e.left;h.offsetX=a(c).x-e.left;h.offsetY=a(c).y-e.top;b("on");h.sliding=!1;h.targetElement=c.target||c.srcElement}})},getNewPosition:function(){var a=this.closestItem();a>this.maximumItem?a=this.currentItem=this.maximumItem:0<=this.newPosX&&(this.currentItem=
+a=0);return a},closestItem:function(){var a=this,b=!0===a.options.scrollPerPage?a.pagesInArray:a.positionsInArray,e=a.newPosX,c=null;f.each(b,function(d,g){e-a.itemWidth/20>b[d+1]&&e-a.itemWidth/20<g&&"left"===a.moveDirection()?(c=g,a.currentItem=!0===a.options.scrollPerPage?f.inArray(c,a.positionsInArray):d):e+a.itemWidth/20<g&&e+a.itemWidth/20>(b[d+1]||b[d]-a.itemWidth)&&"right"===a.moveDirection()&&(!0===a.options.scrollPerPage?(c=b[d+1]||b[b.length-1],a.currentItem=f.inArray(c,a.positionsInArray)):
+(c=b[d+1],a.currentItem=d+1))});return a.currentItem},moveDirection:function(){var a;0>this.newRelativeX?(a="right",this.playDirection="next"):(a="left",this.playDirection="prev");return a},customEvents:function(){var a=this;a.$elem.on("owl.next",function(){a.next()});a.$elem.on("owl.prev",function(){a.prev()});a.$elem.on("owl.play",function(b,e){a.options.autoPlay=e;a.play();a.hoverStatus="play"});a.$elem.on("owl.stop",function(){a.stop();a.hoverStatus="stop"});a.$elem.on("owl.goTo",function(b,e){a.goTo(e)});
+a.$elem.on("owl.jumpTo",function(b,e){a.jumpTo(e)})},stopOnHover:function(){var a=this;!0===a.options.stopOnHover&&!0!==a.browser.isTouch&&!1!==a.options.autoPlay&&(a.$elem.on("mouseover",function(){a.stop()}),a.$elem.on("mouseout",function(){"stop"!==a.hoverStatus&&a.play()}))},lazyLoad:function(){var a,b,e,c,d;if(!1===this.options.lazyLoad)return!1;for(a=0;a<this.itemsAmount;a+=1)b=f(this.$owlItems[a]),"loaded"!==b.data("owl-loaded")&&(e=b.data("owl-item"),c=b.find(".lazyOwl"),"string"!==typeof c.data("src")?
+b.data("owl-loaded","loaded"):(void 0===b.data("owl-loaded")&&(c.hide(),b.addClass("loading").data("owl-loaded","checked")),(d=!0===this.options.lazyFollow?e>=this.currentItem:!0)&&e<this.currentItem+this.options.items&&c.length&&this.lazyPreload(b,c)))},lazyPreload:function(a,b){function e(){a.data("owl-loaded","loaded").removeClass("loading");b.removeAttr("data-src");"fade"===d.options.lazyEffect?b.fadeIn(400):b.show();"function"===typeof d.options.afterLazyLoad&&d.options.afterLazyLoad.apply(this,
+[d.$elem])}function c(){f+=1;d.completeImg(b.get(0))||!0===k?e():100>=f?g.setTimeout(c,100):e()}var d=this,f=0,k;"DIV"===b.prop("tagName")?(b.css("background-image","url("+b.data("src")+")"),k=!0):b[0].src=b.data("src");c()},autoHeight:function(){function a(){var a=f(e.$owlItems[e.currentItem]).height();e.wrapperOuter.css("height",a+"px");e.wrapperOuter.hasClass("autoHeight")||g.setTimeout(function(){e.wrapperOuter.addClass("autoHeight")},0)}function b(){d+=1;e.completeImg(c.get(0))?a():100>=d?g.setTimeout(b,
+100):e.wrapperOuter.css("height","")}var e=this,c=f(e.$owlItems[e.currentItem]).find("img"),d;void 0!==c.get(0)?(d=0,b()):a()},completeImg:function(a){return!a.complete||"undefined"!==typeof a.naturalWidth&&0===a.naturalWidth?!1:!0},onVisibleItems:function(){var a;!0===this.options.addClassActive&&this.$owlItems.removeClass("active");this.visibleItems=[];for(a=this.currentItem;a<this.currentItem+this.options.items;a+=1)this.visibleItems.push(a),!0===this.options.addClassActive&&f(this.$owlItems[a]).addClass("active");
+this.owl.visibleItems=this.visibleItems},transitionTypes:function(a){this.outClass="owl-"+a+"-out";this.inClass="owl-"+a+"-in"},singleItemTransition:function(){var a=this,b=a.outClass,e=a.inClass,c=a.$owlItems.eq(a.currentItem),d=a.$owlItems.eq(a.prevItem),f=Math.abs(a.positionsInArray[a.currentItem])+a.positionsInArray[a.prevItem],g=Math.abs(a.positionsInArray[a.currentItem])+a.itemWidth/2;a.isTransition=!0;a.$owlWrapper.addClass("owl-origin").css({"-webkit-transform-origin":g+"px","-moz-perspective-origin":g+
+"px","perspective-origin":g+"px"});d.css({position:"relative",left:f+"px"}).addClass(b).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endPrev=!0;d.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(d,b)});c.addClass(e).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endCurrent=!0;c.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(c,e)})},clearTransStyle:function(a,
+b){a.css({position:"",left:""}).removeClass(b);this.endPrev&&this.endCurrent&&(this.$owlWrapper.removeClass("owl-origin"),this.isTransition=this.endCurrent=this.endPrev=!1)},owlStatus:function(){this.owl={userOptions:this.userOptions,baseElement:this.$elem,userItems:this.$userItems,owlItems:this.$owlItems,currentItem:this.currentItem,prevItem:this.prevItem,visibleItems:this.visibleItems,isTouch:this.browser.isTouch,browser:this.browser,dragDirection:this.dragDirection}},clearEvents:function(){this.$elem.off(".owl owl mousedown.disableTextSelect");
+f(k).off(".owl owl");f(g).off("resize",this.resizer)},unWrap:function(){0!==this.$elem.children().length&&(this.$owlWrapper.unwrap(),this.$userItems.unwrap().unwrap(),this.owlControls&&this.owlControls.remove());this.clearEvents();this.$elem.attr("style",this.$elem.data("owl-originalStyles")||"").attr("class",this.$elem.data("owl-originalClasses"))},destroy:function(){this.stop();g.clearInterval(this.checkVisible);this.unWrap();this.$elem.removeData()},reinit:function(a){a=f.extend({},this.userOptions,
+a);this.unWrap();this.init(a,this.$elem)},addItem:function(a,b){var e;if(!a)return!1;if(0===this.$elem.children().length)return this.$elem.append(a),this.setVars(),!1;this.unWrap();e=void 0===b||-1===b?-1:b;e>=this.$userItems.length||-1===e?this.$userItems.eq(-1).after(a):this.$userItems.eq(e).before(a);this.setVars()},removeItem:function(a){if(0===this.$elem.children().length)return!1;a=void 0===a||-1===a?-1:a;this.unWrap();this.$userItems.eq(a).remove();this.setVars()}};f.fn.owlCarousel=function(a){return this.each(function(){if(!0===
+f(this).data("owl-init"))return!1;f(this).data("owl-init",!0);var b=Object.create(l);b.init(a,this);f.data(this,"owlCarousel",b)})};f.fn.owlCarousel.options={items:5,itemsCustom:!1,itemsDesktop:[1199,4],itemsDesktopSmall:[979,3],itemsTablet:[768,2],itemsTabletSmall:!1,itemsMobile:[479,1],singleItem:!1,itemsScaleUp:!1,slideSpeed:200,paginationSpeed:800,rewindSpeed:1E3,autoPlay:!1,stopOnHover:!1,navigation:!1,navigationText:["prev","next"],rewindNav:!0,scrollPerPage:!1,pagination:!0,paginationNumbers:!1,
+responsive:!0,responsiveRefreshRate:200,responsiveBaseWidth:g,baseClass:"owl-carousel",theme:"owl-theme",lazyLoad:!1,lazyFollow:!0,lazyEffect:"fade",autoHeight:!1,jsonPath:!1,jsonSuccess:!1,dragBeforeAnimFinish:!0,mouseDrag:!0,touchDrag:!0,addClassActive:!1,transitionStyle:!1,beforeUpdate:!1,afterUpdate:!1,beforeInit:!1,afterInit:!1,beforeMove:!1,afterMove:!1,afterAction:!1,startDragging:!1,afterLazyLoad:!1}})(jQuery,window,document);
\ No newline at end of file
diff --git a/src/main/jbake/assets/js/tooltip.js b/src/main/jbake/assets/js/tooltip.js
new file mode 100755
index 0000000..1f3e855
--- /dev/null
+++ b/src/main/jbake/assets/js/tooltip.js
@@ -0,0 +1,304 @@
+;(function ($, Formstone, undefined) {
+
+	"use strict";
+
+	/**
+	 * @method private
+	 * @name construct
+	 * @description Builds instance.
+	 * @param data [object] "Instance data"
+	 */
+
+	function construct(data) {
+		this.on(Events.mouseEnter, data, onMouseEnter);
+	}
+
+	/**
+	 * @method private
+	 * @name destruct
+	 * @description Tears down instance.
+	 * @param data [object] "Instance data"
+	 */
+
+	function destruct(data) {
+		removeTooltip();
+
+		this.off(Events.namespace);
+	}
+
+	/**
+	 * @method private
+	 * @name onMouseEnter
+	 * @description Handles mouse enter event.
+	 * @param e [object] "Event data"
+	 */
+
+	function onMouseEnter(e) {
+		removeTooltip();
+
+		var data = e.data;
+
+		data.left = e.pageX;
+		data.top  = e.pageY;
+
+		buildTooltip(data);
+	}
+
+	/**
+	 * @method private
+	 * @name onMouseLeave
+	 * @description Handles mouse leave event.
+	 * @param e [object] "Event data"
+	 */
+
+	function onMouseLeave(e) {
+		var data = e.data;
+
+		Functions.clearTimer(data.timer);
+
+		removeTooltip();
+	}
+
+	/**
+	 * @method private
+	 * @name onMouseLeave
+	 * @description Handles mouse move event.
+	 * @param e [object] "Event data"
+	 */
+
+	function onMouseMove(e) {
+		positionTooltip(e.pageX, e.pageY);
+	}
+
+	/**
+	 * @method private
+	 * @name buildTooltip
+	 * @description Builds new tooltip instance.
+	 * @param data [object] "Instance data"
+	 */
+
+	function buildTooltip(data) {
+		removeTooltip();
+
+		var html = '';
+
+		html += '<div class="';
+		html += [RawClasses.base, RawClasses[data.direction] ].join(" ");
+		html += '">';
+		html += '<div class="' + RawClasses.content + '">';
+		html += data.formatter.call(data.$el, data);
+		html += '<span class="' + RawClasses.caret + '"></span>';
+		html += '</div>';
+		html += '</div>';
+
+		Instance = {
+			$tooltip    : $(html),
+			$el         : data.$el
+		};
+
+		Formstone.$body.append(Instance.$tooltip);
+
+		var $content = Instance.$tooltip.find(Classes.content),
+			$caret   = Instance.$tooltip.find(Classes.caret),
+
+			offset = data.$el.offset(),
+			height = data.$el.outerHeight(),
+			width  = data.$el.outerWidth(),
+
+			tooltipLeft     = 0,
+			tooltipTop      = 0,
+			contentLeft     = 0,
+			contentTop      = 0,
+			caretLeft       = false,
+			caretTop        = false,
+
+			caretHeight     = $caret.outerHeight(true),
+			caretWidth      = $caret.outerWidth(true),
+			contentHeight   = $content.outerHeight(true),
+			contentWidth    = $content.outerWidth(true);
+
+		// position content
+		if (data.direction === "right" || data.direction === "left") {
+			caretTop   = (contentHeight - caretHeight) / 2;
+			contentTop = -contentHeight / 2;
+
+			if (data.direction === "right") {
+				contentLeft = data.margin;
+			} else if (data.direction === "left") {
+				contentLeft = -(contentWidth + data.margin);
+			}
+		} else {
+			caretLeft = (contentWidth - caretWidth) / 2;
+			contentLeft = -contentWidth / 2;
+
+			if (data.direction === "bottom") {
+				contentTop = data.margin;
+			} else if (data.direction === "top") {
+				contentTop = -(contentHeight + data.margin);
+			}
+		}
+
+		// Modify Dom
+		$content.css({
+			top:  contentTop,
+			left: contentLeft
+		});
+
+		$caret.css({
+			top:  caretTop,
+			left: caretLeft
+		});
+
+		// Position tooltip
+		if (data.follow) {
+			data.$el.on(Events.mouseMove, data, onMouseMove);
+		} else {
+			if (data.match) {
+				if (data.direction === "right" || data.direction === "left") {
+					tooltipTop = data.top; // mouse pos
+
+					if (data.direction === "right") {
+						tooltipLeft = offset.left + width;
+					} else if (data.direction === "left") {
+						tooltipLeft = offset.left;
+					}
+				} else {
+					tooltipLeft = data.left; // mouse pos
+
+					if (data.direction === "bottom") {
+						tooltipTop = offset.top + height;
+					} else if (data.direction === "top") {
+						tooltipTop = offset.top;
+					}
+				}
+			} else {
+				if (data.direction === "right" || data.direction === "left") {
+					tooltipTop = offset.top + (height / 2);
+
+					if (data.direction === "right") {
+						tooltipLeft = offset.left + width;
+					} else if (data.direction === "left") {
+						tooltipLeft = offset.left;
+					}
+				} else {
+					tooltipLeft = offset.left + (width / 2);
+
+					if (data.direction === "bottom") {
+						tooltipTop = offset.top + height;
+					} else if (data.direction === "top") {
+						tooltipTop = offset.top;
+					}
+				}
+			}
+
+			positionTooltip(tooltipLeft, tooltipTop);
+		}
+
+		data.timer = Functions.startTimer(data.timer, data.delay, function() {
+			Instance.$tooltip.addClass(RawClasses.visible);
+		});
+
+		data.$el.one(Events.mouseLeave, data, onMouseLeave);
+	}
+
+	/**
+	 * @method private
+	 * @name positionTooltip
+	 * @description Positions active tooltip instance.
+	 * @param left [int] "Left position"
+	 * @param top [int] "Top position"
+	 */
+
+	function positionTooltip(left, top) {
+		if (Instance) {
+			Instance.$tooltip.css({
+				left : left,
+				top  : top
+			});
+		}
+	}
+
+	/**
+	 * @method private
+	 * @name removeTooltip
+	 * @description Removes active tooltip instance.
+	 */
+
+	function removeTooltip() {
+		if (Instance) {
+			Instance.$el.off( [Events.mouseMove, Events.mouseLeave].join(" ") );
+
+			Instance.$tooltip.remove();
+			Instance = null;
+		}
+	}
+
+	/**
+	 * @method private
+	 * @name format
+	 * @description Formats tooltip text.
+	 * @return [string] "Tooltip text"
+	 */
+
+	function format(data) {
+		return this.data("title");
+	}
+
+	/**
+	 * @plugin
+	 * @name Tooltip
+	 * @description A jQuery plugin for simple tooltips.
+	 * @type widget
+	 * @dependency core.js
+	 */
+
+	var Plugin = Formstone.Plugin("tooltip", {
+			widget: true,
+
+			/**
+			 * @options
+			 * @param delay [int] <0> "Hover delay"
+			 * @param direction [string] <'top'> "Tooltip direction"
+			 * @param follow [boolean] <false> "Flag to follow mouse"
+			 * @param formatter [function] <$.noop> "Text format function"
+			 * @param margin [int] <15> "Tooltip margin"
+			 * @param match [boolean] <false> "Flag to match mouse position"
+			 */
+
+			defaults: {
+				delay        : 0,
+				direction    : "top",
+				follow       : false,
+				formatter    : format,
+				margin       : 15,
+				match        : false
+			},
+
+			classes: [
+				"content",
+				"caret",
+				"visible",
+				"top",
+				"bottom",
+				"right",
+				"left"
+			],
+
+			methods: {
+				_construct    : construct,
+				_destruct     : destruct
+			}
+		}),
+
+		// Localize References
+
+		Classes       = Plugin.classes,
+		RawClasses    = Classes.raw,
+		Events        = Plugin.events,
+		Functions     = Plugin.functions,
+
+		// Singleton
+
+		Instance     = null;
+
+})(jQuery, Formstone);
\ No newline at end of file
diff --git a/src/main/jbake/assets/js/tree.jquery.js b/src/main/jbake/assets/js/tree.jquery.js
new file mode 100755
index 0000000..71290b1
--- /dev/null
+++ b/src/main/jbake/assets/js/tree.jquery.js
@@ -0,0 +1,3542 @@
+/*
+JqTree 1.3.2
+
+Copyright 2015 Marco Braak
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+var $, DragAndDropHandler, DragElement, HitAreasGenerator, Position, VisibleNodeIterator, node_module,
+  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+  hasProp = {}.hasOwnProperty;
+
+node_module = require('./node');
+
+Position = node_module.Position;
+
+$ = jQuery;
+
+DragAndDropHandler = (function() {
+  function DragAndDropHandler(tree_widget) {
+    this.tree_widget = tree_widget;
+    this.hovered_area = null;
+    this.$ghost = null;
+    this.hit_areas = [];
+    this.is_dragging = false;
+    this.current_item = null;
+  }
+
+  DragAndDropHandler.prototype.mouseCapture = function(position_info) {
+    var $element, node_element;
+    $element = $(position_info.target);
+    if (!this.mustCaptureElement($element)) {
+      return null;
+    }
+    if (this.tree_widget.options.onIsMoveHandle && !this.tree_widget.options.onIsMoveHandle($element)) {
+      return null;
+    }
+    node_element = this.tree_widget._getNodeElement($element);
+    if (node_element && this.tree_widget.options.onCanMove) {
+      if (!this.tree_widget.options.onCanMove(node_element.node)) {
+        node_element = null;
+      }
+    }
+    this.current_item = node_element;
+    return this.current_item !== null;
+  };
+
+  DragAndDropHandler.prototype.mouseStart = function(position_info) {
+    var offset;
+    this.refresh();
+    offset = $(position_info.target).offset();
+    this.drag_element = new DragElement(this.current_item.node, position_info.page_x - offset.left, position_info.page_y - offset.top, this.tree_widget.element);
+    this.is_dragging = true;
+    this.current_item.$element.addClass('jqtree-moving');
+    return true;
+  };
+
+  DragAndDropHandler.prototype.mouseDrag = function(position_info) {
+    var area, can_move_to;
+    this.drag_element.move(position_info.page_x, position_info.page_y);
+    area = this.findHoveredArea(position_info.page_x, position_info.page_y);
+    can_move_to = this.canMoveToArea(area);
+    if (can_move_to && area) {
+      if (!area.node.isFolder()) {
+        this.stopOpenFolderTimer();
+      }
+      if (this.hovered_area !== area) {
+        this.hovered_area = area;
+        if (this.mustOpenFolderTimer(area)) {
+          this.startOpenFolderTimer(area.node);
+        } else {
+          this.stopOpenFolderTimer();
+        }
+        this.updateDropHint();
+      }
+    } else {
+      this.removeHover();
+      this.removeDropHint();
+      this.stopOpenFolderTimer();
+    }
+    if (!area) {
+      if (this.tree_widget.options.onDragMove != null) {
+        this.tree_widget.options.onDragMove(this.current_item.node, position_info.original_event);
+      }
+    }
+    return true;
+  };
+
+  DragAndDropHandler.prototype.mustCaptureElement = function($element) {
+    return !$element.is('input,select');
+  };
+
+  DragAndDropHandler.prototype.canMoveToArea = function(area) {
+    var position_name;
+    if (!area) {
+      return false;
+    } else if (this.tree_widget.options.onCanMoveTo) {
+      position_name = Position.getName(area.position);
+      return this.tree_widget.options.onCanMoveTo(this.current_item.node, area.node, position_name);
+    } else {
+      return true;
+    }
+  };
+
+  DragAndDropHandler.prototype.mouseStop = function(position_info) {
+    var current_item;
+    this.moveItem(position_info);
+    this.clear();
+    this.removeHover();
+    this.removeDropHint();
+    this.removeHitAreas();
+    current_item = this.current_item;
+    if (this.current_item) {
+      this.current_item.$element.removeClass('jqtree-moving');
+      this.current_item = null;
+    }
+    this.is_dragging = false;
+    if (!this.hovered_area && current_item) {
+      if (this.tree_widget.options.onDragStop != null) {
+        this.tree_widget.options.onDragStop(current_item.node, position_info.original_event);
+      }
+    }
+    return false;
+  };
+
+  DragAndDropHandler.prototype.refresh = function() {
+    this.removeHitAreas();
+    if (this.current_item) {
+      this.generateHitAreas();
+      this.current_item = this.tree_widget._getNodeElementForNode(this.current_item.node);
+      if (this.is_dragging) {
+        return this.current_item.$element.addClass('jqtree-moving');
+      }
+    }
+  };
+
+  DragAndDropHandler.prototype.removeHitAreas = function() {
+    return this.hit_areas = [];
+  };
+
+  DragAndDropHandler.prototype.clear = function() {
+    this.drag_element.remove();
+    return this.drag_element = null;
+  };
+
+  DragAndDropHandler.prototype.removeDropHint = function() {
+    if (this.previous_ghost) {
+      return this.previous_ghost.remove();
+    }
+  };
+
+  DragAndDropHandler.prototype.removeHover = function() {
+    return this.hovered_area = null;
+  };
+
+  DragAndDropHandler.prototype.generateHitAreas = function() {
+    var hit_areas_generator;
+    hit_areas_generator = new HitAreasGenerator(this.tree_widget.tree, this.current_item.node, this.getTreeDimensions().bottom);
+    return this.hit_areas = hit_areas_generator.generate();
+  };
+
+  DragAndDropHandler.prototype.findHoveredArea = function(x, y) {
+    var area, dimensions, high, low, mid;
+    dimensions = this.getTreeDimensions();
+    if (x < dimensions.left || y < dimensions.top || x > dimensions.right || y > dimensions.bottom) {
+      return null;
+    }
+    low = 0;
+    high = this.hit_areas.length;
+    while (low < high) {
+      mid = (low + high) >> 1;
+      area = this.hit_areas[mid];
+      if (y < area.top) {
+        high = mid;
+      } else if (y > area.bottom) {
+        low = mid + 1;
+      } else {
+        return area;
+      }
+    }
+    return null;
+  };
+
+  DragAndDropHandler.prototype.mustOpenFolderTimer = function(area) {
+    var node;
+    node = area.node;
+    return node.isFolder() && !node.is_open && area.position === Position.INSIDE;
+  };
+
+  DragAndDropHandler.prototype.updateDropHint = function() {
+    var node_element;
+    if (!this.hovered_area) {
+      return;
+    }
+    this.removeDropHint();
+    node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node);
+    return this.previous_ghost = node_element.addDropHint(this.hovered_area.position);
+  };
+
+  DragAndDropHandler.prototype.startOpenFolderTimer = function(folder) {
+    var openFolder;
+    openFolder = (function(_this) {
+      return function() {
+        return _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function() {
+          _this.refresh();
+          return _this.updateDropHint();
+        });
+      };
+    })(this);
+    this.stopOpenFolderTimer();
+    return this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay);
+  };
+
+  DragAndDropHandler.prototype.stopOpenFolderTimer = function() {
+    if (this.open_folder_timer) {
+      clearTimeout(this.open_folder_timer);
+      return this.open_folder_timer = null;
+    }
+  };
+
+  DragAndDropHandler.prototype.moveItem = function(position_info) {
+    var doMove, event, moved_node, position, previous_parent, target_node;
+    if (this.hovered_area && this.hovered_area.position !== Position.NONE && this.canMoveToArea(this.hovered_area)) {
+      moved_node = this.current_item.node;
+      target_node = this.hovered_area.node;
+      position = this.hovered_area.position;
+      previous_parent = moved_node.parent;
+      if (position === Position.INSIDE) {
+        this.hovered_area.node.is_open = true;
+      }
+      doMove = (function(_this) {
+        return function() {
+          _this.tree_widget.tree.moveNode(moved_node, target_node, position);
+          _this.tree_widget.element.empty();
+          return _this.tree_widget._refreshElements();
+        };
+      })(this);
+      event = this.tree_widget._triggerEvent('tree.move', {
+        move_info: {
+          moved_node: moved_node,
+          target_node: target_node,
+          position: Position.getName(position),
+          previous_parent: previous_parent,
+          do_move: doMove,
+          original_event: position_info.original_event
+        }
+      });
+      if (!event.isDefaultPrevented()) {
+        return doMove();
+      }
+    }
+  };
+
+  DragAndDropHandler.prototype.getTreeDimensions = function() {
+    var offset;
+    offset = this.tree_widget.element.offset();
+    return {
+      left: offset.left,
+      top: offset.top,
+      right: offset.left + this.tree_widget.element.width(),
+      bottom: offset.top + this.tree_widget.element.height() + 16
+    };
+  };
+
+  return DragAndDropHandler;
+
+})();
+
+VisibleNodeIterator = (function() {
+  function VisibleNodeIterator(tree) {
+    this.tree = tree;
+  }
+
+  VisibleNodeIterator.prototype.iterate = function() {
+    var _iterateNode, is_first_node;
+    is_first_node = true;
+    _iterateNode = (function(_this) {
+      return function(node, next_node) {
+        var $element, child, children_length, i, j, len, must_iterate_inside, ref;
+        must_iterate_inside = (node.is_open || !node.element) && node.hasChildren();
+        if (node.element) {
+          $element = $(node.element);
+          if (!$element.is(':visible')) {
+            return;
+          }
+          if (is_first_node) {
+            _this.handleFirstNode(node, $element);
+            is_first_node = false;
+          }
+          if (!node.hasChildren()) {
+            _this.handleNode(node, next_node, $element);
+          } else if (node.is_open) {
+            if (!_this.handleOpenFolder(node, $element)) {
+              must_iterate_inside = false;
+            }
+          } else {
+            _this.handleClosedFolder(node, next_node, $element);
+          }
+        }
+        if (must_iterate_inside) {
+          children_length = node.children.length;
+          ref = node.children;
+          for (i = j = 0, len = ref.length; j < len; i = ++j) {
+            child = ref[i];
+            if (i === (children_length - 1)) {
+              _iterateNode(node.children[i], null);
+            } else {
+              _iterateNode(node.children[i], node.children[i + 1]);
+            }
+          }
+          if (node.is_open) {
+            return _this.handleAfterOpenFolder(node, next_node, $element);
+          }
+        }
+      };
+    })(this);
+    return _iterateNode(this.tree, null);
+  };
+
+  VisibleNodeIterator.prototype.handleNode = function(node, next_node, $element) {};
+
+  VisibleNodeIterator.prototype.handleOpenFolder = function(node, $element) {};
+
+  VisibleNodeIterator.prototype.handleClosedFolder = function(node, next_node, $element) {};
+
+  VisibleNodeIterator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {};
+
+  VisibleNodeIterator.prototype.handleFirstNode = function(node, $element) {};
+
+  return VisibleNodeIterator;
+
+})();
+
+HitAreasGenerator = (function(superClass) {
+  extend(HitAreasGenerator, superClass);
+
+  function HitAreasGenerator(tree, current_node, tree_bottom) {
+    HitAreasGenerator.__super__.constructor.call(this, tree);
+    this.current_node = current_node;
+    this.tree_bottom = tree_bottom;
+  }
+
+  HitAreasGenerator.prototype.generate = function() {
+    this.positions = [];
+    this.last_top = 0;
+    this.iterate();
+    return this.generateHitAreas(this.positions);
+  };
+
+  HitAreasGenerator.prototype.getTop = function($element) {
+    return $element.offset().top;
+  };
+
+  HitAreasGenerator.prototype.addPosition = function(node, position, top) {
+    var area;
+    area = {
+      top: top,
+      node: node,
+      position: position
+    };
+    this.positions.push(area);
+    return this.last_top = top;
+  };
+
+  HitAreasGenerator.prototype.handleNode = function(node, next_node, $element) {
+    var top;
+    top = this.getTop($element);
+    if (node === this.current_node) {
+      this.addPosition(node, Position.NONE, top);
+    } else {
+      this.addPosition(node, Position.INSIDE, top);
+    }
+    if (next_node === this.current_node || node === this.current_node) {
+      return this.addPosition(node, Position.NONE, top);
+    } else {
+      return this.addPosition(node, Position.AFTER, top);
+    }
+  };
+
+  HitAreasGenerator.prototype.handleOpenFolder = function(node, $element) {
+    if (node === this.current_node) {
+      return false;
+    }
+    if (node.children[0] !== this.current_node) {
+      this.addPosition(node, Position.INSIDE, this.getTop($element));
+    }
+    return true;
+  };
+
+  HitAreasGenerator.prototype.handleClosedFolder = function(node, next_node, $element) {
+    var top;
+    top = this.getTop($element);
+    if (node === this.current_node) {
+      return this.addPosition(node, Position.NONE, top);
+    } else {
+      this.addPosition(node, Position.INSIDE, top);
+      if (next_node !== this.current_node) {
+        return this.addPosition(node, Position.AFTER, top);
+      }
+    }
+  };
+
+  HitAreasGenerator.prototype.handleFirstNode = function(node, $element) {
+    if (node !== this.current_node) {
+      return this.addPosition(node, Position.BEFORE, this.getTop($(node.element)));
+    }
+  };
+
+  HitAreasGenerator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {
+    if (node === this.current_node.node || next_node === this.current_node.node) {
+      return this.addPosition(node, Position.NONE, this.last_top);
+    } else {
+      return this.addPosition(node, Position.AFTER, this.last_top);
+    }
+  };
+
+  HitAreasGenerator.prototype.generateHitAreas = function(positions) {
+    var group, hit_areas, j, len, position, previous_top;
+    previous_top = -1;
+    group = [];
+    hit_areas = [];
+    for (j = 0, len = positions.length; j < len; j++) {
+      position = positions[j];
+      if (position.top !== previous_top && group.length) {
+        if (group.length) {
+          this.generateHitAreasForGroup(hit_areas, group, previous_top, position.top);
+        }
+        previous_top = position.top;
+        group = [];
+      }
+      group.push(position);
+    }
+    this.generateHitAreasForGroup(hit_areas, group, previous_top, this.tree_bottom);
+    return hit_areas;
+  };
+
+  HitAreasGenerator.prototype.generateHitAreasForGroup = function(hit_areas, positions_in_group, top, bottom) {
+    var area_height, area_top, i, position, position_count;
+    position_count = Math.min(positions_in_group.length, 4);
+    area_height = Math.round((bottom - top) / position_count);
+    area_top = top;
+    i = 0;
+    while (i < position_count) {
+      position = positions_in_group[i];
+      hit_areas.push({
+        top: area_top,
+        bottom: area_top + area_height,
+        node: position.node,
+        position: position.position
+      });
+      area_top += area_height;
+      i += 1;
+    }
+    return null;
+  };
+
+  return HitAreasGenerator;
+
+})(VisibleNodeIterator);
+
+DragElement = (function() {
+  function DragElement(node, offset_x, offset_y, $tree) {
+    this.offset_x = offset_x;
+    this.offset_y = offset_y;
+    this.$element = $("<span class=\"jqtree-title jqtree-dragging\">" + node.name + "</span>");
+    this.$element.css("position", "absolute");
+    $tree.append(this.$element);
+  }
+
+  DragElement.prototype.move = function(page_x, page_y) {
+    return this.$element.offset({
+      left: page_x - this.offset_x,
+      top: page_y - this.offset_y
+    });
+  };
+
+  DragElement.prototype.remove = function() {
+    return this.$element.remove();
+  };
+
+  return DragElement;
+
+})();
+
+module.exports = {
+  DragAndDropHandler: DragAndDropHandler,
+  DragElement: DragElement,
+  HitAreasGenerator: HitAreasGenerator
+};
+
+},{"./node":5}],2:[function(require,module,exports){
+var $, ElementsRenderer, NodeElement, html_escape, node_element, util;
+
+node_element = require('./node_element');
+
+NodeElement = node_element.NodeElement;
+
+util = require('./util');
+
+html_escape = util.html_escape;
+
+$ = jQuery;
+
+ElementsRenderer = (function() {
+  function ElementsRenderer(tree_widget) {
+    this.tree_widget = tree_widget;
+    this.opened_icon_element = this.createButtonElement(tree_widget.options.openedIcon);
+    this.closed_icon_element = this.createButtonElement(tree_widget.options.closedIcon);
+  }
+
+  ElementsRenderer.prototype.render = function(from_node) {
+    if (from_node && from_node.parent) {
+      return this.renderFromNode(from_node);
+    } else {
+      return this.renderFromRoot();
+    }
+  };
+
+  ElementsRenderer.prototype.renderFromRoot = function() {
+    var $element;
+    $element = this.tree_widget.element;
+    $element.empty();
+    return this.createDomElements($element[0], this.tree_widget.tree.children, true, true, 1);
+  };
+
+  ElementsRenderer.prototype.renderFromNode = function(node) {
+    var $previous_li, li;
+    $previous_li = $(node.element);
+    li = this.createLi(node);
+    this.attachNodeData(node, li);
+    $previous_li.after(li);
+    $previous_li.remove();
+    if (node.children) {
+      return this.createDomElements(li, node.children, false, false, node.getLevel());
+    }
+  };
+
+  ElementsRenderer.prototype.createDomElements = function(element, children, is_root_node, is_open, level) {
+    var child, i, len, li, ul;
+    ul = this.createUl(is_root_node);
+    element.appendChild(ul);
+    for (i = 0, len = children.length; i < len; i++) {
+      child = children[i];
+      li = this.createLi(child, level);
+      ul.appendChild(li);
+      this.attachNodeData(child, li);
+      if (child.hasChildren()) {
+        this.createDomElements(li, child.children, false, child.is_open, level + 1);
+      }
+    }
+    return null;
+  };
+
+  ElementsRenderer.prototype.attachNodeData = function(node, li) {
+    node.element = li;
+    return $(li).data('node', node);
+  };
+
+  ElementsRenderer.prototype.createUl = function(is_root_node) {
+    var class_string, role, ul;
+    if (!is_root_node) {
+      class_string = '';
+      role = 'group';
+    } else {
+      class_string = 'jqtree-tree';
+      role = 'tree';
+      if (this.tree_widget.options.rtl) {
+        class_string += ' jqtree-rtl';
+      }
+    }
+    ul = document.createElement('ul');
+    ul.className = "jqtree_common " + class_string;
+    ul.setAttribute('role', role);
+    return ul;
+  };
+
+  ElementsRenderer.prototype.createLi = function(node, level) {
+    var is_selected, li;
+    is_selected = this.tree_widget.select_node_handler && this.tree_widget.select_node_handler.isNodeSelected(node);
+    if (node.isFolder()) {
+      li = this.createFolderLi(node, level, is_selected);
+    } else {
+      li = this.createNodeLi(node, level, is_selected);
+    }
+    if (this.tree_widget.options.onCreateLi) {
+      this.tree_widget.options.onCreateLi(node, $(li));
+    }
+    return li;
+  };
+
+  ElementsRenderer.prototype.createFolderLi = function(node, level, is_selected) {
+    var button_classes, button_link, div, folder_classes, icon_element, is_folder, li;
+    button_classes = this.getButtonClasses(node);
+    folder_classes = this.getFolderClasses(node, is_selected);
+    if (node.is_open) {
+      icon_element = this.opened_icon_element;
+    } else {
+      icon_element = this.closed_icon_element;
+    }
+    li = document.createElement('li');
+    li.className = "jqtree_common " + folder_classes;
+    li.setAttribute('role', 'presentation');
+    div = document.createElement('div');
+    div.className = "jqtree-element jqtree_common";
+    div.setAttribute('role', 'presentation');
+    li.appendChild(div);
+    button_link = document.createElement('a');
+    button_link.className = button_classes;
+    button_link.appendChild(icon_element.cloneNode(false));
+    button_link.setAttribute('role', 'presentation');
+    button_link.setAttribute('aria-hidden', 'true');
+    if (this.tree_widget.options.buttonLeft) {
+      div.appendChild(button_link);
+    }
+    div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, is_folder = true));
+    if (!this.tree_widget.options.buttonLeft) {
+      div.appendChild(button_link);
+    }
+    return li;
+  };
+
+  ElementsRenderer.prototype.createNodeLi = function(node, level, is_selected) {
+    var class_string, div, is_folder, li, li_classes;
+    li_classes = ['jqtree_common'];
+    if (is_selected) {
+      li_classes.push('jqtree-selected');
+    }
+    class_string = li_classes.join(' ');
+    li = document.createElement('li');
+    li.className = class_string;
+    li.setAttribute('role', 'presentation');
+    div = document.createElement('div');
+    div.className = "jqtree-element jqtree_common";
+    div.setAttribute('role', 'presentation');
+    li.appendChild(div);
+    div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, is_folder = false));
+    return li;
+  };
+
+  ElementsRenderer.prototype.createTitleSpan = function(node_name, level, is_selected, is_open, is_folder) {
+    var classes, title_span;
+    title_span = document.createElement('span');
+    classes = "jqtree-title jqtree_common";
+    if (is_folder) {
+      classes += " jqtree-title-folder";
+    }
+    title_span.className = classes;
+    title_span.setAttribute('role', 'treeitem');
+    title_span.setAttribute('aria-level', level);
+    title_span.setAttribute('aria-selected', util.getBoolString(is_selected));
+    title_span.setAttribute('aria-expanded', util.getBoolString(is_open));
+    if (is_selected) {
+      title_span.setAttribute('tabindex', 0);
+    }
+    title_span.innerHTML = this.escapeIfNecessary(node_name);
+    return title_span;
+  };
+
+  ElementsRenderer.prototype.getButtonClasses = function(node) {
+    var classes;
+    classes = ['jqtree-toggler', 'jqtree_common'];
+    if (!node.is_open) {
+      classes.push('jqtree-closed');
+    }
+    if (this.tree_widget.options.buttonLeft) {
+      classes.push('jqtree-toggler-left');
+    } else {
+      classes.push('jqtree-toggler-right');
+    }
+    return classes.join(' ');
+  };
+
+  ElementsRenderer.prototype.getFolderClasses = function(node, is_selected) {
+    var classes;
+    classes = ['jqtree-folder'];
+    if (!node.is_open) {
+      classes.push('jqtree-closed');
+    }
+    if (is_selected) {
+      classes.push('jqtree-selected');
+    }
+    if (node.is_loading) {
+      classes.push('jqtree-loading');
+    }
+    return classes.join(' ');
+  };
+
+  ElementsRenderer.prototype.escapeIfNecessary = function(value) {
+    if (this.tree_widget.options.autoEscape) {
+      return html_escape(value);
+    } else {
+      return value;
+    }
+  };
+
+  ElementsRenderer.prototype.createButtonElement = function(value) {
+    var div;
+    if (typeof value === 'string') {
+      div = document.createElement('div');
+      div.innerHTML = value;
+      return document.createTextNode(div.innerHTML);
+    } else {
+      return $(value)[0];
+    }
+  };
+
+  return ElementsRenderer;
+
+})();
+
+module.exports = ElementsRenderer;
+
+},{"./node_element":6,"./util":12}],3:[function(require,module,exports){
+var $, KeyHandler,
+  bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+
+$ = jQuery;
+
+KeyHandler = (function() {
+  var DOWN, LEFT, RIGHT, UP;
+
+  LEFT = 37;
+
+  UP = 38;
+
+  RIGHT = 39;
+
+  DOWN = 40;
+
+  function KeyHandler(tree_widget) {
+    this.selectNode = bind(this.selectNode, this);
+    this.tree_widget = tree_widget;
+    if (tree_widget.options.keyboardSupport) {
+      $(document).bind('keydown.jqtree', $.proxy(this.handleKeyDown, this));
+    }
+  }
+
+  KeyHandler.prototype.deinit = function() {
+    return $(document).unbind('keydown.jqtree');
+  };
+
+  KeyHandler.prototype.moveDown = function() {
+    var node;
+    node = this.tree_widget.getSelectedNode();
+    if (node) {
+      return this.selectNode(node.getNextNode());
+    } else {
+      return false;
+    }
+  };
+
+  KeyHandler.prototype.moveUp = function() {
+    var node;
+    node = this.tree_widget.getSelectedNode();
+    if (node) {
+      return this.selectNode(node.getPreviousNode());
+    } else {
+      return false;
+    }
+  };
+
+  KeyHandler.prototype.moveRight = function() {
+    var node;
+    node = this.tree_widget.getSelectedNode();
+    if (!node) {
+      return true;
+    } else if (!node.isFolder()) {
+      return true;
+    } else {
+      if (node.is_open) {
+        return this.selectNode(node.getNextNode());
+      } else {
+        this.tree_widget.openNode(node);
+        return false;
+      }
+    }
+  };
+
+  KeyHandler.prototype.moveLeft = function() {
+    var node;
+    node = this.tree_widget.getSelectedNode();
+    if (!node) {
+      return true;
+    } else if (node.isFolder() && node.is_open) {
+      this.tree_widget.closeNode(node);
+      return false;
+    } else {
+      return this.selectNode(node.getParent());
+    }
+  };
+
+  KeyHandler.prototype.handleKeyDown = function(e) {
+    var key;
+    if (!this.tree_widget.options.keyboardSupport) {
+      return true;
+    }
+    if ($(document.activeElement).is('textarea,input,select')) {
+      return true;
+    }
+    if (!this.tree_widget.getSelectedNode()) {
+      return true;
+    }
+    key = e.which;
+    switch (key) {
+      case DOWN:
+        return this.moveDown();
+      case UP:
+        return this.moveUp();
+      case RIGHT:
+        return this.moveRight();
+      case LEFT:
+        return this.moveLeft();
+    }
+    return true;
+  };
+
+  KeyHandler.prototype.selectNode = function(node) {
+    if (!node) {
+      return true;
+    } else {
+      this.tree_widget.selectNode(node);
+      if (this.tree_widget.scroll_handler && (!this.tree_widget.scroll_handler.isScrolledIntoView($(node.element).find('.jqtree-element')))) {
+        this.tree_widget.scrollToNode(node);
+      }
+      return false;
+    }
+  };
+
+  return KeyHandler;
+
+})();
+
+module.exports = KeyHandler;
+
+},{}],4:[function(require,module,exports){
+
+/*
+This widget does the same a the mouse widget in jqueryui.
+ */
+var $, MouseWidget, SimpleWidget,
+  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+  hasProp = {}.hasOwnProperty;
+
+SimpleWidget = require('./simple.widget');
+
+$ = jQuery;
+
+MouseWidget = (function(superClass) {
+  extend(MouseWidget, superClass);
+
+  function MouseWidget() {
+    return MouseWidget.__super__.constructor.apply(this, arguments);
+  }
+
+  MouseWidget.is_mouse_handled = false;
+
+  MouseWidget.prototype._init = function() {
+    this.$el.bind('mousedown.mousewidget', $.proxy(this._mouseDown, this));
+    this.$el.bind('touchstart.mousewidget', $.proxy(this._touchStart, this));
+    this.is_mouse_started = false;
+    this.mouse_delay = 0;
+    this._mouse_delay_timer = null;
+    this._is_mouse_delay_met = true;
+    return this.mouse_down_info = null;
+  };
+
+  MouseWidget.prototype._deinit = function() {
+    var $document;
+    this.$el.unbind('mousedown.mousewidget');
+    this.$el.unbind('touchstart.mousewidget');
+    $document = $(document);
+    $document.unbind('mousemove.mousewidget');
+    return $document.unbind('mouseup.mousewidget');
+  };
+
+  MouseWidget.prototype._mouseDown = function(e) {
+    var result;
+    if (e.which !== 1) {
+      return;
+    }
+    result = this._handleMouseDown(e, this._getPositionInfo(e));
+    if (result) {
+      e.preventDefault();
+    }
+    return result;
+  };
+
+  MouseWidget.prototype._handleMouseDown = function(e, position_info) {
+    if (MouseWidget.is_mouse_handled) {
+      return;
+    }
+    if (this.is_mouse_started) {
+      this._handleMouseUp(position_info);
+    }
+    this.mouse_down_info = position_info;
+    if (!this._mouseCapture(position_info)) {
+      return;
+    }
+    this._handleStartMouse();
+    this.is_mouse_handled = true;
+    return true;
+  };
+
+  MouseWidget.prototype._handleStartMouse = function() {
+    var $document;
+    $document = $(document);
+    $document.bind('mousemove.mousewidget', $.proxy(this._mouseMove, this));
+    $document.bind('touchmove.mousewidget', $.proxy(this._touchMove, this));
+    $document.bind('mouseup.mousewidget', $.proxy(this._mouseUp, this));
+    $document.bind('touchend.mousewidget', $.proxy(this._touchEnd, this));
+    if (this.mouse_delay) {
+      return this._startMouseDelayTimer();
+    }
+  };
+
+  MouseWidget.prototype._startMouseDelayTimer = function() {
+    if (this._mouse_delay_timer) {
+      clearTimeout(this._mouse_delay_timer);
+    }
+    this._mouse_delay_timer = setTimeout((function(_this) {
+      return function() {
+        return _this._is_mouse_delay_met = true;
+      };
+    })(this), this.mouse_delay);
+    return this._is_mouse_delay_met = false;
+  };
+
+  MouseWidget.prototype._mouseMove = function(e) {
+    return this._handleMouseMove(e, this._getPositionInfo(e));
+  };
+
+  MouseWidget.prototype._handleMouseMove = function(e, position_info) {
+    if (this.is_mouse_started) {
+      this._mouseDrag(position_info);
+      return e.preventDefault();
+    }
+    if (this.mouse_delay && !this._is_mouse_delay_met) {
+      return true;
+    }
+    this.is_mouse_started = this._mouseStart(this.mouse_down_info) !== false;
+    if (this.is_mouse_started) {
+      this._mouseDrag(position_info);
+    } else {
+      this._handleMouseUp(position_info);
+    }
+    return !this.is_mouse_started;
+  };
+
+  MouseWidget.prototype._getPositionInfo = function(e) {
+    return {
+      page_x: e.pageX,
+      page_y: e.pageY,
+      target: e.target,
+      original_event: e
+    };
+  };
+
+  MouseWidget.prototype._mouseUp = function(e) {
+    return this._handleMouseUp(this._getPositionInfo(e));
+  };
+
+  MouseWidget.prototype._handleMouseUp = function(position_info) {
+    var $document;
+    $document = $(document);
+    $document.unbind('mousemove.mousewidget');
+    $document.unbind('touchmove.mousewidget');
+    $document.unbind('mouseup.mousewidget');
+    $document.unbind('touchend.mousewidget');
+    if (this.is_mouse_started) {
+      this.is_mouse_started = false;
+      this._mouseStop(position_info);
+    }
+  };
+
+  MouseWidget.prototype._mouseCapture = function(position_info) {
+    return true;
+  };
+
+  MouseWidget.prototype._mouseStart = function(position_info) {
+    return null;
+  };
+
+  MouseWidget.prototype._mouseDrag = function(position_info) {
+    return null;
+  };
+
+  MouseWidget.prototype._mouseStop = function(position_info) {
+    return null;
+  };
+
+  MouseWidget.prototype.setMouseDelay = function(mouse_delay) {
+    return this.mouse_delay = mouse_delay;
+  };
+
+  MouseWidget.prototype._touchStart = function(e) {
+    var touch;
+    if (e.originalEvent.touches.length > 1) {
+      return;
+    }
+    touch = e.originalEvent.changedTouches[0];
+    return this._handleMouseDown(e, this._getPositionInfo(touch));
+  };
+
+  MouseWidget.prototype._touchMove = function(e) {
+    var touch;
+    if (e.originalEvent.touches.length > 1) {
+      return;
+    }
+    touch = e.originalEvent.changedTouches[0];
+    return this._handleMouseMove(e, this._getPositionInfo(touch));
+  };
+
+  MouseWidget.prototype._touchEnd = function(e) {
+    var touch;
+    if (e.originalEvent.touches.length > 1) {
+      return;
+    }
+    touch = e.originalEvent.changedTouches[0];
+    return this._handleMouseUp(this._getPositionInfo(touch));
+  };
+
+  return MouseWidget;
+
+})(SimpleWidget);
+
+module.exports = MouseWidget;
+
+},{"./simple.widget":10}],5:[function(require,module,exports){
+var $, Node, Position;
+
+$ = jQuery;
+
+Position = {
+  getName: function(position) {
+    return Position.strings[position - 1];
+  },
+  nameToIndex: function(name) {
+    var i, j, ref;
+    for (i = j = 1, ref = Position.strings.length; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {
+      if (Position.strings[i - 1] === name) {
+        return i;
+      }
+    }
+    return 0;
+  }
+};
+
+Position.BEFORE = 1;
+
+Position.AFTER = 2;
+
+Position.INSIDE = 3;
+
+Position.NONE = 4;
+
+Position.strings = ['before', 'after', 'inside', 'none'];
+
+Node = (function() {
+  function Node(o, is_root, node_class) {
+    if (is_root == null) {
+      is_root = false;
+    }
+    if (node_class == null) {
+      node_class = Node;
+    }
+    this.name = '';
+    this.setData(o);
+    this.children = [];
+    this.parent = null;
+    if (is_root) {
+      this.id_mapping = {};
+      this.tree = this;
+      this.node_class = node_class;
+    }
+  }
+
+  Node.prototype.setData = function(o) {
+    var key, setName, value;
+    setName = (function(_this) {
+      return function(name) {
+        if (name !== null) {
+          return _this.name = name;
+        }
+      };
+    })(this);
+    if (typeof o !== 'object') {
+      setName(o);
+    } else {
+      for (key in o) {
+        value = o[key];
+        if (key === 'label') {
+          setName(value);
+        } else {
+          this[key] = value;
+        }
+      }
+    }
+    return null;
+  };
+
+  Node.prototype.initFromData = function(data) {
+    var addChildren, addNode;
+    addNode = (function(_this) {
+      return function(node_data) {
+        _this.setData(node_data);
+        if (node_data.children) {
+          return addChildren(node_data.children);
+        }
+      };
+    })(this);
+    addChildren = (function(_this) {
+      return function(children_data) {
+        var child, j, len, node;
+        for (j = 0, len = children_data.length; j < len; j++) {
+          child = children_data[j];
+          node = new _this.tree.node_class('');
+          node.initFromData(child);
+          _this.addChild(node);
+        }
+        return null;
+      };
+    })(this);
+    addNode(data);
+    return null;
+  };
+
+
+  /*
+  Create tree from data.
+  
+  Structure of data is:
+  [
+      {
+          label: 'node1',
+          children: [
+              { label: 'child1' },
+              { label: 'child2' }
+          ]
+      },
+      {
+          label: 'node2'
+      }
+  ]
+   */
+
+  Node.prototype.loadFromData = function(data) {
+    var j, len, node, o;
+    this.removeChildren();
+    for (j = 0, len = data.length; j < len; j++) {
+      o = data[j];
+      node = new this.tree.node_class(o);
+      this.addChild(node);
+      if (typeof o === 'object' && o.children) {
+        node.loadFromData(o.children);
+      }
+    }
+    return null;
+  };
+
+
+  /*
+  Add child.
+  
+  tree.addChild(
+      new Node('child1')
+  );
+   */
+
+  Node.prototype.addChild = function(node) {
+    this.children.push(node);
+    return node._setParent(this);
+  };
+
+
+  /*
+  Add child at position. Index starts at 0.
+  
+  tree.addChildAtPosition(
+      new Node('abc'),
+      1
+  );
+   */
+
+  Node.prototype.addChildAtPosition = function(node, index) {
+    this.children.splice(index, 0, node);
+    return node._setParent(this);
+  };
+
+  Node.prototype._setParent = function(parent) {
+    this.parent = parent;
+    this.tree = parent.tree;
+    return this.tree.addNodeToIndex(this);
+  };
+
+
+  /*
+  Remove child. This also removes the children of the node.
+  
+  tree.removeChild(tree.children[0]);
+   */
+
+  Node.prototype.removeChild = function(node) {
+    node.removeChildren();
+    return this._removeChild(node);
+  };
+
+  Node.prototype._removeChild = function(node) {
+    this.children.splice(this.getChildIndex(node), 1);
+    return this.tree.removeNodeFromIndex(node);
+  };
+
+
+  /*
+  Get child index.
+  
+  var index = getChildIndex(node);
+   */
+
+  Node.prototype.getChildIndex = function(node) {
+    return $.inArray(node, this.children);
+  };
+
+
+  /*
+  Does the tree have children?
+  
+  if (tree.hasChildren()) {
+      //
+  }
+   */
+
+  Node.prototype.hasChildren = function() {
+    return this.children.length !== 0;
+  };
+
+  Node.prototype.isFolder = function() {
+    return this.hasChildren() || this.load_on_demand;
+  };
+
+
+  /*
+  Iterate over all the nodes in the tree.
+  
+  Calls callback with (node, level).
+  
+  The callback must return true to continue the iteration on current node.
+  
+  tree.iterate(
+      function(node, level) {
+         console.log(node.name);
+  
+         // stop iteration after level 2
+         return (level <= 2);
+      }
+  );
+   */
+
+  Node.prototype.iterate = function(callback) {
+    var _iterate;
+    _iterate = function(node, level) {
+      var child, j, len, ref, result;
+      if (node.children) {
+        ref = node.children;
+        for (j = 0, len = ref.length; j < len; j++) {
+          child = ref[j];
+          result = callback(child, level);
+          if (result && child.hasChildren()) {
+            _iterate(child, level + 1);
+          }
+        }
+        return null;
+      }
+    };
+    _iterate(this, 0);
+    return null;
+  };
+
+
+  /*
+  Move node relative to another node.
+  
+  Argument position: Position.BEFORE, Position.AFTER or Position.Inside
+  
+  // move node1 after node2
+  tree.moveNode(node1, node2, Position.AFTER);
+   */
+
+  Node.prototype.moveNode = function(moved_node, target_node, position) {
+    if (moved_node.isParentOf(target_node)) {
+      return;
+    }
+    moved_node.parent._removeChild(moved_node);
+    if (position === Position.AFTER) {
+      return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node) + 1);
+    } else if (position === Position.BEFORE) {
+      return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node));
+    } else if (position === Position.INSIDE) {
+      return target_node.addChildAtPosition(moved_node, 0);
+    }
+  };
+
+
+  /*
+  Get the tree as data.
+   */
+
+  Node.prototype.getData = function(include_parent) {
+    var getDataFromNodes;
+    if (include_parent == null) {
+      include_parent = false;
+    }
+    getDataFromNodes = function(nodes) {
+      var data, j, k, len, node, tmp_node, v;
+      data = [];
+      for (j = 0, len = nodes.length; j < len; j++) {
+        node = nodes[j];
+        tmp_node = {};
+        for (k in node) {
+          v = node[k];
+          if ((k !== 'parent' && k !== 'children' && k !== 'element' && k !== 'tree') && Object.prototype.hasOwnProperty.call(node, k)) {
+            tmp_node[k] = v;
+          }
+        }
+        if (node.hasChildren()) {
+          tmp_node.children = getDataFromNodes(node.children);
+        }
+        data.push(tmp_node);
+      }
+      return data;
+    };
+    if (include_parent) {
+      return getDataFromNodes([this]);
+    } else {
+      return getDataFromNodes(this.children);
+    }
+  };
+
+  Node.prototype.getNodeByName = function(name) {
+    var result;
+    result = null;
+    this.iterate(function(node) {
+      if (node.name === name) {
+        result = node;
+        return false;
+      } else {
+        return true;
+      }
+    });
+    return result;
+  };
+
+  Node.prototype.addAfter = function(node_info) {
+    var child_index, node;
+    if (!this.parent) {
+      return null;
+    } else {
+      node = new this.tree.node_class(node_info);
+      child_index = this.parent.getChildIndex(this);
+      this.parent.addChildAtPosition(node, child_index + 1);
+      return node;
+    }
+  };
+
+  Node.prototype.addBefore = function(node_info) {
+    var child_index, node;
+    if (!this.parent) {
+      return null;
+    } else {
+      node = new this.tree.node_class(node_info);
+      child_index = this.parent.getChildIndex(this);
+      this.parent.addChildAtPosition(node, child_index);
+      return node;
+    }
+  };
+
+  Node.prototype.addParent = function(node_info) {
+    var child, j, len, new_parent, original_parent, ref;
+    if (!this.parent) {
+      return null;
+    } else {
+      new_parent = new this.tree.node_class(node_info);
+      new_parent._setParent(this.tree);
+      original_parent = this.parent;
+      ref = original_parent.children;
+      for (j = 0, len = ref.length; j < len; j++) {
+        child = ref[j];
+        new_parent.addChild(child);
+      }
+      original_parent.children = [];
+      original_parent.addChild(new_parent);
+      return new_parent;
+    }
+  };
+
+  Node.prototype.remove = function() {
+    if (this.parent) {
+      this.parent.removeChild(this);
+      return this.parent = null;
+    }
+  };
+
+  Node.prototype.append = function(node_info) {
+    var node;
+    node = new this.tree.node_class(node_info);
+    this.addChild(node);
+    return node;
+  };
+
+  Node.prototype.prepend = function(node_info) {
+    var node;
+    node = new this.tree.node_class(node_info);
+    this.addChildAtPosition(node, 0);
+    return node;
+  };
+
+  Node.prototype.isParentOf = function(node) {
+    var parent;
+    parent = node.parent;
+    while (parent) {
+      if (parent === this) {
+        return true;
+      }
+      parent = parent.parent;
+    }
+    return false;
+  };
+
+  Node.prototype.getLevel = function() {
+    var level, node;
+    level = 0;
+    node = this;
+    while (node.parent) {
+      level += 1;
+      node = node.parent;
+    }
+    return level;
+  };
+
+  Node.prototype.getNodeById = function(node_id) {
+    return this.id_mapping[node_id];
+  };
+
+  Node.prototype.addNodeToIndex = function(node) {
+    if (node.id != null) {
+      return this.id_mapping[node.id] = node;
+    }
+  };
+
+  Node.prototype.removeNodeFromIndex = function(node) {
+    if (node.id != null) {
+      return delete this.id_mapping[node.id];
+    }
+  };
+
+  Node.prototype.removeChildren = function() {
+    this.iterate((function(_this) {
+      return function(child) {
+        _this.tree.removeNodeFromIndex(child);
+        return true;
+      };
+    })(this));
+    return this.children = [];
+  };
+
+  Node.prototype.getPreviousSibling = function() {
+    var previous_index;
+    if (!this.parent) {
+      return null;
+    } else {
+      previous_index = this.parent.getChildIndex(this) - 1;
+      if (previous_index >= 0) {
+        return this.parent.children[previous_index];
+      } else {
+        return null;
+      }
+    }
+  };
+
+  Node.prototype.getNextSibling = function() {
+    var next_index;
+    if (!this.parent) {
+      return null;
+    } else {
+      next_index = this.parent.getChildIndex(this) + 1;
+      if (next_index < this.parent.children.length) {
+        return this.parent.children[next_index];
+      } else {
+        return null;
+      }
+    }
+  };
+
+  Node.prototype.getNodesByProperty = function(key, value) {
+    return this.filter(function(node) {
+      return node[key] === value;
+    });
+  };
+
+  Node.prototype.filter = function(f) {
+    var result;
+    result = [];
+    this.iterate(function(node) {
+      if (f(node)) {
+        result.push(node);
+      }
+      return true;
+    });
+    return result;
+  };
+
+  Node.prototype.getNextNode = function(include_children) {
+    var next_sibling;
+    if (include_children == null) {
+      include_children = true;
+    }
+    if (include_children && this.hasChildren() && this.is_open) {
+      return this.children[0];
+    } else {
+      if (!this.parent) {
+        return null;
+      } else {
+        next_sibling = this.getNextSibling();
+        if (next_sibling) {
+          return next_sibling;
+        } else {
+          return this.parent.getNextNode(false);
+        }
+      }
+    }
+  };
+
+  Node.prototype.getPreviousNode = function() {
+    var previous_sibling;
+    if (!this.parent) {
+      return null;
+    } else {
+      previous_sibling = this.getPreviousSibling();
+      if (previous_sibling) {
+        if (!previous_sibling.hasChildren() || !previous_sibling.is_open) {
+          return previous_sibling;
+        } else {
+          return previous_sibling.getLastChild();
+        }
+      } else {
+        return this.getParent();
+      }
+    }
+  };
+
+  Node.prototype.getParent = function() {
+    if (!this.parent) {
+      return null;
+    } else if (!this.parent.parent) {
+      return null;
+    } else {
+      return this.parent;
+    }
+  };
+
+  Node.prototype.getLastChild = function() {
+    var last_child;
+    if (!this.hasChildren()) {
+      return null;
+    } else {
+      last_child = this.children[this.children.length - 1];
+      if (!last_child.hasChildren() || !last_child.is_open) {
+        return last_child;
+      } else {
+        return last_child.getLastChild();
+      }
+    }
+  };
+
+  return Node;
+
+})();
+
+module.exports = {
+  Node: Node,
+  Position: Position
+};
+
+},{}],6:[function(require,module,exports){
+var $, BorderDropHint, FolderElement, GhostDropHint, NodeElement, Position, node,
+  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+  hasProp = {}.hasOwnProperty;
+
+node = require('./node');
+
+Position = node.Position;
+
+$ = jQuery;
+
+NodeElement = (function() {
+  function NodeElement(node, tree_widget) {
+    this.init(node, tree_widget);
+  }
+
+  NodeElement.prototype.init = function(node, tree_widget) {
+    this.node = node;
+    this.tree_widget = tree_widget;
+    if (!node.element) {
+      node.element = this.tree_widget.element;
+    }
+    return this.$element = $(node.element);
+  };
+
+  NodeElement.prototype.getUl = function() {
+    return this.$element.children('ul:first');
+  };
+
+  NodeElement.prototype.getSpan = function() {
+    return this.$element.children('.jqtree-element').find('span.jqtree-title');
+  };
+
+  NodeElement.prototype.getLi = function() {
+    return this.$element;
+  };
+
+  NodeElement.prototype.addDropHint = function(position) {
+    if (position === Position.INSIDE) {
+      return new BorderDropHint(this.$element);
+    } else {
+      return new GhostDropHint(this.node, this.$element, position);
+    }
+  };
+
+  NodeElement.prototype.select = function() {
+    var $li, $span;
+    $li = this.getLi();
+    $li.addClass('jqtree-selected');
+    $li.attr('aria-selected', 'true');
+    $span = this.getSpan();
+    return $span.attr('tabindex', 0);
+  };
+
+  NodeElement.prototype.deselect = function() {
+    var $li, $span;
+    $li = this.getLi();
+    $li.removeClass('jqtree-selected');
+    $li.attr('aria-selected', 'false');
+    $span = this.getSpan();
+    return $span.attr('tabindex', -1);
+  };
+
+  return NodeElement;
+
+})();
+
+FolderElement = (function(superClass) {
+  extend(FolderElement, superClass);
+
+  function FolderElement() {
+    return FolderElement.__super__.constructor.apply(this, arguments);
+  }
+
+  FolderElement.prototype.open = function(on_finished, slide) {
+    var $button, doOpen;
+    if (slide == null) {
+      slide = true;
+    }
+    if (!this.node.is_open) {
+      this.node.is_open = true;
+      $button = this.getButton();
+      $button.removeClass('jqtree-closed');
+      $button.html('');
+      $button.append(this.tree_widget.renderer.opened_icon_element.cloneNode(false));
+      doOpen = (function(_this) {
+        return function() {
+          var $li, $span;
+          $li = _this.getLi();
+          $li.removeClass('jqtree-closed');
+          $span = _this.getSpan();
+          $span.attr('aria-expanded', 'true');
+          if (on_finished) {
+            on_finished();
+          }
+          return _this.tree_widget._triggerEvent('tree.open', {
+            node: _this.node
+          });
+        };
+      })(this);
+      if (slide) {
+        return this.getUl().slideDown('fast', doOpen);
+      } else {
+        this.getUl().show();
+        return doOpen();
+      }
+    }
+  };
+
+  FolderElement.prototype.close = function(slide) {
+    var $button, doClose;
+    if (slide == null) {
+      slide = true;
+    }
+    if (this.node.is_open) {
+      this.node.is_open = false;
+      $button = this.getButton();
+      $button.addClass('jqtree-closed');
+      $button.html('');
+      $button.append(this.tree_widget.renderer.closed_icon_element.cloneNode(false));
+      doClose = (function(_this) {
+        return function() {
+          var $li, $span;
+          $li = _this.getLi();
+          $li.addClass('jqtree-closed');
+          $span = _this.getSpan();
+          $span.attr('aria-expanded', 'false');
+          return _this.tree_widget._triggerEvent('tree.close', {
+            node: _this.node
+          });
+        };
+      })(this);
+      if (slide) {
+        return this.getUl().slideUp('fast', doClose);
+      } else {
+        this.getUl().hide();
+        return doClose();
+      }
+    }
+  };
+
+  FolderElement.prototype.getButton = function() {
+    return this.$element.children('.jqtree-element').find('a.jqtree-toggler');
+  };
+
+  FolderElement.prototype.addDropHint = function(position) {
+    if (!this.node.is_open && position === Position.INSIDE) {
+      return new BorderDropHint(this.$element);
+    } else {
+      return new GhostDropHint(this.node, this.$element, position);
+    }
+  };
+
+  return FolderElement;
+
+})(NodeElement);
+
+BorderDropHint = (function() {
+  function BorderDropHint($element) {
+    var $div, width;
+    $div = $element.children('.jqtree-element');
+    width = $element.width() - 4;
+    this.$hint = $('<span class="jqtree-border"></span>');
+    $div.append(this.$hint);
+    this.$hint.css({
+      width: width,
+      height: $div.outerHeight() - 4
+    });
+  }
+
+  BorderDropHint.prototype.remove = function() {
+    return this.$hint.remove();
+  };
+
+  return BorderDropHint;
+
+})();
+
+GhostDropHint = (function() {
+  function GhostDropHint(node, $element, position) {
+    this.$element = $element;
+    this.node = node;
+    this.$ghost = $('<li class="jqtree_common jqtree-ghost"><span class="jqtree_common jqtree-circle"></span><span class="jqtree_common jqtree-line"></span></li>');
+    if (position === Position.AFTER) {
+      this.moveAfter();
+    } else if (position === Position.BEFORE) {
+      this.moveBefore();
+    } else if (position === Position.INSIDE) {
+      if (node.isFolder() && node.is_open) {
+        this.moveInsideOpenFolder();
+      } else {
+        this.moveInside();
+      }
+    }
+  }
+
+  GhostDropHint.prototype.remove = function() {
+    return this.$ghost.remove();
+  };
+
+  GhostDropHint.prototype.moveAfter = function() {
+    return this.$element.after(this.$ghost);
+  };
+
+  GhostDropHint.prototype.moveBefore = function() {
+    return this.$element.before(this.$ghost);
+  };
+
+  GhostDropHint.prototype.moveInsideOpenFolder = function() {
+    return $(this.node.children[0].element).before(this.$ghost);
+  };
+
+  GhostDropHint.prototype.moveInside = function() {
+    this.$element.after(this.$ghost);
+    return this.$ghost.addClass('jqtree-inside');
+  };
+
+  return GhostDropHint;
+
+})();
+
+module.exports = {
+  BorderDropHint: BorderDropHint,
+  FolderElement: FolderElement,
+  GhostDropHint: GhostDropHint,
+  NodeElement: NodeElement
+};
+
+},{"./node":5}],7:[function(require,module,exports){
+var $, SaveStateHandler, indexOf, isInt, util;
+
+util = require('./util');
+
+indexOf = util.indexOf;
+
+isInt = util.isInt;
+
+$ = jQuery;
+
+SaveStateHandler = (function() {
+  function SaveStateHandler(tree_widget) {
+    this.tree_widget = tree_widget;
+  }
+
+  SaveStateHandler.prototype.saveState = function() {
+    var state;
+    state = JSON.stringify(this.getState());
+    if (this.tree_widget.options.onSetStateFromStorage) {
+      return this.tree_widget.options.onSetStateFromStorage(state);
+    } else if (this.supportsLocalStorage()) {
+      return localStorage.setItem(this.getCookieName(), state);
+    } else if ($.cookie) {
+      $.cookie.raw = true;
+      return $.cookie(this.getCookieName(), state, {
+        path: '/'
+      });
+    }
+  };
+
+  SaveStateHandler.prototype.getStateFromStorage = function() {
+    var json_data;
+    json_data = this._loadFromStorage();
+    if (json_data) {
+      return this._parseState(json_data);
+    } else {
+      return null;
+    }
+  };
+
+  SaveStateHandler.prototype._parseState = function(json_data) {
+    var state;
+    state = $.parseJSON(json_data);
+    if (state && state.selected_node && isInt(state.selected_node)) {
+      state.selected_node = [state.selected_node];
+    }
+    return state;
+  };
+
+  SaveStateHandler.prototype._loadFromStorage = function() {
+    if (this.tree_widget.options.onGetStateFromStorage) {
+      return this.tree_widget.options.onGetStateFromStorage();
+    } else if (this.supportsLocalStorage()) {
+      return localStorage.getItem(this.getCookieName());
+    } else if ($.cookie) {
+      $.cookie.raw = true;
+      return $.cookie(this.getCookieName());
+    } else {
+      return null;
+    }
+  };
+
+  SaveStateHandler.prototype.getState = function() {
+    var getOpenNodeIds, getSelectedNodeIds;
+    getOpenNodeIds = (function(_this) {
+      return function() {
+        var open_nodes;
+        open_nodes = [];
+        _this.tree_widget.tree.iterate(function(node) {
+          if (node.is_open && node.id && node.hasChildren()) {
+            open_nodes.push(node.id);
+          }
+          return true;
+        });
+        return open_nodes;
+      };
+    })(this);
+    getSelectedNodeIds = (function(_this) {
+      return function() {
+        var n;
+        return (function() {
+          var i, len, ref, results;
+          ref = this.tree_widget.getSelectedNodes();
+          results = [];
+          for (i = 0, len = ref.length; i < len; i++) {
+            n = ref[i];
+            results.push(n.id);
+          }
+          return results;
+        }).call(_this);
+      };
+    })(this);
+    return {
+      open_nodes: getOpenNodeIds(),
+      selected_node: getSelectedNodeIds()
+    };
+  };
+
+  SaveStateHandler.prototype.setInitialState = function(state) {
+    var must_load_on_demand;
+    if (!state) {
+      return false;
+    } else {
+      must_load_on_demand = this._openInitialNodes(state.open_nodes);
+      this._selectInitialNodes(state.selected_node);
+      return must_load_on_demand;
+    }
+  };
+
+  SaveStateHandler.prototype._openInitialNodes = function(node_ids) {
+    var i, len, must_load_on_demand, node, node_id;
+    must_load_on_demand = false;
+    for (i = 0, len = node_ids.length; i < len; i++) {
+      node_id = node_ids[i];
+      node = this.tree_widget.getNodeById(node_id);
+      if (node) {
+        if (!node.load_on_demand) {
+          node.is_open = true;
+        } else {
+          must_load_on_demand = true;
+        }
+      }
+    }
+    return must_load_on_demand;
+  };
+
+  SaveStateHandler.prototype._selectInitialNodes = function(node_ids) {
+    var i, len, node, node_id, select_count;
+    select_count = 0;
+    for (i = 0, len = node_ids.length; i < len; i++) {
+      node_id = node_ids[i];
+      node = this.tree_widget.getNodeById(node_id);
+      if (node) {
+        select_count += 1;
+        this.tree_widget.select_node_handler.addToSelection(node);
+      }
+    }
+    return select_count !== 0;
+  };
+
+  SaveStateHandler.prototype.setInitialStateOnDemand = function(state, cb_finished) {
+    if (state) {
+      return this._setInitialStateOnDemand(state.open_nodes, state.selected_node, cb_finished);
+    } else {
+      return cb_finished();
+    }
+  };
+
+  SaveStateHandler.prototype._setInitialStateOnDemand = function(node_ids, selected_nodes, cb_finished) {
+    var loadAndOpenNode, loading_count, openNodes;
+    loading_count = 0;
+    openNodes = (function(_this) {
+      return function() {
+        var i, len, new_nodes_ids, node, node_id;
+        new_nodes_ids = [];
+        for (i = 0, len = node_ids.length; i < len; i++) {
+          node_id = node_ids[i];
+          node = _this.tree_widget.getNodeById(node_id);
+          if (!node) {
+            new_nodes_ids.push(node_id);
+          } else {
+            if (!node.is_loading) {
+              if (node.load_on_demand) {
+                loadAndOpenNode(node);
+              } else {
+                _this.tree_widget._openNode(node, false);
+              }
+            }
+          }
+        }
+        node_ids = new_nodes_ids;
+        if (_this._selectInitialNodes(selected_nodes)) {
+          _this.tree_widget._refreshElements();
+        }
+        if (loading_count === 0) {
+          return cb_finished();
+        }
+      };
+    })(this);
+    loadAndOpenNode = (function(_this) {
+      return function(node) {
+        loading_count += 1;
+        return _this.tree_widget._openNode(node, false, function() {
+          loading_count -= 1;
+          return openNodes();
+        });
+      };
+    })(this);
+    return openNodes();
+  };
+
+  SaveStateHandler.prototype.getCookieName = function() {
+    if (typeof this.tree_widget.options.saveState === 'string') {
+      return this.tree_widget.options.saveState;
+    } else {
+      return 'tree';
+    }
+  };
+
+  SaveStateHandler.prototype.supportsLocalStorage = function() {
+    var testSupport;
+    testSupport = function() {
+      var error, error1, key;
+      if (typeof localStorage === "undefined" || localStorage === null) {
+        return false;
+      } else {
+        try {
+          key = '_storage_test';
+          sessionStorage.setItem(key, true);
+          sessionStorage.removeItem(key);
+        } catch (error1) {
+          error = error1;
+          return false;
+        }
+        return true;
+      }
+    };
+    if (this._supportsLocalStorage == null) {
+      this._supportsLocalStorage = testSupport();
+    }
+    return this._supportsLocalStorage;
+  };
+
+  SaveStateHandler.prototype.getNodeIdToBeSelected = function() {
+    var state;
+    state = this.getStateFromStorage();
+    if (state && state.selected_node) {
+      return state.selected_node[0];
+    } else {
+      return null;
+    }
+  };
+
+  return SaveStateHandler;
+
+})();
+
+module.exports = SaveStateHandler;
+
+},{"./util":12}],8:[function(require,module,exports){
+var $, ScrollHandler;
+
+$ = jQuery;
+
+ScrollHandler = (function() {
+  function ScrollHandler(tree_widget) {
+    this.tree_widget = tree_widget;
+    this.previous_top = -1;
+    this.is_initialized = false;
+    this._initScrollParent();
+  }
+
+  ScrollHandler.prototype._initScrollParent = function() {
+    var $scroll_parent, getParentWithOverflow, setDocumentAsScrollParent;
+    getParentWithOverflow = (function(_this) {
+      return function() {
+        var css_values, el, hasOverFlow, i, len, ref;
+        css_values = ['overflow', 'overflow-y'];
+        hasOverFlow = function(el) {
+          var css_value, i, len, ref;
+          for (i = 0, len = css_values.length; i < len; i++) {
+            css_value = css_values[i];
+            if ((ref = $.css(el, css_value)) === 'auto' || ref === 'scroll') {
+              return true;
+            }
+          }
+          return false;
+        };
+        if (hasOverFlow(_this.tree_widget.$el[0])) {
+          return _this.tree_widget.$el;
+        }
+        ref = _this.tree_widget.$el.parents();
+        for (i = 0, len = ref.length; i < len; i++) {
+          el = ref[i];
+          if (hasOverFlow(el)) {
+            return $(el);
+          }
+        }
+        return null;
+      };
+    })(this);
+    setDocumentAsScrollParent = (function(_this) {
+      return function() {
+        _this.scroll_parent_top = 0;
+        return _this.$scroll_parent = null;
+      };
+    })(this);
+    if (this.tree_widget.$el.css('position') === 'fixed') {
+      setDocumentAsScrollParent();
+    }
+    $scroll_parent = getParentWithOverflow();
+    if ($scroll_parent && $scroll_parent.length && $scroll_parent[0].tagName !== 'HTML') {
+      this.$scroll_parent = $scroll_parent;
+      this.scroll_parent_top = this.$scroll_parent.offset().top;
+    } else {
+      setDocumentAsScrollParent();
+    }
+    return this.is_initialized = true;
+  };
+
+  ScrollHandler.prototype._ensureInit = function() {
+    if (!this.is_initialized) {
+      return this._initScrollParent();
+    }
+  };
+
+  ScrollHandler.prototype.checkScrolling = function() {
+    var hovered_area;
+    this._ensureInit();
+    hovered_area = this.tree_widget.dnd_handler.hovered_area;
+    if (hovered_area && hovered_area.top !== this.previous_top) {
+      this.previous_top = hovered_area.top;
+      if (this.$scroll_parent) {
+        return this._handleScrollingWithScrollParent(hovered_area);
+      } else {
+        return this._handleScrollingWithDocument(hovered_area);
+      }
+    }
+  };
+
+  ScrollHandler.prototype._handleScrollingWithScrollParent = function(area) {
+    var distance_bottom;
+    distance_bottom = this.scroll_parent_top + this.$scroll_parent[0].offsetHeight - area.bottom;
+    if (distance_bottom < 20) {
+      this.$scroll_parent[0].scrollTop += 20;
+      this.tree_widget.refreshHitAreas();
+      return this.previous_top = -1;
+    } else if ((area.top - this.scroll_parent_top) < 20) {
+      this.$scroll_parent[0].scrollTop -= 20;
+      this.tree_widget.refreshHitAreas();
+      return this.previous_top = -1;
+    }
+  };
+
+  ScrollHandler.prototype._handleScrollingWithDocument = function(area) {
+    var distance_top;
+    distance_top = area.top - $(document).scrollTop();
+    if (distance_top < 20) {
+      return $(document).scrollTop($(document).scrollTop() - 20);
+    } else if ($(window).height() - (area.bottom - $(document).scrollTop()) < 20) {
+      return $(document).scrollTop($(document).scrollTop() + 20);
+    }
+  };
+
+  ScrollHandler.prototype.scrollTo = function(top) {
+    var tree_top;
+    this._ensureInit();
+    if (this.$scroll_parent) {
+      return this.$scroll_parent[0].scrollTop = top;
+    } else {
+      tree_top = this.tree_widget.$el.offset().top;
+      return $(document).scrollTop(top + tree_top);
+    }
+  };
+
+  ScrollHandler.prototype.isScrolledIntoView = function(element) {
+    var $element, element_bottom, element_top, view_bottom, view_top;
+    this._ensureInit();
+    $element = $(element);
+    if (this.$scroll_parent) {
+      view_top = 0;
+      view_bottom = this.$scroll_parent.height();
+      element_top = $element.offset().top - this.scroll_parent_top;
+      element_bottom = element_top + $element.height();
+    } else {
+      view_top = $(window).scrollTop();
+      view_bottom = view_top + $(window).height();
+      element_top = $element.offset().top;
+      element_bottom = element_top + $element.height();
+    }
+    return (element_bottom <= view_bottom) && (element_top >= view_top);
+  };
+
+  return ScrollHandler;
+
+})();
+
+module.exports = ScrollHandler;
+
+},{}],9:[function(require,module,exports){
+var $, SelectNodeHandler;
+
+$ = jQuery;
+
+SelectNodeHandler = (function() {
+  function SelectNodeHandler(tree_widget) {
+    this.tree_widget = tree_widget;
+    this.clear();
+  }
+
+  SelectNodeHandler.prototype.getSelectedNode = function() {
+    var selected_nodes;
+    selected_nodes = this.getSelectedNodes();
+    if (selected_nodes.length) {
+      return selected_nodes[0];
+    } else {
+      return false;
+    }
+  };
+
+  SelectNodeHandler.prototype.getSelectedNodes = function() {
+    var id, node, selected_nodes;
+    if (this.selected_single_node) {
+      return [this.selected_single_node];
+    } else {
+      selected_nodes = [];
+      for (id in this.selected_nodes) {
+        node = this.tree_widget.getNodeById(id);
+        if (node) {
+          selected_nodes.push(node);
+        }
+      }
+      return selected_nodes;
+    }
+  };
+
+  SelectNodeHandler.prototype.getSelectedNodesUnder = function(parent) {
+    var id, node, selected_nodes;
+    if (this.selected_single_node) {
+      if (parent.isParentOf(this.selected_single_node)) {
+        return [this.selected_single_node];
+      } else {
+        return [];
+      }
+    } else {
+      selected_nodes = [];
+      for (id in this.selected_nodes) {
+        node = this.tree_widget.getNodeById(id);
+        if (node && parent.isParentOf(node)) {
+          selected_nodes.push(node);
+        }
+      }
+      return selected_nodes;
+    }
+  };
+
+  SelectNodeHandler.prototype.isNodeSelected = function(node) {
+    if (node.id) {
+      return this.selected_nodes[node.id];
+    } else if (this.selected_single_node) {
+      return this.selected_single_node.element === node.element;
+    } else {
+      return false;
+    }
+  };
+
+  SelectNodeHandler.prototype.clear = function() {
+    this.selected_nodes = {};
+    return this.selected_single_node = null;
+  };
+
+  SelectNodeHandler.prototype.removeFromSelection = function(node, include_children) {
+    if (include_children == null) {
+      include_children = false;
+    }
+    if (!node.id) {
+      if (this.selected_single_node && node.element === this.selected_single_node.element) {
+        return this.selected_single_node = null;
+      }
+    } else {
+      delete this.selected_nodes[node.id];
+      if (include_children) {
+        return node.iterate((function(_this) {
+          return function(n) {
+            delete _this.selected_nodes[node.id];
+            return true;
+          };
+        })(this));
+      }
+    }
+  };
+
+  SelectNodeHandler.prototype.addToSelection = function(node) {
+    if (node.id) {
+      return this.selected_nodes[node.id] = true;
+    } else {
+      return this.selected_single_node = node;
+    }
+  };
+
+  return SelectNodeHandler;
+
+})();
+
+module.exports = SelectNodeHandler;
+
+},{}],10:[function(require,module,exports){
+
+/*
+Copyright 2013 Marco Braak
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+ */
+var $, SimpleWidget,
+  slice = [].slice;
+
+$ = jQuery;
+
+SimpleWidget = (function() {
+  SimpleWidget.prototype.defaults = {};
+
+  function SimpleWidget(el, options) {
+    this.$el = $(el);
+    this.options = $.extend({}, this.defaults, options);
+  }
+
+  SimpleWidget.prototype.destroy = function() {
+    return this._deinit();
+  };
+
+  SimpleWidget.prototype._init = function() {
+    return null;
+  };
+
+  SimpleWidget.prototype._deinit = function() {
+    return null;
+  };
+
+  SimpleWidget.register = function(widget_class, widget_name) {
+    var callFunction, createWidget, destroyWidget, getDataKey, getWidgetData;
+    getDataKey = function() {
+      return "simple_widget_" + widget_name;
+    };
+    getWidgetData = function(el, data_key) {
+      var widget;
+      widget = $.data(el, data_key);
+      if (widget && (widget instanceof SimpleWidget)) {
+        return widget;
+      } else {
+        return null;
+      }
+    };
+    createWidget = function($el, options) {
+      var data_key, el, existing_widget, i, len, widget;
+      data_key = getDataKey();
+      for (i = 0, len = $el.length; i < len; i++) {
+        el = $el[i];
+        existing_widget = getWidgetData(el, data_key);
+        if (!existing_widget) {
+          widget = new widget_class(el, options);
+          if (!$.data(el, data_key)) {
+            $.data(el, data_key, widget);
+          }
+          widget._init();
+        }
+      }
+      return $el;
+    };
+    destroyWidget = function($el) {
+      var data_key, el, i, len, results, widget;
+      data_key = getDataKey();
+      results = [];
+      for (i = 0, len = $el.length; i < len; i++) {
+        el = $el[i];
+        widget = getWidgetData(el, data_key);
+        if (widget) {
+          widget.destroy();
+        }
+        results.push($.removeData(el, data_key));
+      }
+      return results;
+    };
+    callFunction = function($el, function_name, args) {
+      var el, i, len, result, widget, widget_function;
+      result = null;
+      for (i = 0, len = $el.length; i < len; i++) {
+        el = $el[i];
+        widget = $.data(el, getDataKey());
+        if (widget && (widget instanceof SimpleWidget)) {
+          widget_function = widget[function_name];
+          if (widget_function && (typeof widget_function === 'function')) {
+            result = widget_function.apply(widget, args);
+          }
+        }
+      }
+      return result;
+    };
+    return $.fn[widget_name] = function() {
+      var $el, args, argument1, function_name, options;
+      argument1 = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
+      $el = this;
+      if (argument1 === void 0 || typeof argument1 === 'object') {
+        options = argument1;
+        return createWidget($el, options);
+      } else if (typeof argument1 === 'string' && argument1[0] !== '_') {
+        function_name = argument1;
+        if (function_name === 'destroy') {
+          return destroyWidget($el);
+        } else if (function_name === 'get_widget_class') {
+          return widget_class;
+        } else {
+          return callFunction($el, function_name, args);
+        }
+      }
+    };
+  };
+
+  return SimpleWidget;
+
+})();
+
+module.exports = SimpleWidget;
+
+},{}],11:[function(require,module,exports){
+var $, BorderDropHint, DragAndDropHandler, DragElement, ElementsRenderer, FolderElement, GhostDropHint, HitAreasGenerator, JqTreeWidget, KeyHandler, MouseWidget, Node, NodeElement, Position, SaveStateHandler, ScrollHandler, SelectNodeHandler, SimpleWidget, __version__, node_module, ref, ref1, util_module,
+  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+  hasProp = {}.hasOwnProperty;
+
+__version__ = require('./version');
+
+ref = require('./drag_and_drop_handler'), DragAndDropHandler = ref.DragAndDropHandler, DragElement = ref.DragElement, HitAreasGenerator = ref.HitAreasGenerator;
+
+ElementsRenderer = require('./elements_renderer');
+
+KeyHandler = require('./key_handler');
+
+MouseWidget = require('./mouse.widget');
+
+SaveStateHandler = require('./save_state_handler');
+
+ScrollHandler = require('./scroll_handler');
+
+SelectNodeHandler = require('./select_node_handler');
+
+SimpleWidget = require('./simple.widget');
+
+node_module = require('./node');
+
+Node = node_module.Node;
+
+Position = node_module.Position;
+
+util_module = require('./util');
+
+ref1 = require('./node_element'), BorderDropHint = ref1.BorderDropHint, FolderElement = ref1.FolderElement, GhostDropHint = ref1.GhostDropHint, NodeElement = ref1.NodeElement;
+
+$ = jQuery;
+
+JqTreeWidget = (function(superClass) {
+  extend(JqTreeWidget, superClass);
+
+  function JqTreeWidget() {
+    return JqTreeWidget.__super__.constructor.apply(this, arguments);
+  }
+
+  JqTreeWidget.prototype.BorderDropHint = BorderDropHint;
+
+  JqTreeWidget.prototype.DragElement = DragElement;
+
+  JqTreeWidget.prototype.DragAndDropHandler = DragAndDropHandler;
+
+  JqTreeWidget.prototype.ElementsRenderer = ElementsRenderer;
+
+  JqTreeWidget.prototype.GhostDropHint = GhostDropHint;
+
+  JqTreeWidget.prototype.HitAreasGenerator = HitAreasGenerator;
+
+  JqTreeWidget.prototype.Node = Node;
+
+  JqTreeWidget.prototype.SaveStateHandler = SaveStateHandler;
+
+  JqTreeWidget.prototype.ScrollHandler = ScrollHandler;
+
+  JqTreeWidget.prototype.SelectNodeHandler = SelectNodeHandler;
+
+  JqTreeWidget.prototype.defaults = {
+    autoOpen: false,
+    saveState: false,
+    dragAndDrop: false,
+    selectable: true,
+    useContextMenu: true,
+    onCanSelectNode: null,
+    onSetStateFromStorage: null,
+    onGetStateFromStorage: null,
+    onCreateLi: null,
+    onIsMoveHandle: null,
+    onCanMove: null,
+    onCanMoveTo: null,
+    onLoadFailed: null,
+    autoEscape: true,
+    dataUrl: null,
+    closedIcon: null,
+    openedIcon: '&#x25bc;',
+    slide: true,
+    nodeClass: Node,
+    dataFilter: null,
+    keyboardSupport: true,
+    openFolderDelay: 500,
+    rtl: null,
+    onDragMove: null,
+    onDragStop: null,
+    buttonLeft: true,
+    onLoading: null
+  };
+
+  JqTreeWidget.prototype.toggle = function(node, slide) {
+    if (slide == null) {
+      slide = null;
+    }
+    if (slide === null) {
+      slide = this.options.slide;
+    }
+    if (node.is_open) {
+      this.closeNode(node, slide);
+    } else {
+      this.openNode(node, slide);
+    }
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.getTree = function() {
+    return this.tree;
+  };
+
+  JqTreeWidget.prototype.selectNode = function(node) {
+    this._selectNode(node, false);
+    return this.element;
+  };
+
+  JqTreeWidget.prototype._selectNode = function(node, must_toggle) {
+    var canSelect, deselected_node, openParents, saveState;
+    if (must_toggle == null) {
+      must_toggle = false;
+    }
+    if (!this.select_node_handler) {
+      return;
+    }
+    canSelect = (function(_this) {
+      return function() {
+        if (_this.options.onCanSelectNode) {
+          return _this.options.selectable && _this.options.onCanSelectNode(node);
+        } else {
+          return _this.options.selectable;
+        }
+      };
+    })(this);
+    openParents = (function(_this) {
+      return function() {
+        var parent;
+        parent = node.parent;
+        if (parent && parent.parent && !parent.is_open) {
+          return _this.openNode(parent, false);
+        }
+      };
+    })(this);
+    saveState = (function(_this) {
+      return function() {
+        if (_this.options.saveState) {
+          return _this.save_state_handler.saveState();
+        }
+      };
+    })(this);
+    if (!node) {
+      this._deselectCurrentNode();
+      saveState();
+      return;
+    }
+    if (!canSelect()) {
+      return;
+    }
+    if (this.select_node_handler.isNodeSelected(node)) {
+      if (must_toggle) {
+        this._deselectCurrentNode();
+        this._triggerEvent('tree.select', {
+          node: null,
+          previous_node: node
+        });
+      }
+    } else {
+      deselected_node = this.getSelectedNode();
+      this._deselectCurrentNode();
+      this.addToSelection(node);
+      this._triggerEvent('tree.select', {
+        node: node,
+        deselected_node: deselected_node
+      });
+      openParents();
+    }
+    return saveState();
+  };
+
+  JqTreeWidget.prototype.getSelectedNode = function() {
+    if (this.select_node_handler) {
+      return this.select_node_handler.getSelectedNode();
+    } else {
+      return null;
+    }
+  };
+
+  JqTreeWidget.prototype.toJson = function() {
+    return JSON.stringify(this.tree.getData());
+  };
+
+  JqTreeWidget.prototype.loadData = function(data, parent_node) {
+    this._loadData(data, parent_node);
+    return this.element;
+  };
+
+
+  /*
+  signatures:
+  - loadDataFromUrl(url, parent_node=null, on_finished=null)
+      loadDataFromUrl('/my_data');
+      loadDataFromUrl('/my_data', node1);
+      loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });
+      loadDataFromUrl('/my_data', null, function() { console.log('finished'); });
+  
+  - loadDataFromUrl(parent_node=null, on_finished=null)
+      loadDataFromUrl();
+      loadDataFromUrl(node1);
+      loadDataFromUrl(null, function() { console.log('finished'); });
+      loadDataFromUrl(node1, function() { console.log('finished'); });
+   */
+
+  JqTreeWidget.prototype.loadDataFromUrl = function(param1, param2, param3) {
+    if ($.type(param1) === 'string') {
+      this._loadDataFromUrl(param1, param2, param3);
+    } else {
+      this._loadDataFromUrl(null, param1, param2);
+    }
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.reload = function(on_finished) {
+    this._loadDataFromUrl(null, null, on_finished);
+    return this.element;
+  };
+
+  JqTreeWidget.prototype._loadDataFromUrl = function(url_info, parent_node, on_finished) {
+    var $el, addLoadingClass, handeLoadData, handleError, handleSuccess, loadDataFromUrlInfo, parseUrlInfo, removeLoadingClass;
+    $el = null;
+    addLoadingClass = (function(_this) {
+      return function() {
+        if (parent_node) {
+          $el = $(parent_node.element);
+        } else {
+          $el = _this.element;
+        }
+        $el.addClass('jqtree-loading');
+        return _this._notifyLoading(true, parent_node, $el);
+      };
+    })(this);
+    removeLoadingClass = (function(_this) {
+      return function() {
+        if ($el) {
+          $el.removeClass('jqtree-loading');
+          return _this._notifyLoading(false, parent_node, $el);
+        }
+      };
+    })(this);
+    parseUrlInfo = function() {
+      if ($.type(url_info) === 'string') {
+        return {
+          url: url_info
+        };
+      }
+      if (!url_info.method) {
+        url_info.method = 'get';
+      }
+      return url_info;
+    };
+    handeLoadData = (function(_this) {
+      return function(data) {
+        removeLoadingClass();
+        _this._loadData(data, parent_node);
+        if (on_finished && $.isFunction(on_finished)) {
+          return on_finished();
+        }
+      };
+    })(this);
+    handleSuccess = (function(_this) {
+      return function(response) {
+        var data;
+        if ($.isArray(response) || typeof response === 'object') {
+          data = response;
+        } else if (data != null) {
+          data = $.parseJSON(response);
+        } else {
+          data = [];
+        }
+        if (_this.options.dataFilter) {
+          data = _this.options.dataFilter(data);
+        }
+        return handeLoadData(data);
+      };
+    })(this);
+    handleError = (function(_this) {
+      return function(response) {
+        removeLoadingClass();
+        if (_this.options.onLoadFailed) {
+          return _this.options.onLoadFailed(response);
+        }
+      };
+    })(this);
+    loadDataFromUrlInfo = function() {
+      url_info = parseUrlInfo();
+      return $.ajax($.extend({}, url_info, {
+        method: url_info.method != null ? url_info.method.toUpperCase() : 'GET',
+        cache: false,
+        dataType: 'json',
+        success: handleSuccess,
+        error: handleError
+      }));
+    };
+    if (!url_info) {
+      url_info = this._getDataUrlInfo(parent_node);
+    }
+    addLoadingClass();
+    if (!url_info) {
+      removeLoadingClass();
+    } else if ($.isArray(url_info)) {
+      handeLoadData(url_info);
+    } else {
+      loadDataFromUrlInfo();
+    }
+  };
+
+  JqTreeWidget.prototype._loadData = function(data, parent_node) {
+    var deselectNodes, loadSubtree;
+    if (parent_node == null) {
+      parent_node = null;
+    }
+    deselectNodes = (function(_this) {
+      return function() {
+        var i, len, n, selected_nodes_under_parent;
+        if (_this.select_node_handler) {
+          selected_nodes_under_parent = _this.select_node_handler.getSelectedNodesUnder(parent_node);
+          for (i = 0, len = selected_nodes_under_parent.length; i < len; i++) {
+            n = selected_nodes_under_parent[i];
+            _this.select_node_handler.removeFromSelection(n);
+          }
+        }
+        return null;
+      };
+    })(this);
+    loadSubtree = (function(_this) {
+      return function() {
+        parent_node.loadFromData(data);
+        parent_node.load_on_demand = false;
+        parent_node.is_loading = false;
+        return _this._refreshElements(parent_node);
+      };
+    })(this);
+    if (!data) {
+      return;
+    }
+    this._triggerEvent('tree.load_data', {
+      tree_data: data
+    });
+    if (!parent_node) {
+      this._initTree(data);
+    } else {
+      deselectNodes();
+      loadSubtree();
+    }
+    if (this.isDragging()) {
+      return this.dnd_handler.refresh();
+    }
+  };
+
+  JqTreeWidget.prototype.getNodeById = function(node_id) {
+    return this.tree.getNodeById(node_id);
+  };
+
+  JqTreeWidget.prototype.getNodeByName = function(name) {
+    return this.tree.getNodeByName(name);
+  };
+
+  JqTreeWidget.prototype.getNodesByProperty = function(key, value) {
+    return this.tree.getNodesByProperty(key, value);
+  };
+
+  JqTreeWidget.prototype.openNode = function(node, slide) {
+    if (slide == null) {
+      slide = null;
+    }
+    if (slide === null) {
+      slide = this.options.slide;
+    }
+    this._openNode(node, slide);
+    return this.element;
+  };
+
+  JqTreeWidget.prototype._openNode = function(node, slide, on_finished) {
+    var doOpenNode, parent;
+    if (slide == null) {
+      slide = true;
+    }
+    doOpenNode = (function(_this) {
+      return function(_node, _slide, _on_finished) {
+        var folder_element;
+        folder_element = new FolderElement(_node, _this);
+        return folder_element.open(_on_finished, _slide);
+      };
+    })(this);
+    if (node.isFolder()) {
+      if (node.load_on_demand) {
+        return this._loadFolderOnDemand(node, slide, on_finished);
+      } else {
+        parent = node.parent;
+        while (parent) {
+          if (parent.parent) {
+            doOpenNode(parent, false, null);
+          }
+          parent = parent.parent;
+        }
+        doOpenNode(node, slide, on_finished);
+        return this._saveState();
+      }
+    }
+  };
+
+  JqTreeWidget.prototype._loadFolderOnDemand = function(node, slide, on_finished) {
+    if (slide == null) {
+      slide = true;
+    }
+    node.is_loading = true;
+    return this._loadDataFromUrl(null, node, (function(_this) {
+      return function() {
+        return _this._openNode(node, slide, on_finished);
+      };
+    })(this));
+  };
+
+  JqTreeWidget.prototype.closeNode = function(node, slide) {
+    if (slide == null) {
+      slide = null;
+    }
+    if (slide === null) {
+      slide = this.options.slide;
+    }
+    if (node.isFolder()) {
+      new FolderElement(node, this).close(slide);
+      this._saveState();
+    }
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.isDragging = function() {
+    if (this.dnd_handler) {
+      return this.dnd_handler.is_dragging;
+    } else {
+      return false;
+    }
+  };
+
+  JqTreeWidget.prototype.refreshHitAreas = function() {
+    this.dnd_handler.refresh();
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.addNodeAfter = function(new_node_info, existing_node) {
+    var new_node;
+    new_node = existing_node.addAfter(new_node_info);
+    this._refreshElements(existing_node.parent);
+    return new_node;
+  };
+
+  JqTreeWidget.prototype.addNodeBefore = function(new_node_info, existing_node) {
+    var new_node;
+    new_node = existing_node.addBefore(new_node_info);
+    this._refreshElements(existing_node.parent);
+    return new_node;
+  };
+
+  JqTreeWidget.prototype.addParentNode = function(new_node_info, existing_node) {
+    var new_node;
+    new_node = existing_node.addParent(new_node_info);
+    this._refreshElements(new_node.parent);
+    return new_node;
+  };
+
+  JqTreeWidget.prototype.removeNode = function(node) {
+    var parent;
+    parent = node.parent;
+    if (parent) {
+      this.select_node_handler.removeFromSelection(node, true);
+      node.remove();
+      this._refreshElements(parent);
+    }
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.appendNode = function(new_node_info, parent_node) {
+    var node;
+    parent_node = parent_node || this.tree;
+    node = parent_node.append(new_node_info);
+    this._refreshElements(parent_node);
+    return node;
+  };
+
+  JqTreeWidget.prototype.prependNode = function(new_node_info, parent_node) {
+    var node;
+    if (!parent_node) {
+      parent_node = this.tree;
+    }
+    node = parent_node.prepend(new_node_info);
+    this._refreshElements(parent_node);
+    return node;
+  };
+
+  JqTreeWidget.prototype.updateNode = function(node, data) {
+    var id_is_changed;
+    id_is_changed = data.id && data.id !== node.id;
+    if (id_is_changed) {
+      this.tree.removeNodeFromIndex(node);
+    }
+    node.setData(data);
+    if (id_is_changed) {
+      this.tree.addNodeToIndex(node);
+    }
+    this.renderer.renderFromNode(node);
+    this._selectCurrentNode();
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.moveNode = function(node, target_node, position) {
+    var position_index;
+    position_index = Position.nameToIndex(position);
+    this.tree.moveNode(node, target_node, position_index);
+    this._refreshElements();
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.getStateFromStorage = function() {
+    return this.save_state_handler.getStateFromStorage();
+  };
+
+  JqTreeWidget.prototype.addToSelection = function(node) {
+    if (node) {
+      this.select_node_handler.addToSelection(node);
+      this._getNodeElementForNode(node).select();
+      this._saveState();
+    }
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.getSelectedNodes = function() {
+    return this.select_node_handler.getSelectedNodes();
+  };
+
+  JqTreeWidget.prototype.isNodeSelected = function(node) {
+    return this.select_node_handler.isNodeSelected(node);
+  };
+
+  JqTreeWidget.prototype.removeFromSelection = function(node) {
+    this.select_node_handler.removeFromSelection(node);
+    this._getNodeElementForNode(node).deselect();
+    this._saveState();
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.scrollToNode = function(node) {
+    var $element, top;
+    $element = $(node.element);
+    top = $element.offset().top - this.$el.offset().top;
+    this.scroll_handler.scrollTo(top);
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.getState = function() {
+    return this.save_state_handler.getState();
+  };
+
+  JqTreeWidget.prototype.setState = function(state) {
+    this.save_state_handler.setInitialState(state);
+    this._refreshElements();
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.setOption = function(option, value) {
+    this.options[option] = value;
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.moveDown = function() {
+    if (this.key_handler) {
+      this.key_handler.moveDown();
+    }
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.moveUp = function() {
+    if (this.key_handler) {
+      this.key_handler.moveUp();
+    }
+    return this.element;
+  };
+
+  JqTreeWidget.prototype.getVersion = function() {
+    return __version__;
+  };
+
+  JqTreeWidget.prototype._init = function() {
+    JqTreeWidget.__super__._init.call(this);
+    this.element = this.$el;
+    this.mouse_delay = 300;
+    this.is_initialized = false;
+    this.options.rtl = this._getRtlOption();
+    if (!this.options.closedIcon) {
+      this.options.closedIcon = this._getDefaultClosedIcon();
+    }
+    this.renderer = new ElementsRenderer(this);
+    if (SaveStateHandler != null) {
+      this.save_state_handler = new SaveStateHandler(this);
+    } else {
+      this.options.saveState = false;
+    }
+    if (SelectNodeHandler != null) {
+      this.select_node_handler = new SelectNodeHandler(this);
+    }
+    if (DragAndDropHandler != null) {
+      this.dnd_handler = new DragAndDropHandler(this);
+    } else {
+      this.options.dragAndDrop = false;
+    }
+    if (ScrollHandler != null) {
+      this.scroll_handler = new ScrollHandler(this);
+    }
+    if ((KeyHandler != null) && (SelectNodeHandler != null)) {
+      this.key_handler = new KeyHandler(this);
+    }
+    this._initData();
+    this.element.click($.proxy(this._click, this));
+    this.element.dblclick($.proxy(this._dblclick, this));
+    if (this.options.useContextMenu) {
+      return this.element.bind('contextmenu', $.proxy(this._contextmenu, this));
+    }
+  };
+
+  JqTreeWidget.prototype._deinit = function() {
+    this.element.empty();
+    this.element.unbind();
+    if (this.key_handler) {
+      this.key_handler.deinit();
+    }
+    this.tree = null;
+    return JqTreeWidget.__super__._deinit.call(this);
+  };
+
+  JqTreeWidget.prototype._initData = function() {
+    if (this.options.data) {
+      return this._loadData(this.options.data);
+    } else {
+      return this._loadDataFromUrl(this._getDataUrlInfo());
+    }
+  };
+
+  JqTreeWidget.prototype._getDataUrlInfo = function(node) {
+    var data_url, getUrlFromString;
+    data_url = this.options.dataUrl || this.element.data('url');
+    getUrlFromString = (function(_this) {
+      return function() {
+        var data, selected_node_id, url_info;
+        url_info = {
+          url: data_url
+        };
+        if (node && node.id) {
+          data = {
+            node: node.id
+          };
+          url_info['data'] = data;
+        } else {
+          selected_node_id = _this._getNodeIdToBeSelected();
+          if (selected_node_id) {
+            data = {
+              selected_node: selected_node_id
+            };
+            url_info['data'] = data;
+          }
+        }
+        return url_info;
+      };
+    })(this);
+    if ($.isFunction(data_url)) {
+      return data_url(node);
+    } else if ($.type(data_url) === 'string') {
+      return getUrlFromString();
+    } else {
+      return data_url;
+    }
+  };
+
+  JqTreeWidget.prototype._getNodeIdToBeSelected = function() {
+    if (this.options.saveState) {
+      return this.save_state_handler.getNodeIdToBeSelected();
+    } else {
+      return null;
+    }
+  };
+
+  JqTreeWidget.prototype._initTree = function(data) {
+    var doInit, must_load_on_demand;
+    doInit = (function(_this) {
+      return function() {
+        if (!_this.is_initialized) {
+          _this.is_initialized = true;
+          return _this._triggerEvent('tree.init');
+        }
+      };
+    })(this);
+    this.tree = new this.options.nodeClass(null, true, this.options.nodeClass);
+    if (this.select_node_handler) {
+      this.select_node_handler.clear();
+    }
+    this.tree.loadFromData(data);
+    must_load_on_demand = this._setInitialState();
+    this._refreshElements();
+    if (!must_load_on_demand) {
+      return doInit();
+    } else {
+      return this._setInitialStateOnDemand(doInit);
+    }
+  };
+
+  JqTreeWidget.prototype._setInitialState = function() {
+    var autoOpenNodes, is_restored, must_load_on_demand, ref2, restoreState;
+    restoreState = (function(_this) {
+      return function() {
+        var must_load_on_demand, state;
+        if (!(_this.options.saveState && _this.save_state_handler)) {
+          return [false, false];
+        } else {
+          state = _this.save_state_handler.getStateFromStorage();
+          if (!state) {
+            return [false, false];
+          } else {
+            must_load_on_demand = _this.save_state_handler.setInitialState(state);
+            return [true, must_load_on_demand];
+          }
+        }
+      };
+    })(this);
+    autoOpenNodes = (function(_this) {
+      return function() {
+        var max_level, must_load_on_demand;
+        if (_this.options.autoOpen === false) {
+          return false;
+        }
+        max_level = _this._getAutoOpenMaxLevel();
+        must_load_on_demand = false;
+        _this.tree.iterate(function(node, level) {
+          if (node.load_on_demand) {
+            must_load_on_demand = true;
+            return false;
+          } else if (!node.hasChildren()) {
+            return false;
+          } else {
+            node.is_open = true;
+            return level !== max_level;
+          }
+        });
+        return must_load_on_demand;
+      };
+    })(this);
+    ref2 = restoreState(), is_restored = ref2[0], must_load_on_demand = ref2[1];
+    if (!is_restored) {
+      must_load_on_demand = autoOpenNodes();
+    }
+    return must_load_on_demand;
+  };
+
+  JqTreeWidget.prototype._setInitialStateOnDemand = function(cb_finished) {
+    var autoOpenNodes, restoreState;
+    restoreState = (function(_this) {
+      return function() {
+        var state;
+        if (!(_this.options.saveState && _this.save_state_handler)) {
+          return false;
+        } else {
+          state = _this.save_state_handler.getStateFromStorage();
+          if (!state) {
+            return false;
+          } else {
+            _this.save_state_handler.setInitialStateOnDemand(state, cb_finished);
+            return true;
+          }
+        }
+      };
+    })(this);
+    autoOpenNodes = (function(_this) {
+      return function() {
+        var loadAndOpenNode, loading_count, max_level, openNodes;
+        max_level = _this._getAutoOpenMaxLevel();
+        loading_count = 0;
+        loadAndOpenNode = function(node) {
+          loading_count += 1;
+          return _this._openNode(node, false, function() {
+            loading_count -= 1;
+            return openNodes();
+          });
+        };
+        openNodes = function() {
+          _this.tree.iterate(function(node, level) {
+            if (node.load_on_demand) {
+              if (!node.is_loading) {
+                loadAndOpenNode(node);
+              }
+              return false;
+            } else {
+              _this._openNode(node, false);
+              return level !== max_level;
+            }
+          });
+          if (loading_count === 0) {
+            return cb_finished();
+          }
+        };
+        return openNodes();
+      };
+    })(this);
+    if (!restoreState()) {
+      return autoOpenNodes();
+    }
+  };
+
+  JqTreeWidget.prototype._getAutoOpenMaxLevel = function() {
+    if (this.options.autoOpen === true) {
+      return -1;
+    } else {
+      return parseInt(this.options.autoOpen);
+    }
+  };
+
+
+  /*
+  Redraw the tree or part of the tree.
+   * from_node: redraw this subtree
+   */
+
+  JqTreeWidget.prototype._refreshElements = function(from_node) {
+    if (from_node == null) {
+      from_node = null;
+    }
+    this.renderer.render(from_node);
+    return this._triggerEvent('tree.refresh');
+  };
+
+  JqTreeWidget.prototype._click = function(e) {
+    var click_target, event, node;
+    click_target = this._getClickTarget(e.target);
+    if (click_target) {
+      if (click_target.type === 'button') {
+        this.toggle(click_target.node, this.options.slide);
+        e.preventDefault();
+        return e.stopPropagation();
+      } else if (click_target.type === 'label') {
+        node = click_target.node;
+        event = this._triggerEvent('tree.click', {
+          node: node,
+          click_event: e
+        });
+        if (!event.isDefaultPrevented()) {
+          return this._selectNode(node, true);
+        }
+      }
+    }
+  };
+
+  JqTreeWidget.prototype._dblclick = function(e) {
+    var click_target;
+    click_target = this._getClickTarget(e.target);
+    if (click_target && click_target.type === 'label') {
+      return this._triggerEvent('tree.dblclick', {
+        node: click_target.node,
+        click_event: e
+      });
+    }
+  };
+
+  JqTreeWidget.prototype._getClickTarget = function(element) {
+    var $button, $el, $target, node;
+    $target = $(element);
+    $button = $target.closest('.jqtree-toggler');
+    if ($button.length) {
+      node = this._getNode($button);
+      if (node) {
+        return {
+          type: 'button',
+          node: node
+        };
+      }
+    } else {
+      $el = $target.closest('.jqtree-element');
+      if ($el.length) {
+        node = this._getNode($el);
+        if (node) {
+          return {
+            type: 'label',
+            node: node
+          };
+        }
+      }
+    }
+    return null;
+  };
+
+  JqTreeWidget.prototype._getNode = function($element) {
+    var $li;
+    $li = $element.closest('li.jqtree_common');
+    if ($li.length === 0) {
+      return null;
+    } else {
+      return $li.data('node');
+    }
+  };
+
+  JqTreeWidget.prototype._getNodeElementForNode = function(node) {
+    if (node.isFolder()) {
+      return new FolderElement(node, this);
+    } else {
+      return new NodeElement(node, this);
+    }
+  };
+
+  JqTreeWidget.prototype._getNodeElement = function($element) {
+    var node;
+    node = this._getNode($element);
+    if (node) {
+      return this._getNodeElementForNode(node);
+    } else {
+      return null;
+    }
+  };
+
+  JqTreeWidget.prototype._contextmenu = function(e) {
+    var $div, node;
+    $div = $(e.target).closest('ul.jqtree-tree .jqtree-element');
+    if ($div.length) {
+      node = this._getNode($div);
+      if (node) {
+        e.preventDefault();
+        e.stopPropagation();
+        this._triggerEvent('tree.contextmenu', {
+          node: node,
+          click_event: e
+        });
+        return false;
+      }
+    }
+  };
+
+  JqTreeWidget.prototype._saveState = function() {
+    if (this.options.saveState) {
+      return this.save_state_handler.saveState();
+    }
+  };
+
+  JqTreeWidget.prototype._mouseCapture = function(position_info) {
+    if (this.options.dragAndDrop) {
+      return this.dnd_handler.mouseCapture(position_info);
+    } else {
+      return false;
+    }
+  };
+
+  JqTreeWidget.prototype._mouseStart = function(position_info) {
+    if (this.options.dragAndDrop) {
+      return this.dnd_handler.mouseStart(position_info);
+    } else {
+      return false;
+    }
+  };
+
+  JqTreeWidget.prototype._mouseDrag = function(position_info) {
+    var result;
+    if (this.options.dragAndDrop) {
+      result = this.dnd_handler.mouseDrag(position_info);
+      if (this.scroll_handler) {
+        this.scroll_handler.checkScrolling();
+      }
+      return result;
+    } else {
+      return false;
+    }
+  };
+
+  JqTreeWidget.prototype._mouseStop = function(position_info) {
+    if (this.options.dragAndDrop) {
+      return this.dnd_handler.mouseStop(position_info);
+    } else {
+      return false;
+    }
+  };
+
+  JqTreeWidget.prototype._triggerEvent = function(event_name, values) {
+    var event;
+    event = $.Event(event_name);
+    $.extend(event, values);
+    this.element.trigger(event);
+    return event;
+  };
+
+  JqTreeWidget.prototype.testGenerateHitAreas = function(moving_node) {
+    this.dnd_handler.current_item = this._getNodeElementForNode(moving_node);
+    this.dnd_handler.generateHitAreas();
+    return this.dnd_handler.hit_areas;
+  };
+
+  JqTreeWidget.prototype._selectCurrentNode = function() {
+    var node, node_element;
+    node = this.getSelectedNode();
+    if (node) {
+      node_element = this._getNodeElementForNode(node);
+      if (node_element) {
+        return node_element.select();
+      }
+    }
+  };
+
+  JqTreeWidget.prototype._deselectCurrentNode = function() {
+    var node;
+    node = this.getSelectedNode();
+    if (node) {
+      return this.removeFromSelection(node);
+    }
+  };
+
+  JqTreeWidget.prototype._getDefaultClosedIcon = function() {
+    if (this.options.rtl) {
+      return '&#x25c0;';
+    } else {
+      return '&#x25ba;';
+    }
+  };
+
+  JqTreeWidget.prototype._getRtlOption = function() {
+    var data_rtl;
+    if (this.options.rtl !== null) {
+      return this.options.rtl;
+    } else {
+      data_rtl = this.element.data('rtl');
+      if ((data_rtl != null) && data_rtl !== false) {
+        return true;
+      } else {
+        return false;
+      }
+    }
+  };
+
+  JqTreeWidget.prototype._notifyLoading = function(is_loading, node, $el) {
+    if (this.options.onLoading) {
+      return this.options.onLoading(is_loading, node, $el);
+    }
+  };
+
+  return JqTreeWidget;
+
+})(MouseWidget);
+
+JqTreeWidget.getModule = function(name) {
+  var modules;
+  modules = {
+    'node': node_module,
+    'util': util_module
+  };
+  return modules[name];
+};
+
+SimpleWidget.register(JqTreeWidget, 'tree');
+
+},{"./drag_and_drop_handler":1,"./elements_renderer":2,"./key_handler":3,"./mouse.widget":4,"./node":5,"./node_element":6,"./save_state_handler":7,"./scroll_handler":8,"./select_node_handler":9,"./simple.widget":10,"./util":12,"./version":13}],12:[function(require,module,exports){
+var _indexOf, getBoolString, html_escape, indexOf, isInt;
+
+_indexOf = function(array, item) {
+  var i, j, len, value;
+  for (i = j = 0, len = array.length; j < len; i = ++j) {
+    value = array[i];
+    if (value === item) {
+      return i;
+    }
+  }
+  return -1;
+};
+
+indexOf = function(array, item) {
+  if (array.indexOf) {
+    return array.indexOf(item);
+  } else {
+    return _indexOf(array, item);
+  }
+};
+
+isInt = function(n) {
+  return typeof n === 'number' && n % 1 === 0;
+};
+
+html_escape = function(string) {
+  return ('' + string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g, '&#x2F;');
+};
+
+getBoolString = function(value) {
+  if (value) {
+    return 'true';
+  } else {
+    return 'false';
+  }
+};
+
+module.exports = {
+  _indexOf: _indexOf,
+  getBoolString: getBoolString,
+  html_escape: html_escape,
+  indexOf: indexOf,
+  isInt: isInt
+};
+
+},{}],13:[function(require,module,exports){
+module.exports = '1.3.2';
+
+},{}]},{},[11]);
diff --git a/src/main/jbake/assets/js/typeahead.bundle.min.js b/src/main/jbake/assets/js/typeahead.bundle.min.js
new file mode 100755
index 0000000..ffd98f3
--- /dev/null
+++ b/src/main/jbake/assets/js/typeahead.bundle.min.js
@@ -0,0 +1,8 @@
+/*!
+ * typeahead.js 0.11.1
+ * https://github.com/twitter/typeahead.js
+ * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT
+ */
+
+!function(a,b){"function"==typeof define&&define.amd?define("bloodhound",["jquery"],function(c){return a.Bloodhound=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):a.Bloodhound=b(jQuery)}(this,function(a){var b=function(){"use strict";return{isMsie:function(){return/(msie|trident)/i.test(navigator.userAgent)?navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]:!1},isBlankString:function(a){return!a||/^\s*$/.test(a)},escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(a){return"string"==typeof a},isNumber:function(a){return"number"==typeof a},isArray:a.isArray,isFunction:a.isFunction,isObject:a.isPlainObject,isUndefined:function(a){return"undefined"==typeof a},isElement:function(a){return!(!a||1!==a.nodeType)},isJQuery:function(b){return b instanceof a},toStr:function(a){return b.isUndefined(a)||null===a?"":a+""},bind:a.proxy,each:function(b,c){function d(a,b){return c(b,a)}a.each(b,d)},map:a.map,filter:a.grep,every:function(b,c){var d=!0;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?void 0:!1}),!!d):d},some:function(b,c){var d=!1;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?!1:void 0}),!!d):d},mixin:a.extend,identity:function(a){return a},clone:function(b){return a.extend(!0,{},b)},getIdGenerator:function(){var a=0;return function(){return a++}},templatify:function(b){function c(){return String(b)}return a.isFunction(b)?b:c},defer:function(a){setTimeout(a,0)},debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},throttle:function(a,b){var c,d,e,f,g,h;return g=0,h=function(){g=new Date,e=null,f=a.apply(c,d)},function(){var i=new Date,j=b-(i-g);return c=this,d=arguments,0>=j?(clearTimeout(e),e=null,g=i,f=a.apply(c,d)):e||(e=setTimeout(h,j)),f}},stringify:function(a){return b.isString(a)?a:JSON.stringify(a)},noop:function(){}}}(),c="0.11.1",d=function(){"use strict";function a(a){return a=b.toStr(a),a?a.split(/\s+/):[]}function c(a){return a=b.toStr(a),a?a.split(/\W+/):[]}function d(a){return function(c){return c=b.isArray(c)?c:[].slice.call(arguments,0),function(d){var e=[];return b.each(c,function(c){e=e.concat(a(b.toStr(d[c])))}),e}}}return{nonword:c,whitespace:a,obj:{nonword:d(c),whitespace:d(a)}}}(),e=function(){"use strict";function c(c){this.maxSize=b.isNumber(c)?c:100,this.reset(),this.maxSize<=0&&(this.set=this.get=a.noop)}function d(){this.head=this.tail=null}function e(a,b){this.key=a,this.val=b,this.prev=this.next=null}return b.mixin(c.prototype,{set:function(a,b){var c,d=this.list.tail;this.size>=this.maxSize&&(this.list.remove(d),delete this.hash[d.key],this.size--),(c=this.hash[a])?(c.val=b,this.list.moveToFront(c)):(c=new e(a,b),this.list.add(c),this.hash[a]=c,this.size++)},get:function(a){var b=this.hash[a];return b?(this.list.moveToFront(b),b.val):void 0},reset:function(){this.size=0,this.hash={},this.list=new d}}),b.mixin(d.prototype,{add:function(a){this.head&&(a.next=this.head,this.head.prev=a),this.head=a,this.tail=this.tail||a},remove:function(a){a.prev?a.prev.next=a.next:this.head=a.next,a.next?a.next.prev=a.prev:this.tail=a.prev},moveToFront:function(a){this.remove(a),this.add(a)}}),c}(),f=function(){"use strict";function c(a,c){this.prefix=["__",a,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+b.escapeRegExChars(this.prefix)),this.ls=c||h,!this.ls&&this._noop()}function d(){return(new Date).getTime()}function e(a){return JSON.stringify(b.isUndefined(a)?null:a)}function f(b){return a.parseJSON(b)}function g(a){var b,c,d=[],e=h.length;for(b=0;e>b;b++)(c=h.key(b)).match(a)&&d.push(c.replace(a,""));return d}var h;try{h=window.localStorage,h.setItem("~~~","!"),h.removeItem("~~~")}catch(i){h=null}return b.mixin(c.prototype,{_prefix:function(a){return this.prefix+a},_ttlKey:function(a){return this._prefix(a)+this.ttlKey},_noop:function(){this.get=this.set=this.remove=this.clear=this.isExpired=b.noop},_safeSet:function(a,b){try{this.ls.setItem(a,b)}catch(c){"QuotaExceededError"===c.name&&(this.clear(),this._noop())}},get:function(a){return this.isExpired(a)&&this.remove(a),f(this.ls.getItem(this._prefix(a)))},set:function(a,c,f){return b.isNumber(f)?this._safeSet(this._ttlKey(a),e(d()+f)):this.ls.removeItem(this._ttlKey(a)),this._safeSet(this._prefix(a),e(c))},remove:function(a){return this.ls.removeItem(this._ttlKey(a)),this.ls.removeItem(this._prefix(a)),this},clear:function(){var a,b=g(this.keyMatcher);for(a=b.length;a--;)this.remove(b[a]);return this},isExpired:function(a){var c=f(this.ls.getItem(this._ttlKey(a)));return b.isNumber(c)&&d()>c?!0:!1}}),c}(),g=function(){"use strict";function c(a){a=a||{},this.cancelled=!1,this.lastReq=null,this._send=a.transport,this._get=a.limiter?a.limiter(this._get):this._get,this._cache=a.cache===!1?new e(0):h}var d=0,f={},g=6,h=new e(10);return c.setMaxPendingRequests=function(a){g=a},c.resetCache=function(){h.reset()},b.mixin(c.prototype,{_fingerprint:function(b){return b=b||{},b.url+b.type+a.param(b.data||{})},_get:function(a,b){function c(a){b(null,a),k._cache.set(i,a)}function e(){b(!0)}function h(){d--,delete f[i],k.onDeckRequestArgs&&(k._get.apply(k,k.onDeckRequestArgs),k.onDeckRequestArgs=null)}var i,j,k=this;i=this._fingerprint(a),this.cancelled||i!==this.lastReq||((j=f[i])?j.done(c).fail(e):g>d?(d++,f[i]=this._send(a).done(c).fail(e).always(h)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(c,d){var e,f;d=d||a.noop,c=b.isString(c)?{url:c}:c||{},f=this._fingerprint(c),this.cancelled=!1,this.lastReq=f,(e=this._cache.get(f))?d(null,e):this._get(c,d)},cancel:function(){this.cancelled=!0}}),c}(),h=window.SearchIndex=function(){"use strict";function c(c){c=c||{},c.datumTokenizer&&c.queryTokenizer||a.error("datumTokenizer and queryTokenizer are both required"),this.identify=c.identify||b.stringify,this.datumTokenizer=c.datumTokenizer,this.queryTokenizer=c.queryTokenizer,this.reset()}function d(a){return a=b.filter(a,function(a){return!!a}),a=b.map(a,function(a){return a.toLowerCase()})}function e(){var a={};return a[i]=[],a[h]={},a}function f(a){for(var b={},c=[],d=0,e=a.length;e>d;d++)b[a[d]]||(b[a[d]]=!0,c.push(a[d]));return c}function g(a,b){var c=0,d=0,e=[];a=a.sort(),b=b.sort();for(var f=a.length,g=b.length;f>c&&g>d;)a[c]<b[d]?c++:a[c]>b[d]?d++:(e.push(a[c]),c++,d++);return e}var h="c",i="i";return b.mixin(c.prototype,{bootstrap:function(a){this.datums=a.datums,this.trie=a.trie},add:function(a){var c=this;a=b.isArray(a)?a:[a],b.each(a,function(a){var f,g;c.datums[f=c.identify(a)]=a,g=d(c.datumTokenizer(a)),b.each(g,function(a){var b,d,g;for(b=c.trie,d=a.split("");g=d.shift();)b=b[h][g]||(b[h][g]=e()),b[i].push(f)})})},get:function(a){var c=this;return b.map(a,function(a){return c.datums[a]})},search:function(a){var c,e,j=this;return c=d(this.queryTokenizer(a)),b.each(c,function(a){var b,c,d,f;if(e&&0===e.length)return!1;for(b=j.trie,c=a.split("");b&&(d=c.shift());)b=b[h][d];return b&&0===c.length?(f=b[i].slice(0),void(e=e?g(e,f):f)):(e=[],!1)}),e?b.map(f(e),function(a){return j.datums[a]}):[]},all:function(){var a=[];for(var b in this.datums)a.push(this.datums[b]);return a},reset:function(){this.datums={},this.trie=e()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),c}(),i=function(){"use strict";function a(a){this.url=a.url,this.ttl=a.ttl,this.cache=a.cache,this.prepare=a.prepare,this.transform=a.transform,this.transport=a.transport,this.thumbprint=a.thumbprint,this.storage=new f(a.cacheKey)}var c;return c={data:"data",protocol:"protocol",thumbprint:"thumbprint"},b.mixin(a.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},store:function(a){this.cache&&(this.storage.set(c.data,a,this.ttl),this.storage.set(c.protocol,location.protocol,this.ttl),this.storage.set(c.thumbprint,this.thumbprint,this.ttl))},fromCache:function(){var a,b={};return this.cache?(b.data=this.storage.get(c.data),b.protocol=this.storage.get(c.protocol),b.thumbprint=this.storage.get(c.thumbprint),a=b.thumbprint!==this.thumbprint||b.protocol!==location.protocol,b.data&&!a?b.data:null):null},fromNetwork:function(a){function b(){a(!0)}function c(b){a(null,e.transform(b))}var d,e=this;a&&(d=this.prepare(this._settings()),this.transport(d).fail(b).done(c))},clear:function(){return this.storage.clear(),this}}),a}(),j=function(){"use strict";function a(a){this.url=a.url,this.prepare=a.prepare,this.transform=a.transform,this.transport=new g({cache:a.cache,limiter:a.limiter,transport:a.transport})}return b.mixin(a.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},get:function(a,b){function c(a,c){b(a?[]:e.transform(c))}var d,e=this;if(b)return a=a||"",d=this.prepare(a,this._settings()),this.transport.get(d,c)},cancelLastRequest:function(){this.transport.cancel()}}),a}(),k=function(){"use strict";function d(d){var e;return d?(e={url:null,ttl:864e5,cache:!0,cacheKey:null,thumbprint:"",prepare:b.identity,transform:b.identity,transport:null},d=b.isString(d)?{url:d}:d,d=b.mixin(e,d),!d.url&&a.error("prefetch requires url to be set"),d.transform=d.filter||d.transform,d.cacheKey=d.cacheKey||d.url,d.thumbprint=c+d.thumbprint,d.transport=d.transport?h(d.transport):a.ajax,d):null}function e(c){var d;if(c)return d={url:null,cache:!0,prepare:null,replace:null,wildcard:null,limiter:null,rateLimitBy:"debounce",rateLimitWait:300,transform:b.identity,transport:null},c=b.isString(c)?{url:c}:c,c=b.mixin(d,c),!c.url&&a.error("remote requires url to be set"),c.transform=c.filter||c.transform,c.prepare=f(c),c.limiter=g(c),c.transport=c.transport?h(c.transport):a.ajax,delete c.replace,delete c.wildcard,delete c.rateLimitBy,delete c.rateLimitWait,c}function f(a){function b(a,b){return b.url=f(b.url,a),b}function c(a,b){return b.url=b.url.replace(g,encodeURIComponent(a)),b}function d(a,b){return b}var e,f,g;return e=a.prepare,f=a.replace,g=a.wildcard,e?e:e=f?b:a.wildcard?c:d}function g(a){function c(a){return function(c){return b.debounce(c,a)}}function d(a){return function(c){return b.throttle(c,a)}}var e,f,g;return e=a.limiter,f=a.rateLimitBy,g=a.rateLimitWait,e||(e=/^throttle$/i.test(f)?d(g):c(g)),e}function h(c){return function(d){function e(a){b.defer(function(){g.resolve(a)})}function f(a){b.defer(function(){g.reject(a)})}var g=a.Deferred();return c(d,e,f),g}}return function(c){var f,g;return f={initialize:!0,identify:b.stringify,datumTokenizer:null,queryTokenizer:null,sufficient:5,sorter:null,local:[],prefetch:null,remote:null},c=b.mixin(f,c||{}),!c.datumTokenizer&&a.error("datumTokenizer is required"),!c.queryTokenizer&&a.error("queryTokenizer is required"),g=c.sorter,c.sorter=g?function(a){return a.sort(g)}:b.identity,c.local=b.isFunction(c.local)?c.local():c.local,c.prefetch=d(c.prefetch),c.remote=e(c.remote),c}}(),l=function(){"use strict";function c(a){a=k(a),this.sorter=a.sorter,this.identify=a.identify,this.sufficient=a.sufficient,this.local=a.local,this.remote=a.remote?new j(a.remote):null,this.prefetch=a.prefetch?new i(a.prefetch):null,this.index=new h({identify:this.identify,datumTokenizer:a.datumTokenizer,queryTokenizer:a.queryTokenizer}),a.initialize!==!1&&this.initialize()}var e;return e=window&&window.Bloodhound,c.noConflict=function(){return window&&(window.Bloodhound=e),c},c.tokenizers=d,b.mixin(c.prototype,{__ttAdapter:function(){function a(a,b,d){return c.search(a,b,d)}function b(a,b){return c.search(a,b)}var c=this;return this.remote?a:b},_loadPrefetch:function(){function b(a,b){return a?c.reject():(e.add(b),e.prefetch.store(e.index.serialize()),void c.resolve())}var c,d,e=this;return c=a.Deferred(),this.prefetch?(d=this.prefetch.fromCache())?(this.index.bootstrap(d),c.resolve()):this.prefetch.fromNetwork(b):c.resolve(),c.promise()},_initialize:function(){function a(){b.add(b.local)}var b=this;return this.clear(),(this.initPromise=this._loadPrefetch()).done(a),this.initPromise},initialize:function(a){return!this.initPromise||a?this._initialize():this.initPromise},add:function(a){return this.index.add(a),this},get:function(a){return a=b.isArray(a)?a:[].slice.call(arguments),this.index.get(a)},search:function(a,c,d){function e(a){var c=[];b.each(a,function(a){!b.some(f,function(b){return g.identify(a)===g.identify(b)})&&c.push(a)}),d&&d(c)}var f,g=this;return f=this.sorter(this.index.search(a)),c(this.remote?f.slice():f),this.remote&&f.length<this.sufficient?this.remote.get(a,e):this.remote&&this.remote.cancelLastRequest(),this},all:function(){return this.index.all()},clear:function(){return this.index.reset(),this},clearPrefetchCache:function(){return this.prefetch&&this.prefetch.clear(),this},clearRemoteCache:function(){return g.resetCache(),this},ttAdapter:function(){return this.__ttAdapter()}}),c}();return l}),function(a,b){"function"==typeof define&&define.amd?define("typeahead.js",["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){var b=function(){"use strict";return{isMsie:function(){return/(msie|trident)/i.test(navigator.userAgent)?navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]:!1},isBlankString:function(a){return!a||/^\s*$/.test(a)},escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(a){return"string"==typeof a},isNumber:function(a){return"number"==typeof a},isArray:a.isArray,isFunction:a.isFunction,isObject:a.isPlainObject,isUndefined:function(a){return"undefined"==typeof a},isElement:function(a){return!(!a||1!==a.nodeType)},isJQuery:function(b){return b instanceof a},toStr:function(a){return b.isUndefined(a)||null===a?"":a+""},bind:a.proxy,each:function(b,c){function d(a,b){return c(b,a)}a.each(b,d)},map:a.map,filter:a.grep,every:function(b,c){var d=!0;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?void 0:!1}),!!d):d},some:function(b,c){var d=!1;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?!1:void 0}),!!d):d},mixin:a.extend,identity:function(a){return a},clone:function(b){return a.extend(!0,{},b)},getIdGenerator:function(){var a=0;return function(){return a++}},templatify:function(b){function c(){return String(b)}return a.isFunction(b)?b:c},defer:function(a){setTimeout(a,0)},debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},throttle:function(a,b){var c,d,e,f,g,h;return g=0,h=function(){g=new Date,e=null,f=a.apply(c,d)},function(){var i=new Date,j=b-(i-g);return c=this,d=arguments,0>=j?(clearTimeout(e),e=null,g=i,f=a.apply(c,d)):e||(e=setTimeout(h,j)),f}},stringify:function(a){return b.isString(a)?a:JSON.stringify(a)},noop:function(){}}}(),c=function(){"use strict";function a(a){var g,h;return h=b.mixin({},f,a),g={css:e(),classes:h,html:c(h),selectors:d(h)},{css:g.css,html:g.html,classes:g.classes,selectors:g.selectors,mixin:function(a){b.mixin(a,g)}}}function c(a){return{wrapper:'<span class="'+a.wrapper+'"></span>',menu:'<div class="'+a.menu+'"></div>'}}function d(a){var c={};return b.each(a,function(a,b){c[b]="."+a}),c}function e(){var a={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},menu:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};return b.isMsie()&&b.mixin(a.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),a}var f={wrapper:"twitter-typeahead",input:"tt-input",hint:"tt-hint",menu:"tt-menu",dataset:"tt-dataset",suggestion:"tt-suggestion",selectable:"tt-selectable",empty:"tt-empty",open:"tt-open",cursor:"tt-cursor",highlight:"tt-highlight"};return a}(),d=function(){"use strict";function c(b){b&&b.el||a.error("EventBus initialized without el"),this.$el=a(b.el)}var d,e;return d="typeahead:",e={render:"rendered",cursorchange:"cursorchanged",select:"selected",autocomplete:"autocompleted"},b.mixin(c.prototype,{_trigger:function(b,c){var e;return e=a.Event(d+b),(c=c||[]).unshift(e),this.$el.trigger.apply(this.$el,c),e},before:function(a){var b,c;return b=[].slice.call(arguments,1),c=this._trigger("before"+a,b),c.isDefaultPrevented()},trigger:function(a){var b;this._trigger(a,[].slice.call(arguments,1)),(b=e[a])&&this._trigger(b,[].slice.call(arguments,1))}}),c}(),e=function(){"use strict";function a(a,b,c,d){var e;if(!c)return this;for(b=b.split(i),c=d?h(c,d):c,this._callbacks=this._callbacks||{};e=b.shift();)this._callbacks[e]=this._callbacks[e]||{sync:[],async:[]},this._callbacks[e][a].push(c);return this}function b(b,c,d){return a.call(this,"async",b,c,d)}function c(b,c,d){return a.call(this,"sync",b,c,d)}function d(a){var b;if(!this._callbacks)return this;for(a=a.split(i);b=a.shift();)delete this._callbacks[b];return this}function e(a){var b,c,d,e,g;if(!this._callbacks)return this;for(a=a.split(i),d=[].slice.call(arguments,1);(b=a.shift())&&(c=this._callbacks[b]);)e=f(c.sync,this,[b].concat(d)),g=f(c.async,this,[b].concat(d)),e()&&j(g);return this}function f(a,b,c){function d(){for(var d,e=0,f=a.length;!d&&f>e;e+=1)d=a[e].apply(b,c)===!1;return!d}return d}function g(){var a;return a=window.setImmediate?function(a){setImmediate(function(){a()})}:function(a){setTimeout(function(){a()},0)}}function h(a,b){return a.bind?a.bind(b):function(){a.apply(b,[].slice.call(arguments,0))}}var i=/\s+/,j=g();return{onSync:c,onAsync:b,off:d,trigger:e}}(),f=function(a){"use strict";function c(a,c,d){for(var e,f=[],g=0,h=a.length;h>g;g++)f.push(b.escapeRegExChars(a[g]));return e=d?"\\b("+f.join("|")+")\\b":"("+f.join("|")+")",c?new RegExp(e):new RegExp(e,"i")}var d={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:!1,caseSensitive:!1};return function(e){function f(b){var c,d,f;return(c=h.exec(b.data))&&(f=a.createElement(e.tagName),e.className&&(f.className=e.className),d=b.splitText(c.index),d.splitText(c[0].length),f.appendChild(d.cloneNode(!0)),b.parentNode.replaceChild(f,d)),!!c}function g(a,b){for(var c,d=3,e=0;e<a.childNodes.length;e++)c=a.childNodes[e],c.nodeType===d?e+=b(c)?1:0:g(c,b)}var h;e=b.mixin({},d,e),e.node&&e.pattern&&(e.pattern=b.isArray(e.pattern)?e.pattern:[e.pattern],h=c(e.pattern,e.caseSensitive,e.wordsOnly),g(e.node,f))}}(window.document),g=function(){"use strict";function c(c,e){c=c||{},c.input||a.error("input is missing"),e.mixin(this),this.$hint=a(c.hint),this.$input=a(c.input),this.query=this.$input.val(),this.queryWhenFocused=this.hasFocus()?this.query:null,this.$overflowHelper=d(this.$input),this._checkLanguageDirection(),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=b.noop)}function d(b){return a('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:b.css("font-family"),fontSize:b.css("font-size"),fontStyle:b.css("font-style"),fontVariant:b.css("font-variant"),fontWeight:b.css("font-weight"),wordSpacing:b.css("word-spacing"),letterSpacing:b.css("letter-spacing"),textIndent:b.css("text-indent"),textRendering:b.css("text-rendering"),textTransform:b.css("text-transform")}).insertAfter(b)}function f(a,b){return c.normalizeQuery(a)===c.normalizeQuery(b)}function g(a){return a.altKey||a.ctrlKey||a.metaKey||a.shiftKey}var h;return h={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},c.normalizeQuery=function(a){return b.toStr(a).replace(/^\s*/g,"").replace(/\s{2,}/g," ")},b.mixin(c.prototype,e,{_onBlur:function(){this.resetInputValue(),this.trigger("blurred")},_onFocus:function(){this.queryWhenFocused=this.query,this.trigger("focused")},_onKeydown:function(a){var b=h[a.which||a.keyCode];this._managePreventDefault(b,a),b&&this._shouldTrigger(b,a)&&this.trigger(b+"Keyed",a)},_onInput:function(){this._setQuery(this.getInputValue()),this.clearHintIfInvalid(),this._checkLanguageDirection()},_managePreventDefault:function(a,b){var c;switch(a){case"up":case"down":c=!g(b);break;default:c=!1}c&&b.preventDefault()},_shouldTrigger:function(a,b){var c;switch(a){case"tab":c=!g(b);break;default:c=!0}return c},_checkLanguageDirection:function(){var a=(this.$input.css("direction")||"ltr").toLowerCase();this.dir!==a&&(this.dir=a,this.$hint.attr("dir",a),this.trigger("langDirChanged",a))},_setQuery:function(a,b){var c,d;c=f(a,this.query),d=c?this.query.length!==a.length:!1,this.query=a,b||c?!b&&d&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},bind:function(){var a,c,d,e,f=this;return a=b.bind(this._onBlur,this),c=b.bind(this._onFocus,this),d=b.bind(this._onKeydown,this),e=b.bind(this._onInput,this),this.$input.on("blur.tt",a).on("focus.tt",c).on("keydown.tt",d),!b.isMsie()||b.isMsie()>9?this.$input.on("input.tt",e):this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",function(a){h[a.which||a.keyCode]||b.defer(b.bind(f._onInput,f,a))}),this},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getLangDir:function(){return this.dir},getQuery:function(){return this.query||""},setQuery:function(a,b){this.setInputValue(a),this._setQuery(a,b)},hasQueryChangedSinceLastFocus:function(){return this.query!==this.queryWhenFocused},getInputValue:function(){return this.$input.val()},setInputValue:function(a){this.$input.val(a),this.clearHintIfInvalid(),this._checkLanguageDirection()},resetInputValue:function(){this.setInputValue(this.query)},getHint:function(){return this.$hint.val()},setHint:function(a){this.$hint.val(a)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var a,b,c,d;a=this.getInputValue(),b=this.getHint(),c=a!==b&&0===b.indexOf(a),d=""!==a&&c&&!this.hasOverflow(),!d&&this.clearHint()},hasFocus:function(){return this.$input.is(":focus")},hasOverflow:function(){var a=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=a},isCursorAtEnd:function(){var a,c,d;return a=this.$input.val().length,c=this.$input[0].selectionStart,b.isNumber(c)?c===a:document.selection?(d=document.selection.createRange(),d.moveStart("character",-a),a===d.text.length):!0},destroy:function(){this.$hint.off(".tt"),this.$input.off(".tt"),this.$overflowHelper.remove(),this.$hint=this.$input=this.$overflowHelper=a("<div>")}}),c}(),h=function(){"use strict";function c(c,e){c=c||{},c.templates=c.templates||{},c.templates.notFound=c.templates.notFound||c.templates.empty,c.source||a.error("missing source"),c.node||a.error("missing node"),c.name&&!h(c.name)&&a.error("invalid dataset name: "+c.name),e.mixin(this),this.highlight=!!c.highlight,this.name=c.name||j(),this.limit=c.limit||5,this.displayFn=d(c.display||c.displayKey),this.templates=g(c.templates,this.displayFn),this.source=c.source.__ttAdapter?c.source.__ttAdapter():c.source,this.async=b.isUndefined(c.async)?this.source.length>2:!!c.async,this._resetLastSuggestion(),this.$el=a(c.node).addClass(this.classes.dataset).addClass(this.classes.dataset+"-"+this.name)}function d(a){function c(b){return b[a]}return a=a||b.stringify,b.isFunction(a)?a:c}function g(c,d){function e(b){return a("<div>").text(d(b))}return{notFound:c.notFound&&b.templatify(c.notFound),pending:c.pending&&b.templatify(c.pending),header:c.header&&b.templatify(c.header),footer:c.footer&&b.templatify(c.footer),suggestion:c.suggestion||e}}function h(a){return/^[_a-zA-Z0-9-]+$/.test(a)}var i,j;return i={val:"tt-selectable-display",obj:"tt-selectable-object"},j=b.getIdGenerator(),c.extractData=function(b){var c=a(b);return c.data(i.obj)?{val:c.data(i.val)||"",obj:c.data(i.obj)||null}:null},b.mixin(c.prototype,e,{_overwrite:function(a,b){b=b||[],b.length?this._renderSuggestions(a,b):this.async&&this.templates.pending?this._renderPending(a):!this.async&&this.templates.notFound?this._renderNotFound(a):this._empty(),this.trigger("rendered",this.name,b,!1)},_append:function(a,b){b=b||[],b.length&&this.$lastSuggestion.length?this._appendSuggestions(a,b):b.length?this._renderSuggestions(a,b):!this.$lastSuggestion.length&&this.templates.notFound&&this._renderNotFound(a),this.trigger("rendered",this.name,b,!0)},_renderSuggestions:function(a,b){var c;c=this._getSuggestionsFragment(a,b),this.$lastSuggestion=c.children().last(),this.$el.html(c).prepend(this._getHeader(a,b)).append(this._getFooter(a,b))},_appendSuggestions:function(a,b){var c,d;c=this._getSuggestionsFragment(a,b),d=c.children().last(),this.$lastSuggestion.after(c),this.$lastSuggestion=d},_renderPending:function(a){var b=this.templates.pending;this._resetLastSuggestion(),b&&this.$el.html(b({query:a,dataset:this.name}))},_renderNotFound:function(a){var b=this.templates.notFound;this._resetLastSuggestion(),b&&this.$el.html(b({query:a,dataset:this.name}))},_empty:function(){this.$el.empty(),this._resetLastSuggestion()},_getSuggestionsFragment:function(c,d){var e,g=this;return e=document.createDocumentFragment(),b.each(d,function(b){var d,f;f=g._injectQuery(c,b),d=a(g.templates.suggestion(f)).data(i.obj,b).data(i.val,g.displayFn(b)).addClass(g.classes.suggestion+" "+g.classes.selectable),e.appendChild(d[0])}),this.highlight&&f({className:this.classes.highlight,node:e,pattern:c}),a(e)},_getFooter:function(a,b){return this.templates.footer?this.templates.footer({query:a,suggestions:b,dataset:this.name}):null},_getHeader:function(a,b){return this.templates.header?this.templates.header({query:a,suggestions:b,dataset:this.name}):null},_resetLastSuggestion:function(){this.$lastSuggestion=a()},_injectQuery:function(a,c){return b.isObject(c)?b.mixin({_query:a},c):c},update:function(b){function c(a){g||(g=!0,a=(a||[]).slice(0,e.limit),h=a.length,e._overwrite(b,a),h<e.limit&&e.async&&e.trigger("asyncRequested",b))}function d(c){c=c||[],!f&&h<e.limit&&(e.cancel=a.noop,h+=c.length,e._append(b,c.slice(0,e.limit-h)),e.async&&e.trigger("asyncReceived",b))}var e=this,f=!1,g=!1,h=0;this.cancel(),this.cancel=function(){f=!0,e.cancel=a.noop,e.async&&e.trigger("asyncCanceled",b)},this.source(b,c,d),!g&&c([])},cancel:a.noop,clear:function(){this._empty(),this.cancel(),this.trigger("cleared")},isEmpty:function(){return this.$el.is(":empty")},destroy:function(){this.$el=a("<div>")}}),c}(),i=function(){"use strict";function c(c,d){function e(b){var c=f.$node.find(b.node).first();return b.node=c.length?c:a("<div>").appendTo(f.$node),new h(b,d)}var f=this;c=c||{},c.node||a.error("node is required"),d.mixin(this),this.$node=a(c.node),this.query=null,this.datasets=b.map(c.datasets,e)}return b.mixin(c.prototype,e,{_onSelectableClick:function(b){this.trigger("selectableClicked",a(b.currentTarget))},_onRendered:function(a,b,c,d){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetRendered",b,c,d)},_onCleared:function(){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetCleared")},_propagate:function(){this.trigger.apply(this,arguments)},_allDatasetsEmpty:function(){function a(a){return a.isEmpty()}return b.every(this.datasets,a)},_getSelectables:function(){return this.$node.find(this.selectors.selectable)},_removeCursor:function(){var a=this.getActiveSelectable();a&&a.removeClass(this.classes.cursor)},_ensureVisible:function(a){var b,c,d,e;b=a.position().top,c=b+a.outerHeight(!0),d=this.$node.scrollTop(),e=this.$node.height()+parseInt(this.$node.css("paddingTop"),10)+parseInt(this.$node.css("paddingBottom"),10),0>b?this.$node.scrollTop(d+b):c>e&&this.$node.scrollTop(d+(c-e))},bind:function(){var a,c=this;return a=b.bind(this._onSelectableClick,this),this.$node.on("click.tt",this.selectors.selectable,a),b.each(this.datasets,function(a){a.onSync("asyncRequested",c._propagate,c).onSync("asyncCanceled",c._propagate,c).onSync("asyncReceived",c._propagate,c).onSync("rendered",c._onRendered,c).onSync("cleared",c._onCleared,c)}),this},isOpen:function(){return this.$node.hasClass(this.classes.open)},open:function(){this.$node.addClass(this.classes.open)},close:function(){this.$node.removeClass(this.classes.open),this._removeCursor()},setLanguageDirection:function(a){this.$node.attr("dir",a)},selectableRelativeToCursor:function(a){var b,c,d,e;return c=this.getActiveSelectable(),b=this._getSelectables(),d=c?b.index(c):-1,e=d+a,e=(e+1)%(b.length+1)-1,e=-1>e?b.length-1:e,-1===e?null:b.eq(e)},setCursor:function(a){this._removeCursor(),(a=a&&a.first())&&(a.addClass(this.classes.cursor),this._ensureVisible(a))},getSelectableData:function(a){return a&&a.length?h.extractData(a):null},getActiveSelectable:function(){var a=this._getSelectables().filter(this.selectors.cursor).first();return a.length?a:null},getTopSelectable:function(){var a=this._getSelectables().first();return a.length?a:null},update:function(a){function c(b){b.update(a)}var d=a!==this.query;return d&&(this.query=a,b.each(this.datasets,c)),d},empty:function(){function a(a){a.clear()}b.each(this.datasets,a),this.query=null,this.$node.addClass(this.classes.empty)},destroy:function(){function c(a){a.destroy()}this.$node.off(".tt"),this.$node=a("<div>"),b.each(this.datasets,c)}}),c}(),j=function(){"use strict";function a(){i.apply(this,[].slice.call(arguments,0))}var c=i.prototype;return b.mixin(a.prototype,i.prototype,{open:function(){return!this._allDatasetsEmpty()&&this._show(),c.open.apply(this,[].slice.call(arguments,0))},close:function(){return this._hide(),c.close.apply(this,[].slice.call(arguments,0))},_onRendered:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),c._onRendered.apply(this,[].slice.call(arguments,0))},_onCleared:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),c._onCleared.apply(this,[].slice.call(arguments,0))},setLanguageDirection:function(a){return this.$node.css("ltr"===a?this.css.ltr:this.css.rtl),c.setLanguageDirection.apply(this,[].slice.call(arguments,0))},_hide:function(){this.$node.hide()},_show:function(){this.$node.css("display","block")}}),a}(),k=function(){"use strict";function c(c,e){var f,g,h,i,j,k,l,m,n,o,p;c=c||{},c.input||a.error("missing input"),c.menu||a.error("missing menu"),c.eventBus||a.error("missing event bus"),e.mixin(this),this.eventBus=c.eventBus,this.minLength=b.isNumber(c.minLength)?c.minLength:1,this.input=c.input,this.menu=c.menu,this.enabled=!0,this.active=!1,this.input.hasFocus()&&this.activate(),this.dir=this.input.getLangDir(),this._hacks(),this.menu.bind().onSync("selectableClicked",this._onSelectableClicked,this).onSync("asyncRequested",this._onAsyncRequested,this).onSync("asyncCanceled",this._onAsyncCanceled,this).onSync("asyncReceived",this._onAsyncReceived,this).onSync("datasetRendered",this._onDatasetRendered,this).onSync("datasetCleared",this._onDatasetCleared,this),f=d(this,"activate","open","_onFocused"),g=d(this,"deactivate","_onBlurred"),h=d(this,"isActive","isOpen","_onEnterKeyed"),i=d(this,"isActive","isOpen","_onTabKeyed"),j=d(this,"isActive","_onEscKeyed"),k=d(this,"isActive","open","_onUpKeyed"),l=d(this,"isActive","open","_onDownKeyed"),m=d(this,"isActive","isOpen","_onLeftKeyed"),n=d(this,"isActive","isOpen","_onRightKeyed"),o=d(this,"_openIfActive","_onQueryChanged"),p=d(this,"_openIfActive","_onWhitespaceChanged"),this.input.bind().onSync("focused",f,this).onSync("blurred",g,this).onSync("enterKeyed",h,this).onSync("tabKeyed",i,this).onSync("escKeyed",j,this).onSync("upKeyed",k,this).onSync("downKeyed",l,this).onSync("leftKeyed",m,this).onSync("rightKeyed",n,this).onSync("queryChanged",o,this).onSync("whitespaceChanged",p,this).onSync("langDirChanged",this._onLangDirChanged,this)}function d(a){var c=[].slice.call(arguments,1);return function(){var d=[].slice.call(arguments);b.each(c,function(b){return a[b].apply(a,d)})}}return b.mixin(c.prototype,{_hacks:function(){var c,d;c=this.input.$input||a("<div>"),d=this.menu.$node||a("<div>"),c.on("blur.tt",function(a){var e,f,g;
+e=document.activeElement,f=d.is(e),g=d.has(e).length>0,b.isMsie()&&(f||g)&&(a.preventDefault(),a.stopImmediatePropagation(),b.defer(function(){c.focus()}))}),d.on("mousedown.tt",function(a){a.preventDefault()})},_onSelectableClicked:function(a,b){this.select(b)},_onDatasetCleared:function(){this._updateHint()},_onDatasetRendered:function(a,b,c,d){this._updateHint(),this.eventBus.trigger("render",c,d,b)},_onAsyncRequested:function(a,b,c){this.eventBus.trigger("asyncrequest",c,b)},_onAsyncCanceled:function(a,b,c){this.eventBus.trigger("asynccancel",c,b)},_onAsyncReceived:function(a,b,c){this.eventBus.trigger("asyncreceive",c,b)},_onFocused:function(){this._minLengthMet()&&this.menu.update(this.input.getQuery())},_onBlurred:function(){this.input.hasQueryChangedSinceLastFocus()&&this.eventBus.trigger("change",this.input.getQuery())},_onEnterKeyed:function(a,b){var c;(c=this.menu.getActiveSelectable())&&this.select(c)&&b.preventDefault()},_onTabKeyed:function(a,b){var c;(c=this.menu.getActiveSelectable())?this.select(c)&&b.preventDefault():(c=this.menu.getTopSelectable())&&this.autocomplete(c)&&b.preventDefault()},_onEscKeyed:function(){this.close()},_onUpKeyed:function(){this.moveCursor(-1)},_onDownKeyed:function(){this.moveCursor(1)},_onLeftKeyed:function(){"rtl"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onRightKeyed:function(){"ltr"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onQueryChanged:function(a,b){this._minLengthMet(b)?this.menu.update(b):this.menu.empty()},_onWhitespaceChanged:function(){this._updateHint()},_onLangDirChanged:function(a,b){this.dir!==b&&(this.dir=b,this.menu.setLanguageDirection(b))},_openIfActive:function(){this.isActive()&&this.open()},_minLengthMet:function(a){return a=b.isString(a)?a:this.input.getQuery()||"",a.length>=this.minLength},_updateHint:function(){var a,c,d,e,f,h,i;a=this.menu.getTopSelectable(),c=this.menu.getSelectableData(a),d=this.input.getInputValue(),!c||b.isBlankString(d)||this.input.hasOverflow()?this.input.clearHint():(e=g.normalizeQuery(d),f=b.escapeRegExChars(e),h=new RegExp("^(?:"+f+")(.+$)","i"),i=h.exec(c.val),i&&this.input.setHint(d+i[1]))},isEnabled:function(){return this.enabled},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},isActive:function(){return this.active},activate:function(){return this.isActive()?!0:!this.isEnabled()||this.eventBus.before("active")?!1:(this.active=!0,this.eventBus.trigger("active"),!0)},deactivate:function(){return this.isActive()?this.eventBus.before("idle")?!1:(this.active=!1,this.close(),this.eventBus.trigger("idle"),!0):!0},isOpen:function(){return this.menu.isOpen()},open:function(){return this.isOpen()||this.eventBus.before("open")||(this.menu.open(),this._updateHint(),this.eventBus.trigger("open")),this.isOpen()},close:function(){return this.isOpen()&&!this.eventBus.before("close")&&(this.menu.close(),this.input.clearHint(),this.input.resetInputValue(),this.eventBus.trigger("close")),!this.isOpen()},setVal:function(a){this.input.setQuery(b.toStr(a))},getVal:function(){return this.input.getQuery()},select:function(a){var b=this.menu.getSelectableData(a);return b&&!this.eventBus.before("select",b.obj)?(this.input.setQuery(b.val,!0),this.eventBus.trigger("select",b.obj),this.close(),!0):!1},autocomplete:function(a){var b,c,d;return b=this.input.getQuery(),c=this.menu.getSelectableData(a),d=c&&b!==c.val,d&&!this.eventBus.before("autocomplete",c.obj)?(this.input.setQuery(c.val),this.eventBus.trigger("autocomplete",c.obj),!0):!1},moveCursor:function(a){var b,c,d,e,f;return b=this.input.getQuery(),c=this.menu.selectableRelativeToCursor(a),d=this.menu.getSelectableData(c),e=d?d.obj:null,f=this._minLengthMet()&&this.menu.update(b),f||this.eventBus.before("cursorchange",e)?!1:(this.menu.setCursor(c),d?this.input.setInputValue(d.val):(this.input.resetInputValue(),this._updateHint()),this.eventBus.trigger("cursorchange",e),!0)},destroy:function(){this.input.destroy(),this.menu.destroy()}}),c}();!function(){"use strict";function e(b,c){b.each(function(){var b,d=a(this);(b=d.data(p.typeahead))&&c(b,d)})}function f(a,b){return a.clone().addClass(b.classes.hint).removeData().css(b.css.hint).css(l(a)).prop("readonly",!0).removeAttr("id name placeholder required").attr({autocomplete:"off",spellcheck:"false",tabindex:-1})}function h(a,b){a.data(p.attrs,{dir:a.attr("dir"),autocomplete:a.attr("autocomplete"),spellcheck:a.attr("spellcheck"),style:a.attr("style")}),a.addClass(b.classes.input).attr({autocomplete:"off",spellcheck:!1});try{!a.attr("dir")&&a.attr("dir","auto")}catch(c){}return a}function l(a){return{backgroundAttachment:a.css("background-attachment"),backgroundClip:a.css("background-clip"),backgroundColor:a.css("background-color"),backgroundImage:a.css("background-image"),backgroundOrigin:a.css("background-origin"),backgroundPosition:a.css("background-position"),backgroundRepeat:a.css("background-repeat"),backgroundSize:a.css("background-size")}}function m(a){var c,d;c=a.data(p.www),d=a.parent().filter(c.selectors.wrapper),b.each(a.data(p.attrs),function(c,d){b.isUndefined(c)?a.removeAttr(d):a.attr(d,c)}),a.removeData(p.typeahead).removeData(p.www).removeData(p.attr).removeClass(c.classes.input),d.length&&(a.detach().insertAfter(d),d.remove())}function n(c){var d,e;return d=b.isJQuery(c)||b.isElement(c),e=d?a(c).first():[],e.length?e:null}var o,p,q;o=a.fn.typeahead,p={www:"tt-www",attrs:"tt-attrs",typeahead:"tt-typeahead"},q={initialize:function(e,l){function m(){var c,m,q,r,s,t,u,v,w,x,y;b.each(l,function(a){a.highlight=!!e.highlight}),c=a(this),m=a(o.html.wrapper),q=n(e.hint),r=n(e.menu),s=e.hint!==!1&&!q,t=e.menu!==!1&&!r,s&&(q=f(c,o)),t&&(r=a(o.html.menu).css(o.css.menu)),q&&q.val(""),c=h(c,o),(s||t)&&(m.css(o.css.wrapper),c.css(s?o.css.input:o.css.inputWithNoHint),c.wrap(m).parent().prepend(s?q:null).append(t?r:null)),y=t?j:i,u=new d({el:c}),v=new g({hint:q,input:c},o),w=new y({node:r,datasets:l},o),x=new k({input:v,menu:w,eventBus:u,minLength:e.minLength},o),c.data(p.www,o),c.data(p.typeahead,x)}var o;return l=b.isArray(l)?l:[].slice.call(arguments,1),e=e||{},o=c(e.classNames),this.each(m)},isEnabled:function(){var a;return e(this.first(),function(b){a=b.isEnabled()}),a},enable:function(){return e(this,function(a){a.enable()}),this},disable:function(){return e(this,function(a){a.disable()}),this},isActive:function(){var a;return e(this.first(),function(b){a=b.isActive()}),a},activate:function(){return e(this,function(a){a.activate()}),this},deactivate:function(){return e(this,function(a){a.deactivate()}),this},isOpen:function(){var a;return e(this.first(),function(b){a=b.isOpen()}),a},open:function(){return e(this,function(a){a.open()}),this},close:function(){return e(this,function(a){a.close()}),this},select:function(b){var c=!1,d=a(b);return e(this.first(),function(a){c=a.select(d)}),c},autocomplete:function(b){var c=!1,d=a(b);return e(this.first(),function(a){c=a.autocomplete(d)}),c},moveCursor:function(a){var b=!1;return e(this.first(),function(c){b=c.moveCursor(a)}),b},val:function(a){var b;return arguments.length?(e(this,function(b){b.setVal(a)}),this):(e(this.first(),function(a){b=a.getVal()}),b)},destroy:function(){return e(this,function(a,b){m(b),a.destroy()}),this}},a.fn.typeahead=function(a){return q[a]?q[a].apply(this,[].slice.call(arguments,1)):q.initialize.apply(this,arguments)},a.fn.typeahead.noConflict=function(){return a.fn.typeahead=o,this}}()});
\ No newline at end of file
diff --git a/src/main/jbake/assets/js/typed.js b/src/main/jbake/assets/js/typed.js
new file mode 100755
index 0000000..3a51c6e
--- /dev/null
+++ b/src/main/jbake/assets/js/typed.js
@@ -0,0 +1,421 @@
+// The MIT License (MIT)
+
+// Typed.js | Copyright (c) 2014 Matt Boldt | www.mattboldt.com
+
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+
+
+
+! function($) {
+
+    "use strict";
+
+    var Typed = function(el, options) {
+
+        // chosen element to manipulate text
+        this.el = $(el);
+
+        // options
+        this.options = $.extend({}, $.fn.typed.defaults, options);
+
+        // attribute to type into
+        this.isInput = this.el.is('input');
+        this.attr = this.options.attr;
+
+        // show cursor
+        this.showCursor = this.isInput ? false : this.options.showCursor;
+
+        // text content of element
+        this.elContent = this.attr ? this.el.attr(this.attr) : this.el.text()
+
+        // html or plain text
+        this.contentType = this.options.contentType;
+
+        // typing speed
+        this.typeSpeed = this.options.typeSpeed;
+
+        // add a delay before typing starts
+        this.startDelay = this.options.startDelay;
+
+        // backspacing speed
+        this.backSpeed = this.options.backSpeed;
+
+        // amount of time to wait before backspacing
+        this.backDelay = this.options.backDelay;
+
+        // input strings of text
+        this.strings = this.options.strings;
+
+        // character number position of current string
+        this.strPos = 0;
+
+        // current array position
+        this.arrayPos = 0;
+
+        // number to stop backspacing on.
+        // default 0, can change depending on how many chars
+        // you want to remove at the time
+        this.stopNum = 0;
+
+        // Looping logic
+        this.loop = this.options.loop;
+        this.loopCount = this.options.loopCount;
+        this.curLoop = 0;
+
+        // for stopping
+        this.stop = false;
+
+        // custom cursor
+        this.cursorChar = this.options.cursorChar;
+
+        // shuffle the strings
+        this.shuffle = this.options.shuffle;
+        // the order of strings
+        this.sequence = [];
+
+        // All systems go!
+        this.build();
+    };
+
+    Typed.prototype = {
+
+        constructor: Typed
+
+        ,
+        init: function() {
+            // begin the loop w/ first current string (global self.string)
+            // current string will be passed as an argument each time after this
+            var self = this;
+            self.timeout = setTimeout(function() {
+                for (var i=0;i<self.strings.length;++i) self.sequence[i]=i;
+
+                // shuffle the array if true
+                if(self.shuffle) self.sequence = self.shuffleArray(self.sequence);
+
+                // Start typing
+                self.typewrite(self.strings[self.sequence[self.arrayPos]], self.strPos);
+            }, self.startDelay);
+        }
+
+        ,
+        build: function() {
+            // Insert cursor
+            if (this.showCursor === true) {
+                this.cursor = $("<span class=\"typed-cursor\">" + this.cursorChar + "</span>");
+                this.el.after(this.cursor);
+            }
+            this.init();
+        }
+
+        // pass current string state to each function, types 1 char per call
+        ,
+        typewrite: function(curString, curStrPos) {
+            // exit when stopped
+            if (this.stop === true) {
+                return;
+            }
+
+            // varying values for setTimeout during typing
+            // can't be global since number changes each time loop is executed
+            var humanize = Math.round(Math.random() * (100 - 30)) + this.typeSpeed;
+            var self = this;
+
+            // ------------- optional ------------- //
+            // backpaces a certain string faster
+            // ------------------------------------ //
+            // if (self.arrayPos == 1){
+            //  self.backDelay = 50;
+            // }
+            // else{ self.backDelay = 500; }
+
+            // contain typing function in a timeout humanize'd delay
+            self.timeout = setTimeout(function() {
+                // check for an escape character before a pause value
+                // format: \^\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^
+                // single ^ are removed from string
+                var charPause = 0;
+                var substr = curString.substr(curStrPos);
+                if (substr.charAt(0) === '^') {
+                    var skip = 1; // skip atleast 1
+                    if (/^\^\d+/.test(substr)) {
+                        substr = /\d+/.exec(substr)[0];
+                        skip += substr.length;
+                        charPause = parseInt(substr);
+                    }
+
+                    // strip out the escape character and pause value so they're not printed
+                    curString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip);
+                }
+
+                if (self.contentType === 'html') {
+                    // skip over html tags while typing
+                    var curChar = curString.substr(curStrPos).charAt(0)
+                    if (curChar === '<' || curChar === '&') {
+                        var tag = '';
+                        var endTag = '';
+                        if (curChar === '<') {
+                            endTag = '>'
+                        } else {
+                            endTag = ';'
+                        }
+                        while (curString.substr(curStrPos).charAt(0) !== endTag) {
+                            tag += curString.substr(curStrPos).charAt(0);
+                            curStrPos++;
+                        }
+                        curStrPos++;
+                        tag += endTag;
+                    }
+                }
+
+                // timeout for any pause after a character
+                self.timeout = setTimeout(function() {
+                    if (curStrPos === curString.length) {
+                        // fires callback function
+                        self.options.onStringTyped(self.arrayPos);
+
+                        // is this the final string
+                        if (self.arrayPos === self.strings.length - 1) {
+                            // animation that occurs on the last typed string
+                            self.options.callback();
+
+                            self.curLoop++;
+
+                            // quit if we wont loop back
+                            if (self.loop === false || self.curLoop === self.loopCount)
+                                return;
+                        }
+
+                        self.timeout = setTimeout(function() {
+                            self.backspace(curString, curStrPos);
+                        }, self.backDelay);
+                    } else {
+
+                        /* call before functions if applicable */
+                        if (curStrPos === 0)
+                            self.options.preStringTyped(self.arrayPos);
+
+                        // start typing each new char into existing string
+                        // curString: arg, self.el.html: original text inside element
+                        var nextString = curString.substr(0, curStrPos + 1);
+                        if (self.attr) {
+                            self.el.attr(self.attr, nextString);
+                        } else {
+                            if (self.isInput) {
+                                self.el.val(nextString);
+                            } else if (self.contentType === 'html') {
+                                self.el.html(nextString);
+                            } else {
+                                self.el.text(nextString);
+                            }
+                        }
+
+                        // add characters one by one
+                        curStrPos++;
+                        // loop the function
+                        self.typewrite(curString, curStrPos);
+                    }
+                    // end of character pause
+                }, charPause);
+
+                // humanized value for typing
+            }, humanize);
+
+        }
+
+        ,
+        backspace: function(curString, curStrPos) {
+            // exit when stopped
+            if (this.stop === true) {
+                return;
+            }
+
+            // varying values for setTimeout during typing
+            // can't be global since number changes each time loop is executed
+            var humanize = Math.round(Math.random() * (100 - 30)) + this.backSpeed;
+            var self = this;
+
+            self.timeout = setTimeout(function() {
+
+                // ----- this part is optional ----- //
+                // check string array position
+                // on the first string, only delete one word
+                // the stopNum actually represents the amount of chars to
+                // keep in the current string. In my case it's 14.
+                // if (self.arrayPos == 1){
+                //  self.stopNum = 14;
+                // }
+                //every other time, delete the whole typed string
+                // else{
+                //  self.stopNum = 0;
+                // }
+
+                if (self.contentType === 'html') {
+                    // skip over html tags while backspacing
+                    if (curString.substr(curStrPos).charAt(0) === '>') {
+                        var tag = '';
+                        while (curString.substr(curStrPos).charAt(0) !== '<') {
+                            tag -= curString.substr(curStrPos).charAt(0);
+                            curStrPos--;
+                        }
+                        curStrPos--;
+                        tag += '<';
+                    }
+                }
+
+                // ----- continue important stuff ----- //
+                // replace text with base text + typed characters
+                var nextString = curString.substr(0, curStrPos);
+                if (self.attr) {
+                    self.el.attr(self.attr, nextString);
+                } else {
+                    if (self.isInput) {
+                        self.el.val(nextString);
+                    } else if (self.contentType === 'html') {
+                        self.el.html(nextString);
+                    } else {
+                        self.el.text(nextString);
+                    }
+                }
+
+                // if the number (id of character in current string) is
+                // less than the stop number, keep going
+                if (curStrPos > self.stopNum) {
+                    // subtract characters one by one
+                    curStrPos--;
+                    // loop the function
+                    self.backspace(curString, curStrPos);
+                }
+                // if the stop number has been reached, increase
+                // array position to next string
+                else if (curStrPos <= self.stopNum) {
+                    self.arrayPos++;
+
+                    if (self.arrayPos === self.strings.length) {
+                        self.arrayPos = 0;
+
+                        // Shuffle sequence again
+                        if(self.shuffle) self.sequence = self.shuffleArray(self.sequence);
+
+                        self.init();
+                    } else
+                        self.typewrite(self.strings[self.sequence[self.arrayPos]], curStrPos);
+                }
+
+                // humanized value for typing
+            }, humanize);
+
+        }
+        /**
+         * Shuffles the numbers in the given array.
+         * @param {Array} array
+         * @returns {Array}
+         */
+        ,shuffleArray: function(array) {
+            var tmp, current, top = array.length;
+            if(top) while(--top) {
+                current = Math.floor(Math.random() * (top + 1));
+                tmp = array[current];
+                array[current] = array[top];
+                array[top] = tmp;
+            }
+            return array;
+        }
+
+        // Start & Stop currently not working
+
+        // , stop: function() {
+        //     var self = this;
+
+        //     self.stop = true;
+        //     clearInterval(self.timeout);
+        // }
+
+        // , start: function() {
+        //     var self = this;
+        //     if(self.stop === false)
+        //        return;
+
+        //     this.stop = false;
+        //     this.init();
+        // }
+
+        // Reset and rebuild the element
+        ,
+        reset: function() {
+            var self = this;
+            clearInterval(self.timeout);
+            var id = this.el.attr('id');
+            this.el.after('<span id="' + id + '"/>')
+            this.el.remove();
+            if (typeof this.cursor !== 'undefined') {
+                this.cursor.remove();
+            }
+            // Send the callback
+            self.options.resetCallback();
+        }
+
+    };
+
+    $.fn.typed = function(option) {
+        return this.each(function() {
+            var $this = $(this),
+                data = $this.data('typed'),
+                options = typeof option == 'object' && option;
+            if (!data) $this.data('typed', (data = new Typed(this, options)));
+            if (typeof option == 'string') data[option]();
+        });
+    };
+
+    $.fn.typed.defaults = {
+        strings: ["These are the default values...", "You know what you should do?", "Use your own!", "Have a great day!"],
+        // typing speed
+        typeSpeed: 0,
+        // time before typing starts
+        startDelay: 0,
+        // backspacing speed
+        backSpeed: 0,
+        // shuffle the strings
+        shuffle: false,
+        // time before backspacing
+        backDelay: 500,
+        // loop
+        loop: false,
+        // false = infinite
+        loopCount: false,
+        // show cursor
+        showCursor: true,
+        // character for cursor
+        cursorChar: "|",
+        // attribute to type (null == text)
+        attr: null,
+        // either html or text
+        contentType: 'html',
+        // call when done callback function
+        callback: function() {},
+        // starting callback function before each string
+        preStringTyped: function() {},
+        //callback for every typed string
+        onStringTyped: function() {},
+        // callback for reset
+        resetCallback: function() {}
+    };
+
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/src/main/jbake/assets/js/typewriter.js b/src/main/jbake/assets/js/typewriter.js
new file mode 100755
index 0000000..a28b187
--- /dev/null
+++ b/src/main/jbake/assets/js/typewriter.js
@@ -0,0 +1,54 @@
+// typewriter
+
+// 3215287
+// bertaec32@gmail.com
+(function($, w, d, undefined) {
+
+  function typewriter() {
+
+    // Globals 
+    var self = this, speed;
+
+    function init(element, options) {
+            // Set Globals
+      var str;
+      var indice = 0;
+
+      self.options = $.extend( {}, $.fn.typewriter.options, options );
+      $currentElement = $(element);
+      elementStr = $currentElement.text().replace(/\s+/g, ' ');
+      dataSpeed  = $currentElement.data("speed") || self.options.speed;
+      $currentElement.empty();
+      var showText = setInterval(
+				function(){
+					if (indice++ < elementStr.length) {
+			      $currentElement.append(elementStr[indice - 1]);
+			    }else{
+			    	clearInterval(showText);
+			    }
+				}, dataSpeed);
+      // self.animation = setInterval(function(){animate_calification()}, 20);
+    }
+
+    
+    
+    // Metodos publicos
+    return {
+      init: init
+    }
+  }
+
+  // Plugin jQuery
+  $.fn.typewriter = function(options) {
+    return this.each(function () {
+    	var writer =  new typewriter();
+      writer.init(this, options);
+      $.data( this, 'typewriter', writer);
+    });
+  };
+
+  $.fn.typewriter.options = {
+    'speed' : 300
+  };
+
+})(jQuery, window, document);
\ No newline at end of file
diff --git a/src/main/jbake/assets/js/wow.min.js b/src/main/jbake/assets/js/wow.min.js
new file mode 100755
index 0000000..a692251
--- /dev/null
+++ b/src/main/jbake/assets/js/wow.min.js
@@ -0,0 +1,2 @@
+/*! WOW - v1.1.2 - 2015-04-07
+* Copyright (c) 2015 Matthieu Aussaguel; Licensed MIT */(function(){var a,b,c,d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=function(){function a(){}return a.prototype.extend=function(a,b){var c,d;for(c in b)d=b[c],null==a[c]&&(a[c]=d);return a},a.prototype.isMobile=function(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)},a.prototype.createEvent=function(a,b,c,d){var e;return null==b&&(b=!1),null==c&&(c=!1),null==d&&(d=null),null!=document.createEvent?(e=document.createEvent("CustomEvent"),e.initCustomEvent(a,b,c,d)):null!=document.createEventObject?(e=document.createEventObject(),e.eventType=a):e.eventName=a,e},a.prototype.emitEvent=function(a,b){return null!=a.dispatchEvent?a.dispatchEvent(b):b in(null!=a)?a[b]():"on"+b in(null!=a)?a["on"+b]():void 0},a.prototype.addEvent=function(a,b,c){return null!=a.addEventListener?a.addEventListener(b,c,!1):null!=a.attachEvent?a.attachEvent("on"+b,c):a[b]=c},a.prototype.removeEvent=function(a,b,c){return null!=a.removeEventListener?a.removeEventListener(b,c,!1):null!=a.detachEvent?a.detachEvent("on"+b,c):delete a[b]},a.prototype.innerHeight=function(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight},a}(),c=this.WeakMap||this.MozWeakMap||(c=function(){function a(){this.keys=[],this.values=[]}return a.prototype.get=function(a){var b,c,d,e,f;for(f=this.keys,b=d=0,e=f.length;e>d;b=++d)if(c=f[b],c===a)return this.values[b]},a.prototype.set=function(a,b){var c,d,e,f,g;for(g=this.keys,c=e=0,f=g.length;f>e;c=++e)if(d=g[c],d===a)return void(this.values[c]=b);return this.keys.push(a),this.values.push(b)},a}()),a=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(a=function(){function a(){"undefined"!=typeof console&&null!==console&&console.warn("MutationObserver is not supported by your browser."),"undefined"!=typeof console&&null!==console&&console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.")}return a.notSupported=!0,a.prototype.observe=function(){},a}()),d=this.getComputedStyle||function(a){return this.getPropertyValue=function(b){var c;return"float"===b&&(b="styleFloat"),e.test(b)&&b.replace(e,function(a,b){return b.toUpperCase()}),(null!=(c=a.currentStyle)?c[b]:void 0)||null},this},e=/(\-([a-z]){1})/g,this.WOW=function(){function e(a){null==a&&(a={}),this.scrollCallback=f(this.scrollCallback,this),this.scrollHandler=f(this.scrollHandler,this),this.resetAnimation=f(this.resetAnimation,this),this.start=f(this.start,this),this.scrolled=!0,this.config=this.util().extend(a,this.defaults),this.animationNameCache=new c,this.wowEvent=this.util().createEvent(this.config.boxClass)}return e.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0,live:!0,callback:null},e.prototype.init=function(){var a;return this.element=window.document.documentElement,"interactive"===(a=document.readyState)||"complete"===a?this.start():this.util().addEvent(document,"DOMContentLoaded",this.start),this.finished=[]},e.prototype.start=function(){var b,c,d,e;if(this.stopped=!1,this.boxes=function(){var a,c,d,e;for(d=this.element.querySelectorAll("."+this.config.boxClass),e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(b);return e}.call(this),this.all=function(){var a,c,d,e;for(d=this.boxes,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(b);return e}.call(this),this.boxes.length)if(this.disabled())this.resetStyle();else for(e=this.boxes,c=0,d=e.length;d>c;c++)b=e[c],this.applyStyle(b,!0);return this.disabled()||(this.util().addEvent(window,"scroll",this.scrollHandler),this.util().addEvent(window,"resize",this.scrollHandler),this.interval=setInterval(this.scrollCallback,50)),this.config.live?new a(function(a){return function(b){var c,d,e,f,g;for(g=[],c=0,d=b.length;d>c;c++)f=b[c],g.push(function(){var a,b,c,d;for(c=f.addedNodes||[],d=[],a=0,b=c.length;b>a;a++)e=c[a],d.push(this.doSync(e));return d}.call(a));return g}}(this)).observe(document.body,{childList:!0,subtree:!0}):void 0},e.prototype.stop=function(){return this.stopped=!0,this.util().removeEvent(window,"scroll",this.scrollHandler),this.util().removeEvent(window,"resize",this.scrollHandler),null!=this.interval?clearInterval(this.interval):void 0},e.prototype.sync=function(){return a.notSupported?this.doSync(this.element):void 0},e.prototype.doSync=function(a){var b,c,d,e,f;if(null==a&&(a=this.element),1===a.nodeType){for(a=a.parentNode||a,e=a.querySelectorAll("."+this.config.boxClass),f=[],c=0,d=e.length;d>c;c++)b=e[c],g.call(this.all,b)<0?(this.boxes.push(b),this.all.push(b),this.stopped||this.disabled()?this.resetStyle():this.applyStyle(b,!0),f.push(this.scrolled=!0)):f.push(void 0);return f}},e.prototype.show=function(a){return this.applyStyle(a),a.className=a.className+" "+this.config.animateClass,null!=this.config.callback&&this.config.callback(a),this.util().emitEvent(a,this.wowEvent),this.util().addEvent(a,"animationend",this.resetAnimation),this.util().addEvent(a,"oanimationend",this.resetAnimation),this.util().addEvent(a,"webkitAnimationEnd",this.resetAnimation),this.util().addEvent(a,"MSAnimationEnd",this.resetAnimation),a},e.prototype.applyStyle=function(a,b){var c,d,e;return d=a.getAttribute("data-wow-duration"),c=a.getAttribute("data-wow-delay"),e=a.getAttribute("data-wow-iteration"),this.animate(function(f){return function(){return f.customStyle(a,b,d,c,e)}}(this))},e.prototype.animate=function(){return"requestAnimationFrame"in window?function(a){return window.requestAnimationFrame(a)}:function(a){return a()}}(),e.prototype.resetStyle=function(){var a,b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(a.style.visibility="visible");return e},e.prototype.resetAnimation=function(a){var b;return a.type.toLowerCase().indexOf("animationend")>=0?(b=a.target||a.srcElement,b.className=b.className.replace(this.config.animateClass,"").trim()):void 0},e.prototype.customStyle=function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a},e.prototype.vendors=["moz","webkit"],e.prototype.vendorSet=function(a,b){var c,d,e,f;d=[];for(c in b)e=b[c],a[""+c]=e,d.push(function(){var b,d,g,h;for(g=this.vendors,h=[],b=0,d=g.length;d>b;b++)f=g[b],h.push(a[""+f+c.charAt(0).toUpperCase()+c.substr(1)]=e);return h}.call(this));return d},e.prototype.vendorCSS=function(a,b){var c,e,f,g,h,i;for(h=d(a),g=h.getPropertyCSSValue(b),f=this.vendors,c=0,e=f.length;e>c;c++)i=f[c],g=g||h.getPropertyCSSValue("-"+i+"-"+b);return g},e.prototype.animationName=function(a){var b;try{b=this.vendorCSS(a,"animation-name").cssText}catch(c){b=d(a).getPropertyValue("animation-name")}return"none"===b?"":b},e.prototype.cacheAnimationName=function(a){return this.animationNameCache.set(a,this.animationName(a))},e.prototype.cachedAnimationName=function(a){return this.animationNameCache.get(a)},e.prototype.scrollHandler=function(){return this.scrolled=!0},e.prototype.scrollCallback=function(){var a;return!this.scrolled||(this.scrolled=!1,this.boxes=function(){var b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],a&&(this.isVisible(a)?this.show(a):e.push(a));return e}.call(this),this.boxes.length||this.config.live)?void 0:this.stop()},e.prototype.offsetTop=function(a){for(var b;void 0===a.offsetTop;)a=a.parentNode;for(b=a.offsetTop;a=a.offsetParent;)b+=a.offsetTop;return b},e.prototype.isVisible=function(a){var b,c,d,e,f;return c=a.getAttribute("data-wow-offset")||this.config.offset,f=window.pageYOffset,e=f+Math.min(this.element.clientHeight,this.util().innerHeight())-c,d=this.offsetTop(a),b=d+a.clientHeight,e>=d&&b>=f},e.prototype.util=function(){return null!=this._util?this._util:this._util=new b},e.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},e}()}).call(this);
\ No newline at end of file
diff --git a/src/main/jbake/content/admin/cluster/index.adoc b/src/main/jbake/content/admin/cluster/index.adoc
new file mode 100755
index 0000000..19ab053
--- /dev/null
+++ b/src/main/jbake/content/admin/cluster/index.adoc
@@ -0,0 +1,226 @@
+= Clustering
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+
+=== Session clustering
+
+TomEE fully relies on Tomcat clustering: https://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html[Tomcat Clustering].
+
+The configuration is mainly in `conf/server.xml` and since TomEE 7 CDI `@SessionScoped` is transparently clustered
+through the session.
+
+=== Hazelcast as session provider
+
+Hazelcast did a post on this topic on https://hazelcast.com/use-cases/web-session-clustering/session-clustering-tomee/[Session Clustering With TomEE].
+
+Tomitribe also demonstrated you can distributed `@Stateful` beans easily relying on hazelcast: https://github.com/tomitribe/hazelcast-tomee-poc[Hazelcast TomEE PoC].
+
+=== Load balancing
+
+TomEE being a HTTP server all HTTP load balancer such as HTTPd (a.k.a. Apache2), ngnix, F5 etc... will work.
+
+More documentation on HTTPd link can be found on https://tomcat.apache.org/connectors-doc/webserver_howto/apache.html[Tomcat] website.
+
+=== EJBd
+
+If you use the EJBd protocol (`@Remote` EJB proprietary protocol of TomEE) you can get cluster features on the client
+part.
+
+==== Multicast
+
+Multicast is the preferred way to broadcast the heartbeat on the network. The simple technique of broadcasting a non-changing service URI on the network has specific advantages to multicast. The URI itself is essentially stateless and there is no "i'm alive" URI or an "i'm dead" URI.
+
+In this way the issues with UDP being unordered and unreliable melt away as state is no longer a concern and packet sizes are always small. Complicated libraries that ride atop UDP and attempt to offer reliability (retransmission) and ordering on UDP can be avoided. As well the advantages UDP has over TCP are retained as there are no java layers attempting to force UDP communication to be more TCP-like. The simple design means UDP/Multicast is only used for discovery and from there on out critical information is transmitted over TCP/IP which is obviously going to do a better job at ensuring reliability and ordering.
+
+===== Server Configuration
+
+When you boot the server there should be a conf/multicast.properties file containing:
+
+[source,bash]
+----
+server      = org.apache.openejb.server.discovery.MulticastDiscoveryAgent
+bind        = 239.255.2.3
+port        = 6142
+disabled    = true
+group       = default
+----
+
+Just need to enable that by setting disabled=false. All of the above settings except server can be changed. The port and bind must be valid for general multicast/udp network communication.
+
+The group setting can be changed to further group servers that may use the same multicast channel. As shown below the client also has a group setting which can be used to select an appropriate server from the multicast channel.
+
+IMPORTANT: for multicast to work you need to have ejbd activated as a normal service. This can be done setting in `conf/system.properties` the entry: `openejb.service.manager.class = org.apache.openejb.server.SimpleServiceManager`.
+
+===== Multicast Client
+
+The multicast functionality is not just for servers to find each other in a cluster, it can also be used for EJB clients to discover a server. A special multicast:// URL can be used in the InitialContext properties to signify that multicast should be used to seed the connection process. Such as:
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY,
+"org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "multicast://239.255.2.3:6142?group=default");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+The URL has optional query parameters such as schemes and group and timeout which allow you to zero in on a particular type of service of a particular cluster group as well as set how long you are willing to wait in the discovery process till finally giving up. The first matching service that it sees "flowing" around on the UDP stream is the one it picks and sticks to for that and subsequent requests, ensuring UDP is only used when there are no other servers to talk to.
+
+Note that EJB clients do not need to use multicast to find a server. If the client knows the URL of a server in the cluster, it may use it and connect directly to that server, at which point that server will share the full list of its peers.
+
+===== Multicast Servers with TCP Clients
+
+Note that clients do not need to use multicast to communicate with servers. Servers can use multicast to discover each other, but clients are still free to connect to servers in the network using the server's TCP address.
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY,  "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "ejbd://192.168.1.30:4201");
+InitialContext remoteContext = new InitialContext(p);
+When the client connects, the server will send the URLs of all the servers in the group and failover will take place normally.
+----
+
+==== Multipulse
+
+MultiPulse is an alternative multicast lookup that does not use a regular heartbeat. Instead, servers listen for a multicast request packet (a pulse) to which a response is then sent. Multicast network traffic is effectively reduced to an absolute minimum.
+
+MultiPulse is only useful in network scenarios where both client and server can be configured to send multicast UDP packets.
+
+===== Server Configuration
+
+After you boot the server for the first time the default configuration will create the file conf/conf.d/multipulse.properties containing:
+
+[source,bash]
+----
+server      = org.apache.openejb.server.discovery.MulticastPulseAgent
+bind        = 239.255.2.3
+port        = 6142
+disabled    = true
+group       = default
+----
+
+You just need to enable the agent by setting disabled = false. It is advisable to disable multicast in the multicast.properties file, or at least to use a different bind address or port should you wish to use both.
+
+All of the above settings except server can be modified as required. The port and bind must be valid for general multicast/udp network communication.
+
+The group setting can be changed to further group/cluster servers that may use the same multicast channel. As shown below the client also has an optional group setting which can be used to select an appropriate server cluster from the multicast channel (See MultiPulse Client).
+
+The next step is to ensure that the advertised services are configured for discovery. Edit the ejbd.properties file (and any other enabled services such as http, etc.) and ensure that the discovery option is set to a value that remote clients will be able to resolve.
+
+[source,bash]
+----
+server      = org.apache.openejb.server.ejbd.EjbServer
+bind        = 0.0.0.0
+port        = 4201
+disabled    = false
+threads     = 20
+discovery   = ejb:ejbd://{bind}:{port}
+----
+
+NOTE: If either 0.0.0.0 (IPv4) or [::] (IPv6) wildcard bind addresses are used then the server will actually broadcast all of it's known public hosts to clients. Clients will then cycle though and attempt to connect to the provided hosts until successful.
+
+If localhost is used then only clients on the same physical machine will actually 'see' the server response.
+
+===== MultiPulse Client
+
+The multipulse functionality is not just for servers to find each other in a cluster, it can also be used for EJB clients to discover a server. A special multipulse:// URL can be used in the InitialContext properties to signify that multipulse should be used to seed the connection process. Such as:
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "multipulse://239.255.2.3:6142?group=default&timeout=250");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+The URL has optional query parameters such as schemes and group and timeout which allow you to zero in on a particular type of service of a particular cluster group as well as set how long you are willing to wait in the discovery process till finally giving up. The first matching service that it sees "flowing" around on the UDP stream is the one it picks and sticks to for that and subsequent requests, ensuring UDP is only used when there are no other servers to talk to.
+
+Note that EJB clients do not need to use multipulse to find a server. If the client knows the URL of a server in the cluster, it may use it and connect directly to that server, at which point that server will share the full list of its peers.
+
+Multicast Servers with TCP Clients
+
+Note that clients do not need to use multipulse to communicate with servers. Servers can use multicast to discover each other, but clients are still free to connect to servers in the network using the server's TCP address.
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY,  "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "ejbd://192.168.1.30:4201");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+When the client connects, the server will send the URLs of all the servers in the group and failover will take place normally.
+
+==== Multipoint
+
+As TCP has no real broadcast functionality to speak of, communication of who is in the network is achieved by each server having a physical connection to each other server in the network.
+
+To join the network, the server must be configured to know the address of at least one server in the network and connect to it. When it does both servers will exchange the full list of all the other servers each knows about. Each server will then connect to any new servers they've just learned about and repeat the processes with those new servers. The end result is that everyone has a direct connection to everyone 100% of the time, hence the made-up term "multipoint" to describe this situation of each server having multiple point-to-point connections which create a fully connected graph.
+
+On the client side things are similar. It needs to know the address of at least one server in the network and be able to connect to it. When it does it will get the full (and dynamically maintained) list of every server in the network. The client doesn't connect to each of those servers immediately, but rather consults the list in the event of a failover, using it to decide who to connect to next.
+
+The entire process is essentially the art of using a statically maintained list to bootstrap getting the more valuable dynamically maintained list.
+
+===== Server Configuration
+
+In the server this list can be specified via the conf/multipoint.properties file like so:
+
+[source,bash]
+----
+server      = org.apache.openejb.server.discovery.MultipointDiscoveryAgent
+bind        = 127.0.0.1
+port        = 4212
+disabled    = false
+initialServers = 192.168.1.20:4212, 192.168.1.30:4212, 192.168.1.40:4212
+----
+
+The above configuration shows the server has an port 4212 open for connections by other servers for multipoint communication. The initialServers list should be a comma separated list of other similar servers on the network. Only one of the servers listed is required to be running when this server starts up -- it is not required to list all servers in the network.
+
+===== Client Configuration
+
+Configuration in the client is similar, but note that EJB clients do not participate directly in multipoint communication and do not connect to the multipoint port. The server list is simply a list of the regular ejbd:// urls that a client normally uses to connect to a server.
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "failover:ejbd://192.168.1.20:4201,ejbd://192.168.1.30:4201");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+Failover can work entirely driven by the server, the client does not need to be configured to participate. A client can connect as usual to the server.
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "ejbd://192.168.1.20:4201");
+InitialContext remoteContext = new InitialContext(p);
+----
+
+If the server at 192.168.1.20:4201 supports failover, so will the client.
+
+In this scenario the list of servers used for failover is supplied entirely by the server at 192.168.1.20:4201. The server could have aquired the list via multicast or multipoint (or both), but this detail is not visible to the client.
+
+===== Considerations
+
+====== Network size
+
+The general disadvantage of this topology is the number of connections required. The number of connections for the network of servers is equal to (n * n - n) / 2, where n is the number of servers. For example, with 5 servers you need 10 connections, with 10 servers you need 45 connections, and with 50 servers you need 1225 connections. This is of course the number of connections across the entire network, each individual server only needs n - 1 connections.
+
+The handling of these sockets is all asynchronous Java NIO code which allows the server to handle many connections (all of them) with one thread. From a pure threading perspective, the option is extremely efficient with just one thread to listen and broadcast to many peers.
+
+====== Double connect
+
+It is possible in this process that two servers learn of each other at the same time and each attempts to connect to the other simultaneously, resulting in two connections between the same two servers. When this happens both servers will detect the extra connection and one of the connections will be dropped and one will be kept. In practice this race condition rarely happens and can be avoided almost entirely by fanning out server startup by as little as 100 milliseconds.
+
+===== Recommandation
+
+As mentioned the initialServers is only used for bootstrapping the multipoint network. Once running, all servers will dynamically establish direct connections with each other and there is no single point of failure.
+
+However to ensure that the bootstrapping process can occur successfully, the initialServers property of the conf/multipoint.properties file must be set carefully and with a specific server start order in mind. Each server consults its initialServers list exactly once in the bootstrapping phase at startup, after that time connections are made dynamically.
+
+This means that at least one of the servers listed in initialServers must already be running when the server starts or the server might never become introduced and connected to all the other servers in the network.
diff --git a/src/main/jbake/content/admin/configuration/application.adoc b/src/main/jbake/content/admin/configuration/application.adoc
new file mode 100755
index 0000000..be43cd2
--- /dev/null
+++ b/src/main/jbake/content/admin/configuration/application.adoc
@@ -0,0 +1,100 @@
+= Application Configuration
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== `application.properties`
+
+This file is located in `WEB-INF` for a war and `META-INF` for an ear.
+
+==== `@Asynchronous` configuration
+
+Default pool size for `@Asynchronous` is 5. It can be very small for some applications highly relying on
+asynchronism or reactive patterns. Therefore it is possible to customize it adding these entries in `application.properties`:
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default| Description
+| AsynchronousPool.Size | 5 | Core size of the pool
+| AsynchronousPool.CorePoolSize | 5 | Core size of the pool (inherit its default from .Size alias)
+| AsynchronousPool.MaximumPoolSize | 5 | Maximum size of the pool
+| AsynchronousPool.QueueSize | 5 | Maximum size of the pool
+| AsynchronousPool.KeepAliveTime | 1 minute | Thread keep alive duration
+| AsynchronousPool.AllowCoreThreadTimeOut | true | Should thread timeout
+| AsynchronousPool.QueueType | LINKED (or SYNCHRONOUS if size == 0) | The type of queue of the pool in ARRAY, LINKED, PRIORITY or SYNCHRONOUS (same behavior as java implementations of the same name)
+| AsynchronousPool.ShutdownWaitDuration | 1 minute | How many time to wait for the pool to shutdown when undeploying the application
+| AsynchronousPool.RejectedExecutionHandlerClass | - | A fully qualified name of a `java.util.concurrent.RejectedExecutionHandler`
+|===
+
+==== TimerService and `@Scheduled`
+
+`timerStore.class` allows to switch from the in memory (`org.apache.openejb.core.timer.MemoryTimerStore`) timer storage
+for quartz tasks to a custom implementation (using a database or anything for instance). Constructor can take a `TransactionManager`
+or nothing.
+
+All quartz properties prefixed with `org.apache.openejb.quartz.` (instead of `org.quartz.`) are passthrough to quartz.
+
+==== CDI
+
+The boolean `openejb.cdi.skip-resource-validation` allows to not validate resources ie `@EJB` and `@Resource` usages in CDI beans.
+
+All properties understood by OpenWebBeans will also be passthrough to OpenWebBeans from this location, see http://openwebbeans.apache.org/owbconfig.html[OWB config] for more details.
+
+==== `@WebServiceRef`
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Description
+| cxf.jaxws.client.wsFeatures | Allows to set WSFeature on the client injection. Values is a list (comma separated) of resource id in resources.xml or fully qualified names.
+|===
+
+==== `@Stateless`
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Description
+| AccessTimeout or Timeout | container timeout
+| CloseTimeout | container timeout
+| BackgroundStartup | Don't create instances in parallel if minimum count is > 0, default to false
+|===
+
+=== `resources.xml`
+
+`resources.xml` is a tomee.xml using application classloader.
+
+As `tomee.xml` it supports filtering so you can use environment variables and system properties, for instance
+to use a MySQL database on OpenShift you can do:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<resources>
+  <Resource id="MySQL" aliases="myAppDataSourceName" type="DataSource">
+    JdbcDriver = com.mysql.jdbc.Driver
+    JdbcUrl = jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/rmannibucau?tcpKeepAlive=true
+    UserName = ${OPENSHIFT_MYSQL_DB_USERNAME}
+    Password = ${OPENSHIFT_MYSQL_DB_PASSWORD}
+    ValidationQuery = SELECT 1
+    ValidationInterval = 30000
+    NumTestsPerEvictionRun = 5
+    TimeBetweenEvictionRuns = 30 seconds
+    TestWhileIdle = true
+    MaxActive = 200
+  </Resource>
+</resources>
+----
+
+`resources.xml` supports `Resource`, `Service` and `Container`.
+
+==== `resources.xml` mecanism
+
+`resources.xml` resources are still available globally like any `tomee.xml` resource.
+
+The actual resource is bound in an application subtree called with the application name and a resource facade is bound
+in the global naming tree to be able to route the requests depending the application.
+
+Typically if your application is named `myapp` and your resource id is `myresource` then instead of being registered
+as `myresource`, it will get registered as `myapp/myresource`.
+
+If you get any ambiguity in resource name matching try to fully qualified your resource prefixing it with the application name.
diff --git a/src/main/jbake/content/admin/configuration/containers.adoc b/src/main/jbake/content/admin/configuration/containers.adoc
new file mode 100755
index 0000000..3d86272
--- /dev/null
+++ b/src/main/jbake/content/admin/configuration/containers.adoc
@@ -0,0 +1,585 @@
+= Resources
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+All containers will be created automatically - which means you don't need to define them
+if you don't need to tune their configuration - when a bean of their type if found.
+
+To avoid that use `openejb.offline` property and set it to `true`. See link:server.html[Server Configuration] for more detail.
+
+=== @Stateless
+
+A `@Stateless` container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="STATELESS">
+    AccessTimeout = 30 seconds
+    MaxSize = 10
+    MinSize = 0
+    StrictPooling = true
+    MaxAge = 0 hours
+    ReplaceAged = true
+    ReplaceFlushed = false
+    MaxAgeOffset = -1
+    IdleTimeout = 0 minutes
+    GarbageCollection = false
+    SweepInterval = 5 minutes
+    CallbackThreads = 5
+    CloseTimeout = 5 minutes
+    UseOneSchedulerThreadByBean = false
+    EvictionThreads = 1
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=STATELESS
+Foo.AccessTimeout = 30 seconds
+Foo.MaxSize = 10
+Foo.MinSize = 0
+Foo.StrictPooling = true
+Foo.MaxAge = 0 hours
+Foo.ReplaceAged = true
+Foo.ReplaceFlushed = false
+Foo.MaxAgeOffset = -1
+Foo.IdleTimeout = 0 minutes
+Foo.GarbageCollection = false
+Foo.SweepInterval = 5 minutes
+Foo.CallbackThreads = 5
+Foo.CloseTimeout = 5 minutes
+Foo.UseOneSchedulerThreadByBean = false
+Foo.EvictionThreads = 1
+----
+
+==== Configuration
+
+===== AccessTimeout
+
+Specifies the time an invokation should wait for an instance
+of the pool to become available.
+
+After the timeout is reached, if an instance in the pool cannot
+be obtained, the method invocation will fail.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+
+===== MaxSize
+
+Specifies the size of the bean pools for this stateless
+SessionBean container.  If StrictPooling is not used, instances
+will still be created beyond this number if there is demand, but
+they will not be returned to the pool and instead will be
+immediately destroyed.
+
+===== MinSize
+
+Specifies the minimum number of bean instances that should be in
+the pool for each bean.  Pools are prefilled to the minimum on
+startup.  Note this will create start order dependencies between
+other beans that also eagerly start, such as other `@Stateless`
+beans with a minimum or `@Singleton` beans using `@Startup`.  The
+start order.
+
+The minimum pool size is rigidly maintained.  Instances in the
+minimum side of the pool are not eligible for `IdleTimeout` or
+`GarbageCollection`, but are subject to `MaxAge` and flushing.
+
+If the pool is flushed it is immediately refilled to the minimum
+size with `MaxAgeOffset` applied.  If an instance from the minimum
+side of the pool reaches its `MaxAge`, it is also immediately
+replaced.  Replacement is done in a background queue using the
+number of threads specified by `CallbackThreads`.
+
+===== StrictPooling
+
+StrictPooling tells the container what to do when the pool
+reaches it's maximum size and there are incoming requests that
+need instances.
+
+With strict pooling, requests will have to wait for instances to
+become available. The pool size will never grow beyond the the
+set `MaxSize` value.  The maximum amount of time a request should
+wait is specified via the `AccessTimeout` setting.
+
+Without strict pooling, the container will create temporary
+instances to meet demand. The instances will last for just one
+method invocation and then are removed.
+
+Setting `StrictPooling` to `false` and `MaxSize` to `0` will result in
+no pooling. Instead instances will be created on demand and live
+for exactly one method call before being removed.
+
+===== MaxAge
+
+Specifies the maximum time that an instance should live before
+it should be retired and removed from use.  This will happen
+gracefully.  Useful for situations where bean instances are
+designed to hold potentially expensive resources such as memory
+or file handles and need to be periodically cleared out.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+===== ReplaceAged
+
+When `ReplaceAged` is enabled, any instances in the pool that
+expire due to reaching their `MaxAge` will be replaced immediately
+so that the pool will remain at its current size.  Replacement
+is done in a background queue so that incoming threads will not
+have to wait for instance creation.
+
+The aim of his option is to prevent user requests from paying
+the instance creation cost as `MaxAge` is enforced, potentially
+while under heavy load at peak hours.
+
+Instances from the minimum side of the pool are always replaced
+when they reach their `MaxAge`, this setting dictates the
+treatment of non-minimum instances.
+
+===== ReplaceFlushed
+
+When `ReplaceFlushed` is enabled, any instances in the pool that
+are flushed will be replaced immediately so that the pool will
+remain at its current size.  Replacement is done in a background
+queue so that incoming threads will not have to wait for
+instance creation.
+
+The aim of his option is to prevent user requests from paying
+the instance creation cost if a flush performed while under
+heavy load at peak hours.
+
+Instances from the minimum side of the pool are always replaced
+when they are flushed, this setting dictates the treatment of
+non-minimum instances.
+
+A bean may flush its pool by casting the `SessionContext` to
+`Flushable` and calling `flush()`.  See `SweepInterval` for details on
+how flush is performed.
+
+[source,java]
+----
+import javax.annotation.Resource;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateless;
+import java.io.Flushable;
+import java.io.IOException;
+
+public class MyBean {
+
+    private SessionContext sessionContext;
+
+    public void flush() throws IOException {
+
+        ((Flushable) sessionContext).flush();
+    }
+}
+----
+
+===== MaxAgeOffset
+
+Applies to MaxAge usage and would rarely be changed, but is a
+nice feature to understand.
+
+When the container first starts and the pool is filled to the
+minimum size, all those "minimum" instances will have the same
+creation time and therefore all expire at the same time dictated
+by the `MaxAge` setting.  To protect against this sudden drop
+scenario and provide a more gradual expiration from the start
+the container will spread out the age of the instances that fill
+the pool to the minimum using an offset.
+
+The `MaxAgeOffset` is not the final value of the offset, but
+rather it is used in creating the offset and allows the
+spreading to push the initial ages into the future or into the
+past.  The pool is filled at startup as follows:
+
+[source,java]
+----
+for (int i = 0; i < poolMin; i++) {
+    long ageOffset = (maxAge / poolMin * i * maxAgeOffset) % maxAge;
+    pool.add(new Bean(), ageOffset));
+}
+----
+
+The default `MaxAgeOffset` is -1 which causes the initial
+instances in the pool to live a bit longer before expiring.  As
+a concrete example, let's say the MinSize is 4 and the MaxAge is
+100 years.  The generated offsets for the four instances created
+at startup would be 0, -25, -50, -75.  So the first instance
+would be "born" at age 0, die at 100, living 100 years.  The
+second instance would be born at -25, die at 100, living a total
+of 125 years.  The third would live 150 years.  The fourth 175
+years.
+
+A `MaxAgeOffset` of 1 would cause instances to be "born" older
+and therefore die sooner.  Using the same example `MinSize` of 4
+and `MaxAge` of `100 years`, the life spans of these initial four
+instances would be 100, 75, 50, and 25 years respectively.
+
+A `MaxAgeOffset` of 0 will cause no "spreading" of the age of the
+first instances used to fill the pool to the minimum and these
+instances will of course reach their MaxAge at the same time.
+It is possible to set to decimal values such as -0.5, 0.5, -1.2,
+or 1.2.
+
+===== IdleTimeout
+
+Specifies the maximum time that an instance should be allowed to
+sit idly in the pool without use before it should be retired and
+removed.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+===== GarbageCollection
+
+Allows Garbage Collection to be used as a mechanism for shrinking
+the pool.  When set to true all instances in the pool, excluding
+the minimum, are eligible for garbage collection by the virtual
+machine as per the rules of `java.lang.ref.SoftReference` and can be
+claimed by the JVM to free memory.  Instances garbage collected
+will have their `@PreDestroy` methods called during finalization.
+
+In the OpenJDK VM the `-XX:SoftRefLRUPolicyMSPerMB` flag can adjust
+how aggressively SoftReferences are collected.  The default
+OpenJDK setting is 1000, resulting in inactive pooled instances
+living one second of lifetime per free megabyte in the heap, which
+is very aggressive.  The setting should be increased to get the
+most out of the `GarbageCollection` feature of the pool.  Much
+higher settings are safe.  Even a setting as high as 3600000 (1
+hour per free MB in the heap) does not affect the ability for the
+VM to garbage collect SoftReferences in the event that memory is
+needed to avoid an `OutOfMemoryException`.
+
+===== SweepInterval
+
+The frequency in which the container will sweep the pool and
+evict expired instances.  Eviction is how the `IdleTimeout`,
+`MaxAge`, and pool "flush" functionality is enforced.  Higher
+intervals are better.
+
+Instances in use are excluded from sweeping.  Should an instance
+expire while in use it will be evicted immediately upon return
+to the pool.  Effectively `MaxAge` and flushes will be enforced as
+a part of normal activity or sweeping, while IdleTimeout is only
+enforcable via sweeping.  This makes aggressive sweeping less
+important for a pool under moderate load.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+===== CallbackThreads
+
+When sweeping the pool for expired instances a thread pool is
+used to process calling `@PreDestroy` on expired instances as well
+as creating new instances as might be required to fill the pool
+to the minimum after a Flush or `MaxAge` expiration.  The
+`CallbackThreads` setting dictates the size of the thread pool and
+is shared by all beans deployed in the container.
+
+===== CloseTimeout
+
+PostConstruct methods are invoked on all instances in the pool
+when the bean is undeployed and its pool is closed.  The
+`CloseTimeout` specifies the maximum time to wait for the pool to
+close and `PostConstruct` methods to be invoked.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+===== UseOneSchedulerThreadByBean
+
+back to previous behavior (TomEE 1.x) where 1 scheduler thread was used for stateless eviction
+by bean (ie for 500 stateless beans you get 500 eviction threads)
+
+===== EvictionThreads
+
+number of threads to associate to eviction threads (1 is not bad for most applications)
+
+
+=== @Stateful
+
+A `@Stateful` container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="STATEFUL">
+    AccessTimeout = 30 seconds
+    Cache = org.apache.openejb.core.stateful.SimpleCache
+    Passivator = org.apache.openejb.core.stateful.SimplePassivater
+    TimeOut = 20
+    Frequency = 60
+    Capacity = 1000
+    BulkPassivate = 100
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=STATEFUL
+Foo.AccessTimeout = 30 seconds
+Foo.Cache = org.apache.openejb.core.stateful.SimpleCache
+Foo.Passivator = org.apache.openejb.core.stateful.SimplePassivater
+Foo.TimeOut = 20
+Foo.Frequency = 60
+Foo.Capacity = 1000
+Foo.BulkPassivate = 100
+----
+
+==== Configuration
+
+===== AccessTimeout
+
+Specifies the maximum time an invocation could wait for the
+`@Stateful` bean instance to become available before giving up.
+
+After the timeout is reached a `javax.ejb.ConcurrentAccessTimeoutException`
+will be thrown.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+"1 hour and 27 minutes and 10 seconds"
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+
+===== Cache
+
+The cache is responsible for managing stateful bean
+instances.  The cache can page instances to disk as memory
+is filled and can destroy abandoned instances.  A different
+cache implementation can be used by setting this property
+to the fully qualified class name of the Cache implementation.
+
+===== Passivator
+
+The passivator is responsible for writing beans to disk
+at passivation time. Different passivators can be used
+by setting this property to the fully qualified class name
+of the `PassivationStrategy` implementation. The passivator
+is not responsible for invoking any callbacks or other
+processing, its only responsibly is to write the bean state
+to disk.
+
+Known implementations:
+
+- org.apache.openejb.core.stateful.RAFPassivater
+- org.apache.openejb.core.stateful.SimplePassivater
+
+===== TimeOut
+
+Specifies the time a bean can be idle before it is removed by the container.
+
+This value is measured in minutes. A value of 5 would
+result in a time-out of 5 minutes between invocations.
+A value of -1 would mean no timeout.
+A value of 0 would mean a bean can be immediately removed by the container.
+
+Any usage of the `javax.ejb.StatefulTimeout` annotation will
+override this setting for the bean where the annotation is used.
+
+===== Frequency
+
+Specifies the frequency (in seconds) at which the bean cache is checked for
+idle beans.
+
+===== Capacity
+
+Specifies the size of the bean pools for this
+stateful SessionBean container.
+
+===== BulkPassivate
+
+Property name that specifies the number of instances
+to passivate at one time when doing bulk passivation.
+
+
+=== @Singleton
+
+A `@Singleton` container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="SINGLETON">
+    AccessTimeout = 30 seconds
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=SINGLETON
+Foo.AccessTimeout = 30 seconds
+----
+
+==== Configuration
+
+===== AccessTimeout
+
+Specifies the maximum time an invocation could wait for the
+`@Singleton` bean instance to become available before giving up.
+
+After the timeout is reached a `javax.ejb.ConcurrentAccessTimeoutException`
+will be thrown.
+
+Usable time units: nanoseconds, microsecons, milliseconds,
+seconds, minutes, hours, days.  Or any combination such as
+`1 hour and 27 minutes and 10 seconds`
+
+Any usage of the `javax.ejb.AccessTimeout` annotation will
+override this setting for the bean or method where the
+annotation is used.
+
+
+=== @MessageDriven
+
+A MDB container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="MESSAGE">
+    ResourceAdapter = Default JMS Resource Adapter
+    MessageListenerInterface = javax.jms.MessageListener
+    ActivationSpecClass = org.apache.activemq.ra.ActiveMQActivationSpec
+    InstanceLimit = 10
+    FailOnUnknowActivationSpec = true
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=MESSAGE
+Foo.ResourceAdapter = Default JMS Resource Adapter
+Foo.MessageListenerInterface = javax.jms.MessageListener
+Foo.ActivationSpecClass = org.apache.activemq.ra.ActiveMQActivationSpec
+Foo.InstanceLimit = 10
+Foo.FailOnUnknowActivationSpec = true
+----
+
+==== Configuration
+
+===== ResourceAdapter
+
+The resource adapter delivers messages to the container
+
+===== MessageListenerInterface
+
+Specifies the message listener interface handled by this container
+
+===== ActivationSpecClass
+
+Specifies the activation spec class
+
+===== InstanceLimit
+
+Specifies the maximum number of bean instances that are
+allowed to exist for each MDB deployment.
+
+===== FailOnUnknowActivationSpec
+
+Log a warning if true or throw an exception if false is an activation spec can't be respected
+
+
+=== @Managed
+
+A managed bean container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="MANAGED" />
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=MANAGED
+----
+
+
+=== CMP entity
+
+A CMP bean container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="CMP_ENTITY">
+    CmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=CMP_ENTITY
+Foo.CmpEngineFactory = org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
+----
+
+==== Configuration
+
+===== CmpEngineFactory
+
+The engine to use for this container. By default TomEE only provides the JPA implementation.
+
+
+=== BMP entity
+
+A BMP entity container.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Container id="Foo" type="BMP_ENTITY">
+    PoolSize = 10
+</Container>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Container?type=BMP_ENTITY
+Foo.PoolSize = 10
+----
+
+==== Configuration
+
+===== PoolSize
+
+Specifies the size of the bean pools for this
+bmp entity container.
diff --git a/src/main/jbake/content/admin/configuration/index.adoc b/src/main/jbake/content/admin/configuration/index.adoc
new file mode 100755
index 0000000..223d780
--- /dev/null
+++ b/src/main/jbake/content/admin/configuration/index.adoc
@@ -0,0 +1,24 @@
+= Configuration
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== Container
+
+TomEE specific configuration (ie not inherited one from Tomcat) is based on properties. Therefore
+you can fully configure TomEE using properties in `conf/system.properties`.
+However for convenience it also provides a hybrid XML alternative a.k.a. `conf/tomee.xml`.
+
+- link:server.html[Server Configuration: Properties].
+- link:resources.html[Resources]
+- link:containers.html[Containers]
+
+=== Application
+
+Some settings can be specific to applications, these ones are also properties based and
+are read in `WEB-INF/application.properties`. When you can't use `tomee.xml` to configure
+resources you can use `WEB-INF/resources.xml` which inherit from `tomee.xml` its syntax
+but binds the resources to the application and reuses the application classloader.
+
+More about link:application.html[Container Configuration].
diff --git a/src/main/jbake/content/admin/configuration/resources.adoc b/src/main/jbake/content/admin/configuration/resources.adoc
new file mode 100755
index 0000000..dc8d84a
--- /dev/null
+++ b/src/main/jbake/content/admin/configuration/resources.adoc
@@ -0,0 +1,572 @@
+= Resources
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+In TomEE resources are mainly "singleton" (understood as defined once per server or application). Technically
+it can be anything but you will probably meet more Datasources than other type of resources.
+
+
+Most resources will be created automatically if there is no matching resources - by name and type -
+when an injection will be found. To avoid that use `openejb.offline` property and set it to `true`.
+See link:server.html[Server Configuration] for more detail.
+
+=== Definition a resource: how does it work?
+
+Before all let see how properties syntax is equivalent to XML one (system.properties and tomee.xml typically).
+
+Properties syntax uses dot notation to represent setters/properties which are plain properties in XML syntax
+and a URL syntax with query parameters to define the resource where it is directly the resource and tag attributes in XML.
+Finally the id is an attribute in XML and the key of the resource definition in properties.
+
+Let see it with a sample, both delcarations are the same:
+
+[source,bash]
+----
+myDataSource = new://Resource?type=DataSource
+myDataSource.JdbcUrl = jdbc:hsqldb:mem:site
+myDataSource.UserName = sa
+----
+
+[source,xml]
+----
+<Resource id="myDataSource" type="DataSource">
+  JdbcUrl = jdbc:hsqldb:mem:site
+  UserName = sa
+</Resource>
+----
+
+One started you can get injected any resource using `@Resource`:
+
+[source,java]
+----
+@Resource(name = "myDataSource")
+private DataSource dataSource;
+----
+
+=== Factory syntax
+
+Here are the attributes of a resource:
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Optional |Description
+| id | false | name of the resource, will match `openejb:Resource/id` in JNDI tree.
+| provider | true | define a default resource definition using service-jar.xml
+| class-name | true |specify which class to instantiate
+| factory-name | true |specify which method to invoke on the class-name when specified to create the resource
+| properties-provider | true |a class responsible to provide to tomee the properties to use, it can have a property `serviceId` to know which resource it is.
+| classpath | true | a classpath to use to create the resource. Note: if not implementing an interface the resource will be isolated from the applications.
+| aliases | true | other names for the resource, allows for instance to share the same pool for a datasource used with multiple names in applications.
+| post-construct/pre-destroy | true | methods called when creating/destroying the resources.
+| Lazy | true | for resources set them to be created when first accessed and not when deployed
+|===
+
+TomEE supports some implicit properties for resources but sometimes you just want to fully control the
+resource and not use implicit properties which can be affected to a property which doesn't expect such a value (typically the case
+if you create a custom Oracle datasource). For such case you can set `SkipImplicitAttributes` property to `true` and your resource
+will ignore implicit properties.
+
+Implicit properties are:
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Description
+| transactionManager | The JTA transaction manager
+| ServiceId | the "id" of the resource (its name)
+|===
+
+In the same spirit you can skip properties fallback using `SkipPropertiesFallback` and setting it to `true`. It typically avoids to
+fallback all unset properties (no matching property found) to a `Properties` instance and set it if one matching property is found.
+In Oracle case for instance it matches the connection properties which can have side effects.
+
+===== Value ciphering
+
+The propertie values support ciphering using the syntax `cipher:{algorithm}:{cipheredValue}`, for instance `cipher:Static3DES:xMH5uM1V9vQzVUv5LG7YLA==` will
+be read as `Passw0rd`. Ciphers can be computed using `tomee.sh` script: `${tomee.home}/bin/tomee.sh cipher Passw0rd`.
+
+=== Common Resources
+
+==== DataSources
+
+DataSources have defaults for all values and a default datasource can be provided automatically but if you want to
+configure it here are the common properties:
+
+You can set the boolean `JtaManaged` to false if you don't want your datasource to be using JTA - if you manage transactions yourself.
+
+Then other configurations are linked the pool the datasource is using. By default TomEE uses https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html[tomcat-jdbc] but we also provide
+https://commons.apache.org/proper/commons-dbcp/configuration.html[commons-dbcp] (2 for TomEE 7.x and 1 for TomEE 1.x).
+The properties are then the related configurations with these particular
+entries we try to keep in sync for both:
+
+[.table.table-bordered,options="header"]
+|===
+| Name|Description
+| JdbcDriver | the jdbc driver of the datasource
+| JdbcUrl | the jdbc url of the datasource
+| Username | the user to use
+| Password | the password of the user
+|===
+
+===== Password and ciphering
+
+DataSource were the first resource to support password ciphering. Originally it was another property which is still supported.
+It is called `PasswordCipher`. Its value is the ciphering algorithm and it affects the password value. However `cipher:xxx`
+is still supported on `Password` value. Default `PasswordCipher` being `PlainText` it behaves as no ciphering is in place by default.
+
+Sample:
+
+[source,bash]
+----
+ds = new://Resource?type=javax.sql.DataSource
+# our password is "Passw0rd"
+ds.Password = xMH5uM1V9vQzVUv5LG7YLA==
+ds.PasswordCipher = Static3DES
+----
+
+===== Advanced DataSource configuration
+
+TomEE also provides few utilities you can add in DataSource properties:
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Description
+| LogSql | Should SQL be logged (using TomEE logger)
+| LogSqlPackages | if set the logging will show the matching packages (separated by comma) inline when logging the query, allows to know where a query comes from
+| Flushable| if true the datasource can be casted as a Flushable to recreate the pool
+| ResetOnError | if a `SQLException` happens the pool is automatically recreated. Configuration is either "true" to do it each time an exception occurs, `x` or `retry(x)` to do it and retry until maximum `x` times
+| ResetOnErrorMethods | which methods are handled by ResetOnError
+| TomEEProxyHandler | Custom `InvocationHandler` wrapping the datasource calls
+| DataSourceCreator | which pool to use, `dbcp`, `tomcat`, `dbcp-alternative` (DBCP and TomEE proxying instead of DBCP JTA integration), `simple` (no pooling)
+|===
+
+===== DataSource and JTA
+
+`JtaManaged` determines wether or not this data source should be JTA managed
+or user managed.  If set to 'true' it will automatically be enrolled
+in any ongoing transactions.  Calling begin/commit/rollback or setAutoCommit
+on the datasource or connection will not be allowed.  If you need to perform
+these functions yourself, set `JtaManaged` to `false`
+
+===== DataSource and JPA
+
+In terms of JPA persistence.xml:
+
+- `JtaManaged=true` can be used as a 'jta-data-source'
+- `JtaManaged=false` can be used as a 'non-jta-data-source'
+
+=== ActiveMQResourceAdapter
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ActiveMQResourceAdapter">
+    BrokerXmlConfig = broker:(tcp://localhost:61616)?useJmx=false
+    ServerUrl = vm://localhost?waitForStart=20000&async=true
+    DataSource = Default Unmanaged JDBC Database
+    StartupTimeout = 10 seconds
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ActiveMQResourceAdapter
+Foo.BrokerXmlConfig = broker:(tcp://localhost:61616)?useJmx=false
+Foo.ServerUrl = vm://localhost?waitForStart=20000&async=true
+Foo.DataSource = Default Unmanaged JDBC Database
+Foo.StartupTimeout = 10 seconds
+----
+
+==== Configuration
+
+===== BrokerXmlConfig
+
+Broker configuration URI as defined by ActiveMQ
+see http://activemq.apache.org/broker-configuration-uri.html
+BrokerXmlConfig xbean:file:conf/activemq.xml - Requires xbean-spring.jar and dependencies
+
+===== ServerUrl
+
+Broker address
+
+===== DataSource
+
+DataSource for persistence messages
+
+===== StartupTimeout
+
+How long to wait for broker startup
+
+
+=== javax.jms.ConnectionFactory
+
+An ActiveMQ (JMS) connection factory.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="javax.jms.ConnectionFactory">
+    ResourceAdapter = Default JMS Resource Adapter
+    TransactionSupport = xa
+    PoolMaxSize = 10
+    PoolMinSize = 0
+    ConnectionMaxWaitTime = 5 seconds
+    ConnectionMaxIdleTime = 15 Minutes
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=javax.jms.ConnectionFactory
+Foo.ResourceAdapter = Default JMS Resource Adapter
+Foo.TransactionSupport = xa
+Foo.PoolMaxSize = 10
+Foo.PoolMinSize = 0
+Foo.ConnectionMaxWaitTime = 5 seconds
+Foo.ConnectionMaxIdleTime = 15 Minutes
+----
+
+==== Configuration
+
+===== ResourceAdapter
+
+An ActiveMQ (JMS) resource adapter.
+
+===== TransactionSupport
+
+Specifies if the connection is enrolled in global transaction
+allowed values: `xa`, `local` or `none`. Default to `xa`.
+
+===== PoolMaxSize
+
+Maximum number of physical connection to the ActiveMQ broker.
+
+===== PoolMinSize
+
+Minimum number of physical connection to the ActiveMQ broker.
+
+===== ConnectionMaxWaitTime
+
+Maximum amount of time to wait for a connection.
+
+===== ConnectionMaxIdleTime
+
+Maximum amount of time a connection can be idle before being reclaimed.
+
+
+=== javax.jms.Queue
+
+An ActiveMQ (JMS) queue.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="javax.jms.Queue">
+    # not set means id
+    destination =
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=javax.jms.Queue
+# not set means id
+Foo.destination =
+----
+
+==== Configuration
+
+===== destination
+
+Specifies the name of the queue
+
+
+=== javax.jms.Topic
+
+An ActiveMQ (JMS) topic.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="javax.jms.Topic">
+    # not set means id
+    destination =
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=javax.jms.Topic
+# not set means id
+Foo.destination =
+----
+
+==== Configuration
+
+===== destination
+
+Specifies the name of the topic
+
+
+=== org.omg.CORBA.ORB
+
+NOTE: to use it you need to add an implementation of corba.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="org.omg.CORBA.ORB" />
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=org.omg.CORBA.ORB
+----
+
+
+=== javax.mail.Session
+
+A mail session.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="mail/mysession" type="javax.mail.Session">
+  mail.transport.protocol = smtp
+  mail.smtp.host = smtp.provider.com
+  mail.smtp.auth = true
+  mail.smtp.starttls.enable = true
+  mail.smtp.port = 587
+  mail.smtp.user = user@provider.com
+  password = abcdefghij
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+mail/mysession = new://Resource?type=javax.mail.Session
+mail/mysession.mail.transport.protocol = smtp
+mail/mysession.mail.smtp.host = smtp.provider.com
+mail/mysession.mail.smtp.auth = true
+mail/mysession.mail.smtp.starttls.enable = true
+mail/mysession.mail.smtp.port = 587
+mail/mysession.mail.smtp.user = user@provider.com
+mail/mysession.password = abcdefghij
+----
+
+The properties are `javax.mail.Session` ones with the addition of `useDefault` which specifies if `getDefaultInstance()`
+or `getInstance` is used to create the session. `getDefaultInstance()` will ensure that several calls are done with the
+same configuration and return the same instance. For tomee it is likely better to rely on `getInstance()`(ie keep `useDefault` to false)
+and use `aliases` option of the resource to define an alias if you need to share the same instance accross multiple names.
+
+
+=== ManagedExecutorService
+
+A concurrency utility for EE executor service.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ManagedExecutorService">
+    Core = 5
+    Max = 25
+    KeepAlive = 5 s
+    Queue = 15
+    ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
+    Lazy = true
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ManagedExecutorService
+Foo.Core = 5
+Foo.Max = 25
+Foo.KeepAlive = 5 s
+Foo.Queue = 15
+Foo.ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
+Foo.Lazy = true
+----
+
+==== Configuration
+
+===== Core
+
+The pool core size.
+
+===== Max
+
+The pool max size.
+
+===== KeepAlive
+
+The thread keep alive time (in duration format)
+
+===== Queue
+
+The queue type size.
+
+===== ThreadFactory
+
+The thread factory implementation class.
+
+===== Lazy
+
+If set to true the pool is created when first accessed otherwise it is created at startup.
+
+
+=== ManagedScheduledExecutorService
+
+Inherit from `ManagedExecutorService` and adds scheduling abilities.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ManagedScheduledExecutorService">
+    Core = 5
+    ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
+    Lazy = true
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ManagedScheduledExecutorService
+Foo.Core = 5
+Foo.ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
+Foo.Lazy = true
+----
+
+==== Configuration
+
+See `ManagedExecutorService`.
+
+
+=== ManagedThreadFactory
+
+A thread factory for a `ManagedExecutorService`.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ManagedThreadFactory">
+    Prefix = openejb-managed-thread-
+    Lazy = true
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ManagedThreadFactory
+Foo.Prefix = openejb-managed-thread-
+Foo.Lazy = true
+----
+
+==== Configuration
+
+===== Prefix
+
+The thread prefix (suffixed with thread id).
+
+
+
+=== ContextService
+
+A concurrency utilities for JavaEE context service. It allows to create
+contextual proxies (inheriting from security, classloader...contexts).
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ContextService" />
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ContextService
+----
+
+
+=== JndiProvider: inject remote clients
+
+A thread factory for a `ManagedExecutorService`.
+Default implementation is `org.apache.openejb.threads.impl.ManagedThreadFactoryImpl`.
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ManagedThreadFactory">
+    Prefix = openejb-managed-thread-
+    Lazy = true
+</Resource>
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ManagedThreadFactory
+Foo.Prefix = openejb-managed-thread-
+Foo.Lazy = true
+----
+
+==== Configuration
+
+===== Prefix
+
+The thread prefix (suffixed with thread id).
+
+
+
+=== ContextService
+
+A concurrency utilities for JavaEE context service. It allows to create
+contextual proxies (inheriting from security, classloader...contexts).
+
+Declarable in tomee.xml via
+
+[source,xml]
+----
+<Resource id="Foo" type="ContextService" />
+----
+
+Declarable in properties via
+
+[source,bash]
+----
+Foo = new://Resource?type=ContextService
+----
+
+
diff --git a/src/main/jbake/content/admin/configuration/server.adoc b/src/main/jbake/content/admin/configuration/server.adoc
new file mode 100755
index 0000000..db2ff19
--- /dev/null
+++ b/src/main/jbake/content/admin/configuration/server.adoc
@@ -0,0 +1,86 @@
+= Container Configuration
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== Server
+
+[.table.table-bordered,options="header"]
+|===
+|Name	|Value|	Description
+|openejb.embedded.remotable|	bool|	activate or not the remote services when available
+|.bind, <service prefix>.port, <service prefix>.disabled, <service prefix>.threads	| host or IP, port, bool|override the host. Available for ejbd and httpejbd services (used by jaxws and jaxrs), number of thread to manage requests
+|openejb.embedded.initialcontext.close	|LOGOUT or DESTROY|	configure the hook called when closing the initial context. Useful when starting OpenEJB from a new InitialContext([properties]) instantiation. By default it simply logs out the logged user if it exists. DESTROY means clean the container.
+|javax.persistence.provider	|string|	override the JPA provider value
+|javax.persistence.transactionType	|string|	override the transaction type for persistence contexts
+|javax.persistence.jtaDataSource	|string|	override the JTA datasource value for persistence contexts
+|javax.persistence.nonJtaDataSource|	string	|override the non JTA datasource value for persistence contexts
+|openejb.descriptors.output	|bool|	dump memory deployment descriptors. Can be used to set complete metadata to true and avoid scanning when starting the container or to check the used configuration.
+|openejb.deployments.classpath.require.descriptor	|CLIENT or EJB|	can allow to filter what you want to scan (client modules or ejb modules)
+|openejb.descriptors.output.folder|	path|	where to dump deployement descriptors if activated.
+|openejb.strict.interface.declaration	|bool|	add some validations on session beans (spec validations in particular). false by default.
+|openejb.conf.file or openejb.configuration|	string|	OpenEJB configuration file path
+|openejb.debuggable-vm-hackery	|bool|	remove JMS informations from deployment
+|openejb.validation.skip	|bool	|skip the validations done when OpenEJB deploys beans
+|openejb.deployments.classpath.ear	|bool|	deploy the classpath as an ear
+|openejb.webservices.enabled|	bool	|activate or not webservices
+|openejb.validation.output.level|	TERSE or MEDIUM or VERBOSE|	level of the logs used to report validation errors
+|openejb.user.mbeans.list	* or a list of classes separated by ,|	list of mbeans to deploy automatically
+|openejb.deploymentId.format	composition (+string) of {ejbName} {ejbType} {ejbClass} and {ejbClass.simpleName}	default {ejbName}. The format to use to deploy ejbs.
+|openejb.deployments.classpath	|bool|	whether or not deploy from classpath
+|openejb.deployments.classpath.include and openejb.deployments.classpath.exclude	|regex|	regex to filter the scanned classpath (when you are in this case)
+|openejb.deployments.package.include and openejb.deployments.package.exclude|	regex|	regex to filter scanned packages
+|openejb.autocreate.jta-datasource-from-non-jta-one|	bool|	whether or not auto create the jta datasource if it doesn't exist but a non jta datasource exists. Useful when using hibernate to be able to get a real non jta datasource.
+|openejb.altdd.prefix	|string|	prefix use for altDD (example test to use a test.ejb-jar.xml).
+|org.apache.openejb.default.system.interceptors	|class names|list of interceptor (qualified names) separated by a comma or a space	add these interceptor on all beans
+|openejb.jndiname.strategy.class	|class name|	an implementation of org.apache.openejb.assembler.classic.JndiBuilder.JndiNameStrategy
+|openejb.jndiname.failoncollision|	bool|	if a NameAlreadyBoundException is thrown or not when 2 EJBs have the same name
+|openejb.jndiname.format |string|composition of these properties: ejbType, ejbClass, ejbClass.simpleName, ejbClass.packageName, ejbName, deploymentId, interfaceType, interfaceType.annotationName, interfaceType.annotationNameLC, interfaceType.xmlName, interfaceType.xmlNameCc, interfaceType.openejbLegacyName, interfaceClass, interfaceClass.simpleName, interfaceClass.packageName	default {deploymentId}{interfaceType.annotationName}. Change the name used for the ejb.
+|openejb.org.quartz.threadPool.class	|class| qualified name which implements org.quartz.spi.ThreadPool	the thread pool used by quartz (used to manage ejb timers)
+|openejb.localcopy	|bool|	default true. whether or not copy EJB arguments[/method/interface] for remote invocations.
+|openejb.cxf.jax-rs.providers	|string|the list of the qualified name of the JAX-RS providers separated by comma or space. Note: to specify a provider for a specific service suffix its class qualified name by ".providers", the value follow the same rules. Note 2: default is a shortcut for jaxb and json providers.
+|openejb.wsAddress.format	|string| composition of {ejbJarId}, ejbDeploymentId, ejbType, ejbClass, ejbClass.simpleName, ejbName, portComponentName, wsdlPort, wsdlService	default /{ejbDeploymentId}. The WS name format.
+|org.apache.openejb.server.webservices.saaj.provider|	axis2, sun or null	|specified the saaj configuration
+|[<uppercase service name>.]<service id>.<name> or [<uppercase service name>.]<service id>	|whatever is supported (generally string, int ...)|	set this value to the corresponding service. example: [EnterpriseBean.]<ejb-name>.activation.<property>, [PERSISTENCEUNIT.]<persistence unit name>.<property>, [RESOURCE.]<name>
+|log4j.category.OpenEJB.options|	DEBUG, INFO, ...	|active one OpenEJB log level. need log4j in the classpath
+|openejb.jmx.active|	bool|	activate (by default) or not the OpenEJB JMX MBeans
+|openejb.nobanner	|bool|	activate or not the OpenEJB banner (activated by default)
+|openejb.check.classloader	|bool|	if true print some information about duplicated classes
+|openejb.check.classloader.verbose|	bool|	if true print classes intersections
+|openejb.additional.exclude	|string separated by comma|	list of prefixes you want to exclude and are not in the default list of exclusion
+|openejb.additional.include	|string separated by comma|	list of prefixes you want to remove from thedefault list of exclusion
+|openejb.offline	|bool|	if true can create datasources and containers automatically
+|openejb.exclude-include.order|	include-exclude or exclude-include|	if the inclusion/exclusion should win on conflicts (intersection)
+|openejb.log.color	|bool|	activate or not the color in the console in embedded mode
+|openejb.log.color.<level in lowercase>	|color in uppercase	|set a color for a particular level. Color are BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, DEFAULT.
+|tomee.serialization.class.blacklist|	string	|default list of packages/classnames excluded for EJBd deserialization (needs to be set on server and client sides). Please see the description of Ejbd Transport for details.
+|tomee.serialization.class.whitelist|	string|	default list of packages/classnames allowed for EJBd deserialization (blacklist wins over whitelist, needs to be set on server and client sides). Please see the description of Ejbd Transport for details.
+|tomee.remote.support	|boolean	|if true /tomee webapp is auto-deployed and EJBd is active (true by default for 1.x, false for 7.x excepted for tomee maven plugin and arquillian)
+|openejb.crosscontext	|bool|	set the cross context property on tomcat context (can be done in the traditionnal way if the deployment is don through the webapp discovery and not the OpenEJB Deployer EJB)
+|openejb.jsessionid-support	|bool|	remove URL from session tracking modes for this context (see javax.servlet.SessionTrackingMode)
+|openejb.myfaces.disable-default-values	|bool|	by default TomEE will initialize myfaces with some its default values to avoid useless logging
+|openejb.web.xml.major	|int|	major version of web.xml. Can be useful to force tomcat to scan servlet 3 annotatino when deploying with a servlet 2.x web.xml
+|tomee.jaxws.subcontext	|string|	sub context used to bind jaxws web services, default is webservices
+|openejb.servicemanager.enabled	|bool|	run all services detected or only known available services (WS and RS
+|tomee.jaxws.oldsubcontext	|bool|	wether or not activate old way to bind jaxws webservices directly on root context
+|openejb.modulename.useHash	|bool|	add a hash after the module name of the webmodule if it is generated from the webmodule location, it avoids conflicts between multiple deployment (through ear) of the same webapp. Note: it disactivated by default since names are less nice this way.
+|openejb.session.manager	|qualified name (string)|	configure a session managaer to use for all contexts
+|tomee.tomcat.resource.wrap	|bool|wrap tomcat resources (context.xml) as tomee resources if possible (true by default)
+|tomee.tomcat.datasource.wrap	|bool|same as tomee.tomcat.resource.wrap for datasource (false by default). Note that setting it to true will create tomee datasources but can have the side effect to create twice singleton resources
+|openejb.environment.default	|bool|should default JMS resources be created or not, default to false to ensure no port is bound or multiple resources are created and completely uncontrolled (doesn't apply to datasources etc for compatibility). For tests only!
+|===
+
+=== Client
+
+[.table.table-bordered,options="header"]
+|===
+|Name|	Value	|Description
+|openejb.client.identityResolver	|implementation of org.apache.openejb.client.IdentityResolver|	default org.apache.openejb.client.JaasIdentityResolver. The class to get the client identity.
+|openejb.client.connection.pool.timeout or openejb.client.connectionpool.timeout	|int (ms)|	the timeout of the client
+|openejb.client.connection.pool.size or openejb.client.connectionpool.size	|int|	size of the socket pool
+|openejb.client.keepalive	|int (ms)|	the keepalive duration
+|openejb.client.protocol.version	|string|	Optional legacy server protocol compatibility level. Allows 4.6.x clients to potentially communicate with older servers. OpenEJB 4.5.2 and older use version "3.1", and 4.6.x currently uses version "4.6" (Default). This does not allow old clients to communicate with new servers prior to 4.6.0
+|tomee.serialization.class.blacklist|	string	|default list of packages/classnames excluded for EJBd deserialization (needs to be set on server and client sides). Please see the description of Ejbd Transport for details.
+|tomee.serialization.class.whitelist|	string|	default list of packages/classnames allowed for EJBd deserialization (blacklist wins over whitelist, needs to be set on server and client sides). Please see the description of Ejbd Transport for details.
+|===
diff --git a/src/main/jbake/content/admin/file-layout.adoc b/src/main/jbake/content/admin/file-layout.adoc
new file mode 100755
index 0000000..d2f2446
--- /dev/null
+++ b/src/main/jbake/content/admin/file-layout.adoc
@@ -0,0 +1,144 @@
+= TomEE File Layout
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+ifndef::backend-pdf[]
+
+[#filetree.col-md-4]
+[
+    {
+        label: 'apps',
+        description: 'A common but optional folder containing the applications (war, ear, jar). Note: this folder needs to be activated in tomee.xml for instance and is not there by default.',
+        children: [
+            {label:'module1.jar',description:'An ejbmodule'},
+            {label:'myapp',description:'An exploded war or ear'},
+            {label:'anotherapp.war',description:'A war'},
+            {label:'anotherapp',description:'By default TomEE will explode the war next to the .war file, this is customizable.'},
+            {label:'anotherapp2.ear',description:'An ear'},
+            {label:'anotherapp2',description:'By default TomEE will explode the ear next to the .ear file, this is customizable.'}
+        ]
+    },
+    {
+        label: 'bin',
+        description: 'The executable and boot related files',
+        children: [
+            {label:'bootstrap.jar',description:'The jar allowing Tomcat to start'},
+            {label:'catalina.bat',description:'The windows main Tomcat script'},
+            {label:'catalina.bat.original',description:'The original catalina.bat from Tomcat. TomEE customizes it.'},
+            {label:'catalina.sh',description:'The UNIx main Tomcat script'},
+            {label:'catalina.sh.original',description:'The original catalina.sh from Tomcat. TomEE customizes it.'},
+            {label:'catalina-tasks.xml',description:'Some Ant tasks Tomcat provides to work with JMX'},
+            {label:'commons-daemon.jar',description:'When setting up TomEE as a service you need this jar.'},
+            {label:'commons-daemon-native.tar.gz',description:'The native needed by commons-daemon'},
+            {label:'configtest.bat',description:'A windows script to validate the server.xml'},
+            {label:'configtest.sh',description:'A UNIx script to validate the server.xml'},
+            {label:'daemon.sh',description:'A script which can be used as init.d script'},
+            {label:'digest.bat',description:'A windows script to compute a digest'},
+            {label:'digest.sh',description:'A UNIx script to compute a digest'},
+            {label:'service.bat',description:'The windows service script'},
+            {label:'service.install.as.admin.bat',description:'Install TomEE as a service on windows'},
+            {label:'service.readme.txt',description:'The explanations on how to setup TomEE as a windows service'},
+            {label:'service.remove.as.admin.bat',description:'Uninstall TomEE service on windows'},
+            {label:'setclasspath.bat',description:'The script called by catalina.bat to initialize Tomcat classpath'},
+            {label:'setclasspath.sh',description:'The script called by catalina.bat to initialize TomEE classpath'},
+            {label:'setenv.sh',description:'A UNIx user script (optional) where you can specify some JVM options like CATALINA_OPTS environment variable'},
+            {label:'setenv.bat',description:'A windows user script (optional) where you can specify some JVM options like CATALINA_OPTS environment variable'},
+            {label:'shutdown.bat',description:'Stop the server on windows, it is commonly used with -force and a timeout as options'},
+            {label:'shutdown.sh',description:'Stop the server on UNIx, it is commonly used with -force and a timeout as options'},
+            {label:'startup.bat',description:'Start (and forget) TomEE on windows'},
+            {label:'startup.sh',description:'Start (and forget) TomEE on UNIx'},
+            {label:'tomcat-juli.jar',description:'The Tomcat Java Util Logging extensions which allow for instance to configure the logging per application'},
+            {label:'tomcat-native.tar.gz',description:'The Tomcat native used by some connectors'},
+            {label:'TomEE....exe',description:'TomEE windows executables when setup as a service for amd64 architectures'},
+            {label:'tomee.bat',description:'TomEE utility script for windows, allows to compute ciphers for instance'},
+            {label:'tomee.sh',description:'TomEE utility script for UNIx, allows to compute ciphers for instance'},
+            {label:'tool-wrapper.bat',description:'Windows script calling Tomcat Tool utility. It executes a command line with Tomcat classloader.'},
+            {label:'tool-wrapper.sh',description:'UNIx script calling Tomcat Tool utility. It executes a command line with Tomcat classloader.'},
+            {label:'version.bat',description:'Print Tomcat version (for windows)'},
+            {label:'version.sh',description:'Print Tomcat version (for UNIx)'}
+        ]
+    },
+    {
+        label: 'conf',
+        description: 'Folder containing the configuration of TomEE',
+        children: [
+            {label:'Catalina',description:'A folder where Tomcat can copy web application configuration (typically context.xml can be overriden from there)'},
+            {label:'catalina.policy',description:'The server security policy rules'},
+            {label:'catalina.properties',description:'The server boot configuration (classloader etc...)'},
+            {label:'conf.d',description:'A TomEE folder where services can pick configuration'},
+            {label:'context.xml',description:'The default context.xml configuration'},
+            {label:'logging.properties',description:'The logging configuration for the server and applications (overridable)'},
+            {label:'server.xml',description:'The server configuration (Host, Context, Valves, ...)'},
+            {label:'server.xml.original',description:'The original server.xml, TomEE updates it to add its lifecycle manager.'},
+            {label:'system.properties',description:'TomEE global configuration'},
+            {label:'tomcat-users.xml',description:'The default location where tomcat stores users.'},
+            {label:'tomcat-users.xml.original',description:'The Tomcat tomcat-users.xml (TomEE add comments)'},
+            {label:'tomcat-users.xsd',description:'The XSD for tomcat-users.xml'},
+            {label:'tomee.xml',description:'The TomEE configuration file, syntax is hybrid between XML and Properties and it is fully replaceable with system.properties but users generally prefer this file.'},
+            {label:'web.xml',description:'The default web.xml'}
+        ]
+    },
+    {
+        label: 'lib',
+        description: 'Folder containing TomEE binaries',
+        children: [
+            {label:'*.jar',description:'Tomcat + TomEE libraries'}
+        ]
+    },
+    {
+        label: 'logs',
+        description: 'Default location of log files',
+        children: [
+            {label:'catalina.$day.log',description:'By default container logs go there'},
+            {label:'xxx.2016-03-16.log',description:'By default application xxx logs go there (when using servlet API)'},
+            {label:'localhost.$day.log',description:'By default host related logs go there'},
+            {label:'localhost_access_log.$day.txt',description:'By default access logs (request the container processed) go there'}
+        ]
+    },
+    {
+        label: 'temp',
+        description: 'Java temporary directory is redirected by default to this folder',
+        children: [
+            {label:'OpenEJB-dejlzdbhjzbfrzeofrh',description:'A temporary file TomEE can create (suffix depends the startup) to check the instance'}
+        ]
+    },
+    {
+        label: 'webapps',
+        description: 'Folder containing the web applications',
+        children: [
+            {label:'myapp',description:'An exploded war'},
+            {label:'anotherapp.war',description:'A war'},
+            {label:'anotherapp',description:'By default TomEE will explode the war next to the .war file, this is customizable.'}
+        ]
+    },
+    {
+        label: 'work',
+        description: 'Folder where Tomcat and TomEE can work',
+        children: [
+            {
+                label:'Catalina',description:'By default Tomcat Engine is called Catalina. This folder matches engine name.',
+                children: [
+                    {
+                        label:'localhost',description:'A folder by host by engine to seggregate data of each ones',
+                        children: [
+                            {
+                                label:'myapp',description:'An application deployed on the previous level host',
+                                children: [
+                                    { label:'org.apache.jsp.index_jsp.java',description:'The generated JSP source (index.jsp there)' },
+                                    { label:'org.apache.jsp.index_jsp.class',description:'The compiled JSP binary' }
+                                ]
+                            }
+                        ]
+                    }
+                ]
+            }
+        ]
+    }
+]
+
+[#filetreedetail.col-md-8.bs-callout.bs-callout-primary]
+Click on a tree node or open a folder to see the detail there.
+
+endif::[]
diff --git a/src/main/jbake/content/admin/index.adoc b/src/main/jbake/content/admin/index.adoc
new file mode 100755
index 0000000..8ec3283
--- /dev/null
+++ b/src/main/jbake/content/admin/index.adoc
@@ -0,0 +1,9 @@
+= TomEE Administration
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+- link:file-layout.html[TomEE File Layout]
+- link:configuration/index.html[Configuration Reference]
+- link:cluster/index.html[Clustering]
diff --git a/src/main/jbake/content/advanced/applicationcomposer/index.adoc b/src/main/jbake/content/advanced/applicationcomposer/index.adoc
new file mode 100755
index 0000000..23e5156
--- /dev/null
+++ b/src/main/jbake/content/advanced/applicationcomposer/index.adoc
@@ -0,0 +1,76 @@
+= Application Composer Advanced Usage
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+ApplicationComposer can be a way to run a JBatch not needing any HTTP connector.
+
+Here is an example making batch integration easy - note you can extract the generic part in a library very easily:
+
+TIP: if you didn't check yet BatchEE provides some standalone utilities for JBatch but the idea of this page can be reused for a lot of applications.
+
+[source,java]
+----
+// helper class reusable for any batch
+abstract class BatchApplication {
+    private static final DateTimeFormatter DATE = DateTimeFormatter.ofPattern("YYYYMMddHHmmss");
+
+    protected Report runBatch(final String batchName, final Properties config) {
+        final JobOperator operator = BatchRuntime.getJobOperator();
+        final long id = operator.start(batchName, config);
+        Batches.waitForEnd(operator, id);
+        return new Report(operator.getJobExecution(id), operator.getParameters(id));
+    }
+
+    @Module // we enforce BatchEE to be initialized as an EJB context to get JNDI for JTA init, needed for TomEE 1
+    public EjbModule ensureBatchEESetupIsDoneInTheRightContext() {
+        final EjbJar ejbJar = new EjbJar().enterpriseBean(new SingletonBean(BatchEEBeanManagerInitializer.class));
+
+        final Beans beans = new Beans();
+        beans.addManagedClass(BatchEEBeanManagerInitializer.Init.class);
+
+        final EjbModule ejbModule = new EjbModule(ejbJar);
+        ejbModule.setModuleId("batchee-shared-components");
+        ejbModule.setBeans(beans);
+        return ejbModule;
+    }
+
+    public static class Report {
+        private final JobExecution execution;
+        private final Properties properties;
+
+        public Report(final JobExecution execution, final Properties properties) {
+            this.execution = execution;
+            this.properties = properties;
+        }
+
+        public JobExecution getExecution() {
+            return execution;
+        }
+
+        public Properties getProperties() {
+            return properties;
+        }
+    }
+}
+
+@Classes(cdi = true, value = { MyFilter.class, MoveFile.class, InputFile.class, MyReader.class, LoggingListener.class })
+public class MyBatch extends BatchApplication {
+    private final Properties config;
+
+    public Mybatch(final String[] args) { // main args
+        this.config = new Properties() {{ // create the batch config
+            setProperty("input-directory", args[0]);
+        }};
+    }
+
+    public Report execute(final String inputDirectory) {
+        return runBatch("sunstone", config);
+    }
+
+    public static void main(final String[] args) throws Exception {
+        ApplicationComposers.run(MyBatch.class, args);
+    }
+}
+----
diff --git a/src/main/jbake/content/advanced/client/index.adoc b/src/main/jbake/content/advanced/client/index.adoc
new file mode 100644
index 0000000..3e78b33
--- /dev/null
+++ b/src/main/jbake/content/advanced/client/index.adoc
@@ -0,0 +1,7 @@
+= Advanced
+:jbake-date: 2016-10-14
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+- link:jndi.html[JNDI clients]
diff --git a/src/main/jbake/content/advanced/client/jndi.adoc b/src/main/jbake/content/advanced/client/jndi.adoc
new file mode 100644
index 0000000..7a42782
--- /dev/null
+++ b/src/main/jbake/content/advanced/client/jndi.adoc
@@ -0,0 +1,116 @@
+= Advanced
+:jbake-date: 2016-10-14
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE has several JNDI client intended for multiple usages.
+
+== Default one
+
+In a standalone instance you generally don't need (or want) to specify anything
+to do a lookup. Doing so you will inherit from the contextual environment:
+
+[source,java]
+----
+final Context ctx = new InitialContext();
+ctx.lookup("java:....");
+----
+
+== LocalInitialContextFactory
+
+This is the legacy context factory used by OpenEJB. It is still useful to fallback
+on the "default" one in embedded mode where sometimes classloaders or libraries can mess
+up the automatic conextual context.
+
+Usage:
+
+[source,java]
+----
+Properties properties = new Properties();
+properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+final Context ctx = new InitialContext(properties);
+ctx.lookup("java:....");
+----
+
+This context factory supports few more options when *you boot the container* creating a context:
+
+|===
+| Name | Description
+| openejb.embedded.remotable | true/false: starts embedded services
+| Context.SECURITY_PRINCIPAL/Context.SECURITY_CREDENTIALS | the *global* security identity for the whole container
+|===
+
+IMPORTANT: `Context.SECURITY_*` shouldn't be used for runtime lookups with `LocalInitialContextFactory`, it would leak a security identity and make the runtime no more thread safe.
+This factory was deprecated starting with 7.0.2 in favor of `org.apache.openejb.core.OpenEJBInitialContextFactory`.
+
+== OpenEJBInitialContextFactory
+
+This factory allows you to access local EJB and container resources.
+
+[source,java]
+----
+Properties properties = new Properties();
+properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.OpenEJBInitialContextFactory");
+final Context ctx = new InitialContext(properties);
+ctx.lookup("java:....");
+----
+
+== RemoteInitialContextFactory
+
+Intended to be used to contact a remote server, the `org.apache.openejb.client.RemoteInitialContextFactory` relies on the provider url
+to contact a tomee instance:
+
+[source,java]
+----
+Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+p.put(Context.PROVIDER_URL, "failover:ejbd://192.168.1.20:4201,ejbd://192.168.1.30:4201");
+
+final InitialContext remoteContext = new InitialContext(p);
+ctx.lookup("java:....");
+----
+
+Contrarly to local one, the remote factory supports `Context.SECURITY_*` options in a thread safe manner and you can do lookups at runtime using them.
+
+See link:../../admin/cluster/index.html[Cluster] page for more details on the options.
+
+=== Security
+
+The context configuration can take additional configuration to handle EJB security:
+
+[source]
+----
+p.put("openejb.authentication.realmName", "my-realm"); // optional
+p.put(Context.SECURITY_PRINCIPAL, "alfred");
+p.put(Context.SECURITY_CREDENTIALS, "bat");
+----
+
+The realm will be used by JAAS to get the right LoginModules and principal/credentials to
+do the actual authentication.
+
+==== HTTP case
+
+Often HTTP layer is secured and in this case you need to authenticate before the EJBd (remote EJB TomEE protocol) layer.
+Thanks to TomEE/Tomcat integration login there will propagate to the EJBd context.
+
+This can be done passing the token you need to set as `Authorization` header in the `PROVIDER_URL`:
+
+[source]
+----
+// tomee/openejb principal/credentials
+p.put(Context.PROVIDER_URL, "http://localhost:8080/tomee/ejb?authorization=Basic%20dG9tZWU6b3BlbmVqYg==");
+----
+
+The token passed as `authorization` query parameter is the header value URL encoded. It can
+be any token like a basic one, a custom one, an OAuth2 one (in this case you need to renew it programmatically
+and change your client instance when renewing) etc...
+
+TIP: basic being very common there is a shortcut with two alternate query parameter replacing `authorization` one: `basic.password` and `basic.username`.
+
+Finally if you don't use `Authorization` header you can change the used header setting `authorizationHeader` query parameter.
+
+NOTE: `authorization`, `authorizationHeader`, `basic.username`, and `basic.password` are removed
+from the URL before opening the connection and therefore not logged in the remote server access log since version 7.0.3.
+
+
diff --git a/src/main/jbake/content/advanced/index.adoc b/src/main/jbake/content/advanced/index.adoc
new file mode 100755
index 0000000..6b3ba64
--- /dev/null
+++ b/src/main/jbake/content/advanced/index.adoc
@@ -0,0 +1,11 @@
+= Advanced
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+- link:applicationcomposer/index.html[Use `ApplicationComposer` to write mains]
+- link:setup/index.html[How to install TomEE properly]
+- link:shading/index.html[Simple deployable: fat/uber jars]
+- link:client/index.html[Clients (JNDI)]
+- link:jms/jms-configuration.html[JMS Configuration Tips]
diff --git a/src/main/jbake/content/advanced/jms/jms-configuration.adoc b/src/main/jbake/content/advanced/jms/jms-configuration.adoc
new file mode 100644
index 0000000..bd2fe16
--- /dev/null
+++ b/src/main/jbake/content/advanced/jms/jms-configuration.adoc
@@ -0,0 +1,67 @@
+= JMS Configuration Tips
+:jbake-date: 2017-02-22
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+== Why my ActiveMQ/JMS MDB is not scaling as expected?
+
+There are multiple configurations points to ensure you scale as much as you want.
+
+Here some common configuration to validate (note that when possible the sample value is the default):
+
+- The resource adapter thread pool ("worker threads" or `WorkManager`) limits the number of max work threads:
+
+[source,xml]
+----
+<Resource id="my resource adapter" ....>
+  # using -1 will make the server using cached threads (unbounded)
+  # min recommanded: maxSessions + 1 (for connect())
+  threadPoolSize = 30
+</Resource>
+----
+
+- Then the MDB container itself has a upper bound through `InstanceLimit` which controls the max MDB instance count:
+
+[source,xml]
+----
+<Container id="my mdb container" type="MESSAGE">
+    # -1 will disable it
+    # min recommanded = maxSessions
+    InstanceLimit = 10
+</Container>
+----
+
+- ActiveMQ `maxSessions` controls how many sessions a MDB can use:
+
+[source,java]
+----
+@MessageDriven(activationConfig = {
+        @javax.ejb.ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "1"),
+        @javax.ejb.ActivationConfigProperty(propertyName = "destination", propertyValue = "target-queue")
+})
+public static class MyMdb implements MessageListener {
+    @Override
+    public void onMessage(final Message message) {
+        // ...
+    }
+}
+----
+
+- The ConnectionFactory has also an instance pool through geronimo-connector logic, configuration
+ can make the behavior changing but this is controlled through pool related variables (the pool and resource properties are merged in the definition):
+
+[source,xml]
+----
+<Resource id="my connection factory" type="ConnectionFactory">
+    # recommanded to be aligned on maxSessions
+    PoolMaxSize = 10
+    # for 100% MDB (no client) you can evaluate to turn it off/false, for client it can still be useful depending what you do
+    Pooling = true
+</Resource>
+----
+
+== Slow consumption
+
+If you find you have a slow consumption of messages there are several options to have a look (activemq website explains it very well)
+but one very impacting option can be the prefetch size.
diff --git a/src/main/jbake/content/advanced/setup/index.adoc b/src/main/jbake/content/advanced/setup/index.adoc
new file mode 100755
index 0000000..3eeb386
--- /dev/null
+++ b/src/main/jbake/content/advanced/setup/index.adoc
@@ -0,0 +1,142 @@
+= How to Setup TomEE in production
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+
+
+You can use TomEE as described on link:../../admin/file-layout.html[File Layout] page but in production it is better to
+split TomEE and application binaries and configuration.
+
+Idea is to have this kind of layout (the root is the one you prefer):
+
+ifndef::backend-pdf[]
+
+[#filetree.col-md-4]
+[{
+    label: '/some/path',
+    description: 'any location on your file system',
+    children: [
+        {
+            label: 'tomee',
+            description: 'all tomee binaries will be there, note: you often do the same for the JVM versions you have',
+            children: [
+                {
+                    label: 'tomee-1.7.1',
+                    description: 'a particular tomee version (just unzip it there)',
+                    children: [
+                        { label: 'bin', description: 'the startup binaries/scripts' },
+                        { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' },
+                        { label: 'lib', description: 'the binaries' }
+                    ]
+                },
+                {
+                    label: 'tomee-1.7.2',
+                    description: 'a particular tomee version (just unzip it there)',
+                    children: [
+                        { label: 'bin', description: 'the startup binaries/scripts' },
+                        { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' },
+                        { label: 'lib', description: 'the binaries' }
+                    ]
+                },
+                {
+                    label: 'tomee-7.0.0-M3',
+                    description: 'a particular tomee version (just unzip it there)',
+                    children: [
+                        { label: 'bin', description: 'the startup binaries/scripts' },
+                        { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' },
+                        { label: 'lib', description: 'the binaries' }
+                    ]
+                }
+            ]
+        },
+        {
+            label: 'applications',
+            description: 'all applications',
+            children: [
+                {
+                    label: 'application1',
+                    description: 'any application instance (ie configuration + binaries)',
+                    children: [
+                        { label: 'bin', description: 'provide scripts for this instance (see under that file layout)' },
+                        { label: 'conf', description: 'the instance configuration, typically what is in tomee/conf when used in standalone' },
+                        { label: 'lib', description: 'some additional binaries like JDBC drivers' },
+                        { label: 'logs', description: 'instances logs location' },
+                        { label: 'work', description: 'dedicated work directory' },
+                        { label: 'temp', description: 'instance temporary folder' },
+                        { label: 'webapps', description: 'instance webapp folder' }
+                    ]
+                },
+                {
+                    label: 'application2',
+                    description: 'any application instance (ie configuration + binaries)',
+                    children: [
+                        { label: 'bin', description: 'provide scripts for this instance (see under that file layout)' },
+                        { label: 'conf', description: 'the instance configuration, typically what is in tomee/conf when used in standalone' },
+                        { label: 'lib', description: 'some additional binaries like JDBC drivers' },
+                        { label: 'logs', description: 'instances logs location' },
+                        { label: 'work', description: 'dedicated work directory' },
+                        { label: 'temp', description: 'instance temporary folder' },
+                        { label: 'webapps', description: 'instance webapp folder' }
+                    ]
+                }
+            ]
+        }
+    ]
+}]
+
+
+[#filetreedetail.col-md-8.bs-callout.bs-callout-primary]
+Click on a tree node or open a folder to see the detail there.
+
+[.clearfix]
+&nbsp;
+
+endif::[]
+
+=== Instance scripts
+
+The idea for instances (applications) scripts is to simply delegate to tomcat ones but customizing the JVM and TomEE versions.
+
+Customizing the version (and locations) is done in `bin/setenv.sh` of instances.
+
+Here are an example for the common scripts (of course you can write helper version like restart etc).
+
+==== setenv.sh
+
+[source,bash]
+----
+#! /bin/sh
+
+# which java
+export JAVA_HOME="/some/path/java/jdk-8u60"
+# which tomee
+export CATALINA_HOME="/some/path/tomee/tomee-7.0.0-M3"
+# where is the application - to let tomcat/tomee finds the configuration
+export CATALINA_BASE="/some/path/application1/"
+# to let tomee be able to kill the instance if shutdown doesn't work (see shutdown script)
+export CATALINA_PID="/some/path/application1/work/tomee.pid"
+----
+
+==== startup
+
+[source,bash]
+----
+#! /bin/bash
+
+proc_script_base="`cd $(dirname $0) && cd .. && pwd`"
+source "$proc_script_base/bin/setenv.sh"
+nohup "$CATALINA_HOME/bin/startup.sh" "$@" > $proc_script_base/logs/nohup.log &
+----
+
+==== shutdown
+
+[source,bash]
+----
+#! /bin/bash
+
+proc_script_base="`cd $(dirname $0) && cd .. && pwd`"
+source "$proc_script_base/bin/setenv.sh"
+# we support parameters like timeout and force, typically we would call it this way: ./shutdown 1200 -force
+"$CATALINA_HOME/bin/shutdown.sh" "$@"
+----
+
diff --git a/src/main/jbake/content/advanced/shading/index.adoc b/src/main/jbake/content/advanced/shading/index.adoc
new file mode 100755
index 0000000..22ac0c3
--- /dev/null
+++ b/src/main/jbake/content/advanced/shading/index.adoc
@@ -0,0 +1,278 @@
+= TomEE Shading
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+== Fat Jars with Maven
+
+Shading the container and the application has some challenges like merging correctly resources (`META-INF/services/` typically).
+
+Here is a maven shade plugin configuration working for most cases:
+
+[source,xml]
+----
+<plugin>
+  <groupId>org.apache.maven.plugins</groupId>
+  <artifactId>maven-shade-plugin</artifactId>
+  <version>2.3</version>
+  <executions>
+    <execution>
+      <phase>package</phase>
+      <goals>
+        <goal>shade</goal>
+      </goals>
+      <configuration>
+        <dependencyReducedPomLocation>${project.build.directory}/reduced-pom.xml</dependencyReducedPomLocation>
+        <transformers>
+          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+            <mainClass>org.apache.tomee.embedded.FatApp</mainClass>
+          </transformer>
+          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+            <resource>META-INF/cxf/bus-extensions.txt</resource>
+          </transformer>
+          <transformer implementation="org.apache.openwebbeans.maven.shade.OpenWebBeansPropertiesTransformer" />
+        </transformers>
+        <filters>
+          <filter> <!-- we don't want JSF to be activated -->
+            <artifact>*:*</artifact>
+            <excludes>
+              <exclude>META-INF/faces-config.xml</exclude>
+            </excludes>
+          </filter>
+        </filters>
+      </configuration>
+    </execution>
+  </executions>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.openwebbeans</groupId>
+      <artifactId>openwebbeans-maven</artifactId>
+      <version>1.7.0/version>
+    </dependency>
+  </dependencies>
+</plugin>
+----
+
+NOTE: see link:../tomee-embedded/index.html[TomEE Embedded] page for more information about tomee embedded options.
+
+IMPORTANT: this shade uses TomEE Embedded but you can do the same with an link:../applicationcomposer/index.html[Application Composer] application.
+
+TIP: if you have `META-INF/web-fragment.xml` in your application you will need to merge them in a single one in the shade. Note that tomcat provides one
+which can be skipped in this operation since it is there only as a marker for jasper detection.
+
+Then just build the jar:
+
+[source,bash]
+----
+mvn clean package
+----
+
+And you can run it:
+
+[source,bash]
+----
+java -jar myapp-1.0-SNAPSHOT.jar
+----
+
+== Fat Jars with Gradle
+
+With gradle you can rely on either jar plugin, fatjar plugin or shadowjar plugin. Last one is likely the closer to maven shade plugin
+so that's the one used for next sample:
+
+[source,groovy]
+----
+// run $ gradle clean shadowJar
+import org.apache.openwebbeans.gradle.shadow.OpenWebBeansPropertiesTransformer
+
+buildscript {
+    repositories {
+        mavenLocal()
+        jcenter()
+    }
+    dependencies {
+        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
+        classpath 'org.apache.openwebbeans:openwebbeans-gradle:1.7.0'
+    }
+}
+
+apply plugin: 'com.github.johnrengelman.shadow'
+
+group 'org.apache.tomee.demo.gradle'
+version '1.0-SNAPSHOT'
+
+apply plugin: 'idea'
+apply plugin: 'java'
+
+sourceCompatibility = 1.8
+
+repositories {
+    mavenLocal()
+    mavenCentral()
+}
+
+dependencies {
+    compileOnly 'org.projectlombok:lombok:1.16.10'
+    compile 'org.apache.tomee:tomee-embedded:7.0.2-SNAPSHOT'
+}
+
+// customize exclusions depending your app
+
+// first the not used dependencies like JSF, JAXWS, JMS ones
+def excludedDependenciesGroups = [
+        // gradle is buggy with poms, scope provided and optional I think
+        'com.google.code.findbugs',
+        'com.google.guava',
+        'javax.annotation',
+        'javax.ws.rs',
+        'net.sf.ehcache',
+        'org.apache.httpcomponents',
+        'org.ow2.asm',
+        // tomee jaxws, jms, etc...
+        'commons-codec',
+        'com.sun.xml.messaging.saaj',
+        'joda-time',
+        'junit',
+        'net.shibboleth.utilities',
+        'org.apache.activemq',
+        'org.apache.activemq.protobuf',
+        'org.apache.myfaces.core',
+        'org.apache.neethi',
+        'org.apache.santuario',
+        'org.apache.ws.xmlschema',
+        'org.apache.wss4j',
+        'org.bouncycastle',
+        'org.cryptacular',
+        'org.fusesource.hawtbuf',
+        'org.jasypt',
+        'org.jvnet.mimepull',
+        'org.opensaml',
+        'wsdl4j',
+        'xml-resolver'
+]
+
+// then cxf+tomee specific dependencies so we need to be more precise than the group
+// to not exclude everything
+def excludedDependenciesArtifacts = [
+        'cxf-rt-bindings-soap',
+        'cxf-rt-bindings-xml',
+        'cxf-rt-databinding-jaxb',
+        'cxf-rt-frontend-jaxws',
+        'cxf-rt-frontend-simple',
+        'cxf-rt-security-saml',
+        'cxf-rt-ws-addr',
+        'cxf-rt-wsdl',
+        'cxf-rt-ws-policy',
+        'cxf-rt-ws-security',
+        'openejb-cxf',
+        'openejb-webservices',
+        'tomee-webservices',
+        'geronimo-connector',
+        'geronimo-javamail_1.4_mail'
+]
+shadowJar {
+    classifier = 'bundle'
+
+    // merge SPI descriptors
+    mergeServiceFiles()
+    append 'META-INF/cxf/bus-extensions.txt'
+    transform(OpenWebBeansPropertiesTransformer.class)
+
+    // switch off JSF + JMS + JAXWS
+    exclude 'META-INF/faces-config.xml'
+    dependencies {
+        exclude(dependency {
+            excludedDependenciesGroups.contains(it.moduleGroup) ||
+                    excludedDependenciesArtifacts.contains(it.moduleName)
+        })
+    }
+
+    // ensure we define the expected Main (if you wrap tomee main use your own class)
+    manifest {
+        attributes 'Main-Class': 'org.apache.tomee.embedded.FatApp'
+    }
+}
+----
+
+Then run:
+
+[source]
+----
+gradle clean build shadowJar
+----
+
+and you'll get `build/libs/demo-gradle-tomee-embedded-shade-1.0-SNAPSHOT-bundle.jar` ready to run with:
+
+[source]
+----
+java -jar build/libs/demo-gradle-tomee-embedded-shade-1.0-SNAPSHOT-bundle.jar --as-war --simple-log=true
+----
+
+== Fat Wars
+
+Fat Wars are executable wars. Note they can be fancy for demos but they have the drawback to put the server in web resources
+at packaging time (to ensure the war is actually an executable jar) so adding a filter preventing these files to be read
+can be needed if you don't already use a web technology doing it (a servlet bound to /*).
+
+Here how to do a fat war:
+
+[source,xml]
+----
+<properties>
+  <!-- can be uber (for all), jaxrs, jaxws for lighter ones -->
+  <tomee.flavor>uber</tomee.flavor>
+</properties>
+
+<dependencies>
+  <!-- ...your dependencies as usual... -->
+  <dependency>
+    <groupId>org.apache.tomee</groupId>
+    <artifactId>tomee-embedded</artifactId>
+    <classifier>${tomee.flavor}</classifier>
+    <version>7.0.0</version>
+    <scope>provided</scope>
+  </dependency>
+</dependencies>
+
+<build>
+  <plugins>
+    <plugin>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-war-plugin</artifactId>
+      <version>2.6</version>
+      <configuration>
+        <failOnMissingWebXml>false</failOnMissingWebXml>
+        <archive>
+          <manifest>
+            <mainClass>org.apache.tomee.embedded.Main</mainClass>
+          </manifest>
+        </archive>
+        <dependentWarExcludes />
+        <overlays>
+          <overlay>
+            <groupId>org.apache.tomee</groupId>
+            <artifactId>tomee-embedded</artifactId>
+            <classifier>${tomee.flavor}</classifier>
+            <type>jar</type>
+            <excludes />
+          </overlay>
+        </overlays>
+      </configuration>
+    </plugin>
+  </plugins>
+</build>
+----
+
+Then just build the war:
+
+[source,bash]
+----
+mvn clean package
+----
+
+And you can run it:
+
+[source,bash]
+----
+java -jar myapp-1.0-SNAPSHOT.war
+----
diff --git a/src/main/jbake/content/advanced/tomee-embedded/index.adoc b/src/main/jbake/content/advanced/tomee-embedded/index.adoc
new file mode 100755
index 0000000..8664ade
--- /dev/null
+++ b/src/main/jbake/content/advanced/tomee-embedded/index.adoc
@@ -0,0 +1,223 @@
+= TomEE Embedded
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE Embedded is based on Tomcat embedded and starts a real TomEE in the launching JVM. It is also
+able to deploy the classpath as a webapp and to use either `META-INF/resources` or a folder as web resources.
+
+Here is a basic programmatic usage based on `org.apache.tomee.embedded.Container` class:
+
+[source,java]
+----
+try (final Container container = new Container(new Configuration()).deployClasspathAsWebApp()) {
+    System.out.println("Started on http://localhost:" + container.getConfiguration().getHttpPort());
+
+    // do something or wait until the end of the application
+}
+----
+
+All EE features are then accessible directly in the same JVM.
+
+== TomEE Embedded Configuration
+
+The default configuration allows to start tomee without issue but you can desire to customize some of them.
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default | Description
+|httpPort | 8080| http port
+|stopPort | 8005| shutdown port
+|host |localhost| host
+|dir|-|where to create a file hierarchy for tomee (conf, temp, ...)
+|serverXml|-|which server.xml to use
+|keepServerXmlAsThis|false|don't adjust ports/host from the configuration and keep the ones in server.xml
+|properties|-|container properties
+|quickSession | true|use Random instead of SecureRandom (for dev)
+|skipHttp|false|don't use the http connector
+|httpsPort | 8443|https potr
+|ssl|false| activate https
+|withEjbRemote|false|use EJBd
+|keystoreFile|-|https keystore location
+|keystorePass|-|https keystore password
+|keystoreType |JKS|https keystore type
+|clientAuth|-|https client auth
+|keyAlias|-|https alias
+|sslProtocol|-|SSL protocol for https connector
+|webXml|-|default web.xml to use
+|loginConfig|-|which LoginConfig to use, relies on `org.apache.tomee.embedded.LoginConfigBuilder` to create it
+|securityConstraints|-|add some security constraints, use `org.apache.tomee.embedded.SecurityConstaintBuilder` to build them
+|realm|-|which realm to use (useful to switch to `JAASRealm` for instance) without modifying the application
+|deployOpenEjbApp|false|should internal openejb application be delpoyed
+|users|-|a map of user/password
+|roles|-|a map of role/users
+|tempDir|${java.io.tmpdir}/tomee-embedded_${timestamp}|tomcat needs a docBase, in case you don't provide one one will be created there
+|webResourceCached |true|should web resources be cached by tomcat (set false in frontend dev)
+|configuration-location|-|location (classpath or file) to a .properties to configure the server
+[pre-task|-|Runnable or org.apache.tomee.embedded.LifecycleTask implementations to execute before the container starts
+|classes-filter|-|implementation of a custom xbean Filter to ignore not desired classes during scanning
+|basic|-|set /* under BASIC authentication for the realm "Security", authentication role being "*"
+|===
+
+Note: passing to `Container` constructor a `Configuration` it will start the container automatically but using `setup(Configuration)`
+to initialize the configuration you will need to call `start()`.
+
+You can also pass through the properties `connector.xxx` and `connector.attributes.xxx` to customize connector(s)
+configuration directly.
+
+== Standalone applications or TomEE Embedded provided main(String[])
+
+Deploying an application in a server is very nice cause the application is generally small and it allows to update the
+container without touching the application (typically insanely important in case of security issues for instance).
+
+However sometimes you don't have the choice so TomEE Embedded provides a built-in `main(String[])`. Here are its options:
+
+NOTE: this is still a TomEE so all system properties work (for instance to create a resource).
+
+[.table.table-bordered,options="header"]
+|===
+|Name|Default|Description
+|--path|-|location of application(s) to deploy
+|--context|-|Context name for applications (same order than paths)
+|-p or --port|8080|http port
+|-s or --shutdown|8005|shutdown port
+|-d or --directory|./.apache-tomee|tomee work directory
+|-c or --as-war|-|deploy classpath as a war
+|-b or --doc-base|-|where web resources are for classpath deployment
+|--renaming|-|for fat war only, is renaming of the context supported
+|--serverxml|-|the server.xml location
+|--tomeexml|-|the server.xml location
+|--property|-|a list of container properties (values follow the format x=y)
+|===
+
+Note that since 7.0.0 TomEE provides 3 flavors (qualifier) of tomee-embedded as fat jars:
+
+- uber (where we put all request features by users, this is likely the most complete and the biggest)
+- jaxrs: webprofile minus JSF
+- jaxws: webprofile plus JAX-WS
+
+These different uber jars are interesting in mainly 2 cases:
+
+- you do a war shade (it avoids to list a bunch of dependencies but still get a customized version)
+- you run your application using `--path` option
+
+NOTE: if you already do a custom shade/fatjar this is not really impacting since you can depend on `tomee-embedded` and exclude/include what you want.
+
+== FatApp a shortcut main
+
+`FatApp` main (same package as tomee embedded `Main`) just wraps the default main ensuring:
+
+- ̀`--as-war` is used
+- ̀`--single-classloader` is used
+- `--configuration-location=tomee-embedded.properties` is set if `tomee-embedded.properties` is found in the classpath
+
+== configuration-location
+
+`--configuration-location` option allows to simplify the configuration of tomee embedded through properties.
+
+Here are the recognized entries (they match the configuration, see org.apache.tomee.embedded.Configuration for the detail):
+
+|===
+|Name|
+|http|
+|https|
+|stop|
+|host|
+|dir|
+|serverXml|
+|keepServerXmlAsThis|
+|quickSession|
+|skipHttp|
+|ssl|
+|http2|
+|webResourceCached|
+|withEjbRemote|
+|deployOpenEjbApp|
+|keystoreFile|
+|keystorePass|
+|keystoreType|
+|clientAuth|
+|keyAlias|
+|sslProtocol|
+|webXml|
+|tempDir|
+|classesFilter|
+|conf|
+|properties.x (set container properties x with the associated value)|
+|users.x (for default in memory realm add the user x with its password - the value)|
+|roles.x (for default in memory realm add the role x with its comma separated users - the value)|
+|connector.x (set the property x on the connector)|
+|realm=fullyqualifiedname,realm.prop=xxx (define a custom realm with its configuration)|
+|login=,login.prop=xxx (define a org.apache.tomee.embedded.LoginConfigBuilder == define a LoginConfig)|
+|securityConstraint=,securityConstraint.prop=xxx (define a org.apache.tomee.embedded.SecurityConstaintBuilder == define webapp security)|
+|configurationCustomizer.alias=,configurationCustomizer.alias.class=class,configurationCustomizer.alias.prop=xxx (define a ConfigurationCustomizer)|
+|===
+
+Here is a sample to add BASIC security on `/api/*`:
+
+[source]
+----
+# security configuration
+securityConstraint =
+securityConstraint.authConstraint = true
+securityConstraint.authRole = **
+securityConstraint.collection = api:/api/*
+
+login =
+login.realmName = app
+login.authMethod = BASIC
+
+realm = org.apache.catalina.realm.JAASRealm
+realm.appName = app
+
+properties.java.security.auth.login.config = configuration/login.jaas
+----
+
+And here a configuration to exclude jackson packages from scanning and use log4j2 as main logger (needs it as dependency):
+
+[source]
+----
+properties.openejb.log.factory = log4j2
+properties.openejb.container.additional.include = com.fasterxml.jackson,org.apache.logging.log4j
+----
+
+== Application Runner
+
+SInce TomEE 7.0.2, TomEE provide a light ApplicationComposer integration for TomEE Embedded (all features are not yet supported but the main ones are):
+`org.apache.tomee.embedded.TomEEEmbeddedApplicationRunner`. It relies on the definition of an `@Application`:
+
+[source,java]
+----
+@Application
+@Classes(context = "app")
+@ContainerProperties(@ContainerProperties.Property(name = "t", value = "set"))
+@TomEEEmbeddedApplicationRunner.LifecycleTasks(MyTask.class) // can start a ftp/sftp/elasticsearch/mongo/... server before tomee
+@TomEEEmbeddedApplicationRunner.Configurers(SetMyProperty.class)
+public class TheApp {
+    @RandomPort("http")
+    private int port;
+
+    @RandomPort("http")
+    private URL base;
+
+    @org.apache.openejb.testing.Configuration
+    public Properties add() {
+        return new PropertiesBuilder().p("programmatic", "property").build();
+    }
+
+    @PostConstruct
+    public void appStarted() {
+        // ...
+    }
+}
+----
+
+Then just start it with:
+
+[source,java]
+----
+TomEEEmbeddedApplicationRunner.run(TheApp.class, "some arg1", "other arg");
+----
+
+TIP: `@Classes(values)` and `@Jars` are supported too which can avoid a huge scanning if you run with a lot of not CDI dependencies which would boost the startup of your application.
diff --git a/src/main/jbake/content/blog/2016/03/new-website.adoc b/src/main/jbake/content/blog/2016/03/new-website.adoc
new file mode 100755
index 0000000..bbe331e
--- /dev/null
+++ b/src/main/jbake/content/blog/2016/03/new-website.adoc
@@ -0,0 +1,8 @@
+= New Website for Apache TomEE
+:jbake-date: 2016-03-17
+:jbake-type: post
+:jbake-tags: website
+:jbake-status: published
+:jbake-tomeepdf:
+
+Apache TomEE got a new website more modern and more user oriented.
diff --git a/src/main/jbake/content/blog/2017/tomee-7.0.3-released.adoc b/src/main/jbake/content/blog/2017/tomee-7.0.3-released.adoc
new file mode 100755
index 0000000..97fe733
--- /dev/null
+++ b/src/main/jbake/content/blog/2017/tomee-7.0.3-released.adoc
@@ -0,0 +1,106 @@
+= TomEE 7.0.3 Released
+:jbake-date: 2017-03-13
+:jbake-type: post
+:jbake-tags: website
+:jbake-status: published
+:jbake-tomeepdf:
+
+Aapche TomEE 7.0.3 just got released. It is available as usual on central
+or our download page.
+
+Most significant changes are linked to the dependency upgrades but several bugfixes can be interesting as well.
+
+The release note is the following one:
+
+                                
+== Bug
+
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1874[TOMEE-1874] -         Do not inject CDI if the application is being undeployed
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1897[TOMEE-1897] -         CdiResourceProvider masks critical error in InjectionException
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1965[TOMEE-1965] -         EntityManager(Factory) (and EntityManagerFactoryCallable) not serializable
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1967[TOMEE-1967] -         ObserverManager uses printStackTrace instead of logger.error
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1969[TOMEE-1969] -         Embedded maven plugin fails with java.lang.NoClassDefFoundError: org/apache/commons/beanutils/BeanUtils
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1970[TOMEE-1970] -         Configuration error can cause infinite loop
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1972[TOMEE-1972] -         dont initialize SystemInstance reading openejb.io.util.timeout
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1975[TOMEE-1975] -         authorization should be removed from the url for openejb-client
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1982[TOMEE-1982] -         @RunAs should only apply to nested calls, not the declaring bean ones
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1983[TOMEE-1983] -         NullPointerException is thrown from a consumer created by JMSContext when queue is empty
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1992[TOMEE-1992] -         JMSContext is not serializable, causing problems for Session and Transaction Scoped CDI beans
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1993[TOMEE-1993] -         When using symbolic links the @WebServlet is not processed
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1998[TOMEE-1998] -         moviefun-rest example not working with Tomee 7
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2007[TOMEE-2007] -         CUTask (ManagedExecutorService) can lead to NPE used from an EJB
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2009[TOMEE-2009] -         openejb.jpa.auto-scan should also add @Converter classes
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2012[TOMEE-2012] -         JPA 2.1 providers not always recognized
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2016[TOMEE-2016] -         7.0.2 (plus) Batch fails before batch starting
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2018[TOMEE-2018] -         connectionFactoryLookup and destinationLookup not supported for mdbs
+
+
+    
+== Dependency upgrade
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1966[TOMEE-1966] -         tomcat 8.5.11
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1986[TOMEE-1986] -         johnzon 1.0.0
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1987[TOMEE-1987] -         geronimo transaction/connector 3.1.4
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1990[TOMEE-1990] -         JCS 2.0
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1994[TOMEE-1994] -         Outdated serp version: Entites with Java 8 features not mapped
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1996[TOMEE-1996] -         OpenJPA 2.4.2
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1997[TOMEE-1997] -         OpenWebBeans 1.7.2
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2010[TOMEE-2010] -         cxf 3.1.10
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2011[TOMEE-2011] -         activemq 5.14.3
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2015[TOMEE-2015] -         jcs 2.1
+
+
+                
+== Improvement
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1976[TOMEE-1976] -         http ejbd client doesnt throw AuthorizationException for 401 errors
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1981[TOMEE-1981] -         Allow to disable TomEEJohnzonProvider
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2008[TOMEE-2008] -         when a lot of @PersistenceContext are in the app, org.apache.openejb.assembler.classic.EntityManagerFactoryCallable#getProvider makes startup slower
+
+
+                
+== New Feature
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1980[TOMEE-1980] -         basic.username and basic.password support for http ejbd client
+
+* link::https://issues.apache.org/jira/browse/TOMEE-1991[TOMEE-1991] -         add to org.apache.tomee.jul.handler.rotating.LocalFileHandler.PatternFormatter class and method as 7th and 8th parameters
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2005[TOMEE-2005] -         support to override arquillian protocol default value of adapters
+
+
+                                                    
+== Task
+
+* link::https://issues.apache.org/jira/browse/TOMEE-2002[TOMEE-2002] -         use ClassUnwrapper from cxf to slowly replace ClassHelper
+
+
+
diff --git a/src/main/jbake/content/blog/index.adoc b/src/main/jbake/content/blog/index.adoc
new file mode 100755
index 0000000..f6bf015
--- /dev/null
+++ b/src/main/jbake/content/blog/index.adoc
@@ -0,0 +1,6 @@
+= Blog
+:jbake-date: 2015-04-05
+:jbake-type: blog
+:jbake-tags: website
+:jbake-status: published
+:jbake-tomeepdf:
diff --git a/src/main/jbake/content/community/commercial.adoc b/src/main/jbake/content/community/commercial.adoc
new file mode 100755
index 0000000..bd6c3cf
--- /dev/null
+++ b/src/main/jbake/content/community/commercial.adoc
@@ -0,0 +1,31 @@
+= Commercial Support
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+This page is dedicated to companies offering products and services around or including Apache TomEE.
+
+The Apache TomEE PMC does not endorse or recommend any of the products or services on this page. We love all our supporters equally.
+
+Want to be added to this page? See at the bottom.
+
+=== Tomitribe
+
+Tomitribe is a company created by several founding members of the Apache TomEE community with the mission of uniting businesses using TomEE with responsible and sustainable Open Source. Our goal is to support both the community and fuel the success of business that rely TomEE with a complete set of consulting, training, and commercial support.
+
+
+=== ManageCat
+
+ManageCat is a cloud management and service platform for Apache Tomcat and Apache TomEE servers. Involving with a lot of Apache Java EE projects, we want to transfer not only our knowledge about Apache TomEE and also other Java EE technologies including JPA, EJB, CDI, JSF, JSTL, JTA, JMS. We will help our customers to develop and deploy their production based Java EE applications smoothly.
+
+=== I want to be added there
+
+To be listed in the Commercial Support send a link:../security/support.html[mail] to the Apache TomEE PMC with a description of your offerings and the text you would like to have added.
+
+==== Policy for additions
+The Apache TomEE PMC does not and cannot endorse or recommend any products or services.
+
+All submitted information must be factual and informational in nature and not be a marketing statement. Statements that promote your products and services over other offerings on the page will not be tolerated and will be removed. Such marketing statements can be added to your own pages on your own site.
+
+When in doubt, email the Apache TomEE PMC list (see link:../security/support.html[Mailing Lists]) and ask. We are be happy to help.
diff --git a/src/main/jbake/content/community/contributors.adoc b/src/main/jbake/content/community/contributors.adoc
new file mode 100755
index 0000000..1a700de
--- /dev/null
+++ b/src/main/jbake/content/community/contributors.adoc
@@ -0,0 +1,35 @@
+= Wall of fame
+:jbake-date: 2016-03-16
+:jbake-type: contributors
+:jbake-status: published
+
+----
+adc@apache.org* | Alan Cabrera | https://twitter.com/maguro/profile_image?size=bigger
+ammulder@apache.org* | Aaron Mulder | ../img/ammulder.png
+agumbrecht@tomitribe.com*
+dain@iq80.com*
+dblevins@apache.org*
+djencks@apache.org* | David Jencks
+dsh@apache.org* | Daniel Stefan Haischt | https://twitter.com/uebermodean/profile_image?size=bigger
+gawor@apache.org* | Jarek Gawor | https://twitter.com/jgawor/profile_image?size=bigger
+gdamour@apache.org* | Gianny Damour | ../img/gdamour.jpg
+genspring@apache.org* | Lin Quan Jiang | ../img/genspring.jpg
+hogstrom@apache.org* | Matt Richard Hogstrom | https://twitter.com/hogstrom/profile_image?size=bigger
+jgallimore@apache.org* | Jonathan Gallimore | https://twitter.com/jongallimore/profile_image?size=bigger
+jgenender@apache.org* | Jeff Genender | ../img/jgenender.jpg
+jlaskowski@apache.org* | Jacek Laskowski | https://twitter.com/jaceklaskowski/profile_image?size=bigger
+jlmonteiro@apache.org* | Jean-Louis Monteiro | https://twitter.com/JLouisMonteiro/profile_image?size=bigger
+jvanzyl@apache.org*
+jwhitlock@apache.org*
+kevan@apache.org* | Kevan Lee Miller | https://twitter.com/kevanmiller/profile_image?size=bigger
+kmalhi@apache.org* | Karan Singh Malhi | https://twitter.com/KrnMal/profile_image?size=bigger
+lajos@apache.org* | Lajos Moczar
+manugeorge@apache.org* | Manu George | ../img/manugeorge.jpg
+mnour@apache.org* | Mohammad Nour El-Din | ../img/mnour.jpg
+rickmcguire@apache.org* | Rick McGuire | ../img/rickmcguire.jpg
+rmannibucau@gmail.com*
+struberg@yahoo.de*
+tveronezi@apache.org*
+vishwanathk@apache.org* | Vishwanath | https://twitter.com/stratwine/profile_image?size=bigger
+xuhaihong@apache.org* | Haihong Xu | ../img/xuhaihong.jpg
+----
diff --git a/src/main/jbake/content/community/index.adoc b/src/main/jbake/content/community/index.adoc
new file mode 100755
index 0000000..1e4fd22
--- /dev/null
+++ b/src/main/jbake/content/community/index.adoc
@@ -0,0 +1,30 @@
+= Community
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+
+=== In code veritas est
+
+Want to grab TomEE source code and hack it? Nothing simpler, just go link:sources.html[there].
+
+=== Contributors
+
+You can see our wall of fame on: link:contributors.html[TomEE Wall Of Fame].
+
+=== Social Media: cause contributing is not only about coding
+
+Facebook, Twitter, Google+: if that speaks to you just follow this link:social.html[TomEE on Social Media].
+
+=== Support
+
+For more information about available support for TomEE please have a look on link:../security/support.html[Support] page.
+
+=== Contribute the this website
+
+This website is a simple JBake project you can find at http://svn.apache.org/repos/asf/tomee/site/trunk/generators/site-tomee-ng/.
+
+For more information please have a look to http://svn.apache.org/repos/asf/tomee/site/trunk/generators/site-tomee-ng/README.adoc
+and http://jbake.org/.
+
+To submit a change create a ticket on http://issues.apache.org/jira/browse/TOMEE and attach a diff
+with the content. Then a committer will review it and redeploy the website using Apache CMS.
diff --git a/src/main/jbake/content/community/social.adoc b/src/main/jbake/content/community/social.adoc
new file mode 100755
index 0000000..2658ac9
--- /dev/null
+++ b/src/main/jbake/content/community/social.adoc
@@ -0,0 +1,17 @@
+= Social
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:icons: font
+
+=== Facebook
+
+icon:facebook[size=2x] https://facebook.com/ApacheTomEE[TomEE @ Facebook]
+
+=== Twitter
+
+icon:twitter[size=2x] https://twitter.com/apachetomee[TomEE @ Twitter]
+
+=== Google+
+
+icon:google-plus[size=2x] https://plus.google.com/communities/105208241852045684449[TomEE @ Goole+]
diff --git a/src/main/jbake/content/community/sources.adoc b/src/main/jbake/content/community/sources.adoc
new file mode 100755
index 0000000..11c3de5
--- /dev/null
+++ b/src/main/jbake/content/community/sources.adoc
@@ -0,0 +1,63 @@
+= Sources
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+
+=== Github
+
+TomEE is on Github at https://github.com/apache/tomee . The sources are synchronized by Apache on Github
+but Pull/Requests are integrated with Apache Infrastructure which means you can just submit us a patch as
+you would do on any Github project and Apache takes care of the rest of the process.
+
+=== Apache Git
+
+TomEE is using https://git-scm.com/[Git] as source content manager.
+
+The master sources are on https://git-wip-us.apache.org/repos/asf/tomee.git and you can clone them using the following command:
+
+[source]
+----
+git clone https://git-wip-us.apache.org/repos/asf/tomee.git tomee-master
+----
+
+If you are interested in 1.7.x branch only just checkout the `tomee-1.7.x` branch:
+
+[source]
+----
+git clone -b tomee-1.7.x https://git-wip-us.apache.org/repos/asf/tomee.git tomee-1.7.x
+----
+
+Master branch is the more up to date version of the codebase and currently targets TomEE 7.x branch.
+
+=== Building
+
+TomEE is a standard Maven project and to build it you just have to use the following command:
+
+[source]
+----
+mvn clean install
+----
+
+TIP: you can need to tune your environment variable `MAVEN_OPTS`, a commonly use value is `-Xmx1536m -XX:PermSize=64m -XX:MaxPermSize=384m`
+
+NOTE: if you are interested in testing arquillian tests with all adapters of tomee you will need to activate the dedicated profile: `-Pall-adapters`.
+
+==== Fast build
+
+Here are some shortcut builds if you just want to create a specific artifact (note it skips tests but removing `-DskipTests` you will execute them):
+
+- TomEE zip/tar.gz:
+
+[source]
+----
+mvn clean install -DskipTests -pl tomee/apache-tomee -am
+----
+
+Then TomEE archives are at `tomee/apache/tomee/target/apache-tomee-${classifier}-${version}.${extension}`.
+
+=== Continuous Integration
+
+TomEE is using Buildbot for its continuous integration. You can access main builds (Ubuntu ones) at these address:
+
+- https://ci.apache.org/builders/tomee-trunk-ubuntu[TomEE Master]
+- https://ci.apache.org/builders/tomee-1.7.x-ubuntu[TomEE 1.7.x]
diff --git a/src/main/jbake/content/developer/classloading/index.adoc b/src/main/jbake/content/developer/classloading/index.adoc
new file mode 100755
index 0000000..af1fe1f
--- /dev/null
+++ b/src/main/jbake/content/developer/classloading/index.adoc
@@ -0,0 +1,59 @@
+= TomEE ClassLoading
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE ClassLoading is directly mapped to Tomcat one.
+
+ifndef::backend-pdf[]
+
+[#filetree.col-md-3]
+[
+    {
+        label: 'JVM',
+        description: 'The JVM classloader launching tomcat main(String[])',
+        children: [
+            {
+                label:'common.loader',
+                description:'Customizable in conf/catalina.properties, the common loader is the Tomcat classloader',
+                children: [
+                    {
+                        label:'shared.loader',
+                        description:'Optional layer where you can add libraries for the web applications not seen by Tomcat. It is generally not used and not encouraged since Tomcat 6',
+                        children: [
+                            {
+                                label:'webapp1',
+                                description:'loader of one of your wars, it container WEB-INF/classes, WEB-INF/lib/*.jar'
+                            },
+                            {
+                                label:'webapp2',
+                                description:'loader of another one of your wars, it container WEB-INF/classes, WEB-INF/lib/*.jar'
+                            },
+                            {
+                                label:'application1',
+                                description:'loader of another application, it can be an ear, it contains lib and ejbmodules of the ear',
+                                children: [
+                                    {
+                                        label:'earwebapp1',
+                                        description:'loader of one of the wars of the ear'
+                                    },
+                                    {
+                                        label:'earwebapp2',
+                                        description:'loader of the other webapp of the ear'
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ]
+            }
+        ]
+    }
+]
+
+[#filetreedetail.col-md-8.bs-callout.bs-callout-primary]
+Click on the tree (JVM) on the left to see the detail there.
+
+endif::[]
+
diff --git a/src/main/jbake/content/developer/configuration/cxf.adoc b/src/main/jbake/content/developer/configuration/cxf.adoc
new file mode 100755
index 0000000..6da508b
--- /dev/null
+++ b/src/main/jbake/content/developer/configuration/cxf.adoc
@@ -0,0 +1,94 @@
+= TomEE and CXF Configuration
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE relies on Apache CXF for JAX-WS and JAX-RS, it doesn't provides all CXF modules but most comomn
+ones for both specifications (JAX-RS is part of all distributions but JAX-WS is only part of plus one).
+
+== Configuration
+
+CXF API is reusable but you can also configure the interceptors through `openejb-jar.xml` (located in WEB-INF).
+
+If you want to configure JAX-RS you will use the prefix `cxf.jaxrs` and if you configure JAX-WS you use `cxf.jaxws` prefix.
+
+TIP: to configure directly the bus use `org.apache.openejb.cxf.bus.` prefix and configure it in `conf/system.properties`.
+
+To configure JAX-RS you need to add in `openejb-jar.xml` a `pojo-deployment`:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar>
+ <pojo-deployment class-name="jaxrs-application">
+   <properties>
+     # here will go the config
+   </properties>
+ </pojo-deployment>
+</openejb-jar>
+----
+
+For JAX-WS you will use a `pojo-deployment` matching the webservice class name for POJO webservices
+or an `ejb-deployment` instead of a `pojo-deployment` for EJB webservices:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar>
+ <ejb-deployment ejb-name="MyEJBWebService">
+   <properties>
+     # here will go the config
+   </properties>
+ </ejb-deployment>
+</openejb-jar>
+----
+
+Then once you selected your prefix and know where to write the config just use the following entries:
+
+- properties: server factory properties
+- features: CXF features
+- in-interceptors: CXF in interceptors
+- out-interceptors: CXF out interceptors
+- in-fault-interceptors: CXF in interceptors for fault handling
+- out-fault-interceptors: CXF out interceptors for fault handling
+- databinding: server databinding
+- providers (only for JAX-RS endpoint): list of JAX-RS providers
+- skip-provider-scanning (only for JAX-RS): is provider scanning on or not (default true)
+
+For features and interceptors the rule is the same: value is a list comma separated. Each value of the list is either a qualified class name or an id of a service in resources.xml.
+
+Databinding is simply either a qualified name or a service id in resources.xml (located in WEB-INF).
+
+== Sample for JAX-WS
+
+To configure WSS4J on the EJB `CalculatorBean` for instance add in openejb-jar.xml:
+
+[source,xml]
+----
+<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
+  <ejb-deployment ejb-name="CalculatorBean">
+    <properties>
+      cxf.jaxws.in-interceptors = wss4j
+    </properties>
+  </ejb-deployment>
+</openejb-jar>
+----
+
+With associated resources.xml which will define precisely the `wss4j` configuration:
+
+[source,xml]
+----
+<resources>
+  <Service id="wss4j" class-name="org.apache.openejb.server.cxf.config.WSS4JInInterceptorFactory" factory-name="create">
+    action = UsernameToken
+    passwordType = PasswordText
+    passwordCallbackClass = org.superbiz.ws.security.PasswordCallbackHandler
+  </Service>
+</resources>
+----
+
+== Sample for JAX-RS
+
+link:../json/index.html[JAX-RS JSON] page shows a sample dedicated to JAX-RS.
diff --git a/src/main/jbake/content/developer/ide/index.adoc b/src/main/jbake/content/developer/ide/index.adoc
new file mode 100755
index 0000000..2616b89
--- /dev/null
+++ b/src/main/jbake/content/developer/ide/index.adoc
@@ -0,0 +1,25 @@
+= TomEE and IDE
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE is supported by main IDE of the marker:
+
+- https://eclipse.org/downloads/[Eclipse]
+- https://www.jetbrains.com/idea/download/[Intellij Idea]
+- https://netbeans.org/downloads/[Netbeans]
+
+=== Eclipse
+
+Be the first to write this part!
+
+=== Idea
+
+Be the first to write this part!
+
+=== Netbeans
+
+Be the first to write this part!
+
+
diff --git a/src/main/jbake/content/developer/index.adoc b/src/main/jbake/content/developer/index.adoc
new file mode 100755
index 0000000..181b700
--- /dev/null
+++ b/src/main/jbake/content/developer/index.adoc
@@ -0,0 +1,13 @@
+= TomEE for Developers
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+- link:classloading/index.html[All you need to know about TomEE classloading]
+- link:ide/index.html[Eclipse, Intellij Idea, Netbeans]: TomEE in and IDE
+- link:testing/index.html[TomEE and Testing]
+- link:tools/index.html[TomEE and Tools]
+- link:json/index.html[TomEE and JSON]
+- link:configuration/cxf.html[TomEE CXF Configuration]
+- link:migration/tomee-1-to-7.html[Migrating from TomEE 1 to 7]
diff --git a/src/main/jbake/content/developer/json/index.adoc b/src/main/jbake/content/developer/json/index.adoc
new file mode 100755
index 0000000..ba39fb4
--- /dev/null
+++ b/src/main/jbake/content/developer/json/index.adoc
@@ -0,0 +1,206 @@
+= TomEE and JSON
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+Since TomEE 7.0, TomEE comes with Apache Johnzon.
+It means you can use JSON-P out of the box but also Johnzon Mapper
+which is the default JAX-RS provider for JSON.
+
+IMPORTANT: this is a breaking change with 1.x which was using jettison.
+This last one was relying on JAXB model to generate JSON which often led
+to unexpected JSON tree and some unexpected escaping too.
+
+== Getting started with Johnzon Mapper
+
+http://johnzon.apache.org/ will get more informations than this quick
+getting started but here are the basics of the mapping with Johnzon.
+
+The mapper uses a direct java to json representation.
+
+For instance this java bean:
+
+[source,java]
+----
+public class MyModel {
+  private int id;
+  private String name;
+  
+  // getters/setters
+}
+----
+
+will be mapped to:
+
+[source,java]
+----
+{
+  "id": 1234,
+  "name": "Johnzon doc"
+}
+----
+
+Note that Johnzon supports several customization either directly on the MapperBuilder of through annotations.
+
+=== @JohnzonIgnore
+
+@JohnzonIgnore is used to ignore a field. You can optionally say you ignore the field until some version
+if the mapper has a version:
+
+[source,java]
+----
+public class MyModel {
+  @JohnzonIgnore
+  private String name;
+  
+  // getters/setters
+}
+----
+
+Or to support name for version 3, 4, ... but ignore it for 1 and 2:
+
+
+[source,java]
+----
+public class MyModel {
+  @JohnzonIgnore(minVersion = 3)
+  private String name;
+  
+  // getters/setters
+}
+----
+
+=== @JohnzonConverter
+
+Converters are used for advanced mapping between java and json.
+
+There are several converter types:
+
+1. Converter: map java to json and the opposite based on the string representation
+2. Adapter: a converter not limited to String
+3. ObjectConverter.Reader: to converter from json to java at low level
+4. ObjectConverter.Writer: to converter from java to json at low level
+4. ObjectConverter.Codec: a Reader and Writer
+
+The most common is to customize date format but they all take. For that simple case we often use a Converter:
+
+[source,java]
+----
+public class LocalDateConverter implements Converter<LocalDate> {
+    @Override
+    public String toString(final LocalDate instance) {
+        return instance.toString();
+    }
+
+    @Override
+    public LocalDate fromString(final String text) {
+        return LocalDate.parse(text);
+    }
+}
+----
+
+If you need a more advanced use case and modify the structure of the json (wrapping the value for instance)
+you will likely need Reader/Writer or a Codec.
+
+Then once your converter developed you can either register globally on the MapperBuilder or simply decorate
+the field you want to convert with @JohnzonConverter:
+
+[source,java]
+----
+public class MyModel {
+  @JohnzonConverter(LocalDateConverter.class)
+  private LocalDate date;
+  
+  // getters/setters
+}
+----
+
+=== @JohnzonProperty
+
+Sometimes the json name is not java friendly (_foo or foo-bar or even 200 for instance). For that cases
+@JohnzonProperty allows to customize the name used:
+
+[source,java]
+----
+public class MyModel {
+  @JohnzonProperty("__date")
+  private LocalDate date;
+  
+  // getters/setters
+}
+----
+
+=== AccessMode
+
+On MapperBuilder you have several AccessMode available by default but you can also create your own one.
+
+The default available names are:
+
+* field: to use fields model and ignore getters/setters
+* method: use getters/setters (means if you have a getter but no setter you will serialize the property but not read it)
+* strict-method (default based on Pojo convention): same as method but getters for collections are not used to write
+
+You can use these names with setAccessModeName().
+
+=== Your own mapper
+
+Since johnzon is in tomee libraries you can use it yourself (if you use maven/gradle set johnzon-mapper as provided):
+
+[source,java]
+----
+final MySuperObject object = createObject();
+
+final Mapper mapper = new MapperBuilder().build();
+mapper.writeObject(object, outputStream);
+
+final MySuperObject otherObject = mapper.readObject(inputStream, MySuperObject.class);
+----
+
+== Johnzon and JAX-RS
+
+TomEE uses by default Johnzon as JAX-RS provider for versions 7.x. If you want however to customize it you need to follow this procedure:
+   
+1. Create a WEB-INF/openejb-jar.xml:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar>
+ <pojo-deployment class-name="jaxrs-application">
+   <properties>
+     # optional but requires to skip scanned providers if set to true
+     cxf.jaxrs.skip-provider-scanning = true
+     # list of providers we want
+     cxf.jaxrs.providers = johnzon,org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper
+   </properties>
+ </pojo-deployment>
+</openejb-jar>
+----
+
+2. Create a WEB-INF/resources.xml to define johnzon service which will be use to instantiate the provider
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<resources>
+ <Service id="johnzon" class-name="org.apache.johnzon.jaxrs.ConfigurableJohnzonProvider">
+   # 1M
+   maxSize = 1048576
+   bufferSize = 1048576
+
+   # ordered attributes
+   attributeOrder = $order
+
+   # Additional types to ignore
+   ignores = org.apache.cxf.jaxrs.ext.multipart.MultipartBody
+ </Service>
+
+ <Service id="order" class-name="com.company.MyAttributeSorter" />
+
+</resources>
+----
+
+Note: as you can see you mainly just need to define a service with the id johnzon (same as in openejb-jar.xml)
+and you can reference other instances using $id for services and @id for resources.
+
diff --git a/src/main/jbake/content/developer/migration/tomee-1-to-7.adoc b/src/main/jbake/content/developer/migration/tomee-1-to-7.adoc
new file mode 100644
index 0000000..5bf7153
--- /dev/null
+++ b/src/main/jbake/content/developer/migration/tomee-1-to-7.adoc
@@ -0,0 +1,33 @@
+= Migrate from TomEE 1 to TomEE 7
+:jbake-date: 2017-06-17
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+== Breaking changes
+
+- Artifact coordinates changes
+
+GroupId changed from `org.apache.openejb` to `org.apache.tomee`.
+It includes maven plugins which use now `org.apache.tomee.maven` and the `javaee-api`.
+
+Versions of openejb and tomee are now aligned on 7.x and you don't need to use
+4.x and 1.x (or any variant) for openejb and tomee.
+
+- JAX-RS 2 specification refined the sorting of providers. It can have side effects for message body
+readers/writers which don't define their target mediatype properly like Jackson which uses wildcard instead of
+a json related mediatype. To solve it register a custom provider redefining the media type.
+
+Can be as easy as:
+
+[source,java]
+----
+@Provider
+@Consumes("application/json")
+@Produces("application/json")
+public class MyAppJsonProvider extends JacksonJsonProvider {
+}
+----
+
+- JPA and CDI are linked now, enabling JPA to use CDI for its components but CDI can use JPA too...
+to solve issues with hibernate you need to add either as system property or persistence unit `tomee.jpa.factory.lazy = true`.
diff --git a/src/main/jbake/content/developer/testing/applicationcomposer/index.adoc b/src/main/jbake/content/developer/testing/applicationcomposer/index.adoc
new file mode 100755
index 0000000..64b5e48
--- /dev/null
+++ b/src/main/jbake/content/developer/testing/applicationcomposer/index.adoc
@@ -0,0 +1,335 @@
+= ApplicationComposer: The TomEE Swiss Knife
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+ApplicationComposer API is mainly contained in org.apache.openejb.testing package (historically, today we would have called the package org.apache.tomee.applicationcomposer).
+
+=== Dependencies
+
+To start using ApplicationComposer you need to add some dependencies.
+
+The minimum required one is openejb-core:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>openejb-core</artifactId>
+  <version>${openejb.version></version>
+</dependency>
+----
+
+If you need JAXRS services you'll add (or replace thanks to transitivity of maven) openejb-cxf-rs:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>openejb-cxf-rs</artifactId>
+  <version>${openejb.version></version>
+</dependency>
+----
+
+If you need JAXWS services you'll add (or replace thanks to transitivity of maven) openejb-cxf:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>openejb-cxf</artifactId>
+  <version>${openejb.version></version>
+</dependency>
+----
+
+=== ApplicationComposer Components
+
+==== @Module
+An ApplicationComposer needs at minimum a module (the application you need to deploy).
+
+To do so you have two cases:
+
+before TomEE 7.x: you can only write method(s) decorated with @Module
+since TomEE 7.x: you can skip it and use @Classes directly on the ApplicationComposer class as a shortcut for:
+
+[source,java]
+----
+@Module public WebApp app() { return new WebApp(); }
+----
+
+The expected returned type of these methods are in org.apache.openejb.jee package:
+
+- Application: entry point to create an ear
+- WebApp: a web application
+- EjbJar: an ejb module
+- EnterpriseBean children: a simple EJB
+- Persistence: a persistence module with multiple units
+- PersistenceUnit: a simple unit (automatically wrapped in a Persistence)
+- Connector: a JCA connector module
+- Beans: a CDI module,
+- Class[] or Class: a set of classes scanned to discover annotations
+
+Note that for easiness @Classes was added to be able to describe a module and some scanned classes. For instance the following snippet will create a web application with classes C1, C2 as CDI beans and E1 as an EJB automatically:
+
+[source,java]
+----
+@Module
+@Classes(cdi = true, value = { C1.class, C2.class, E1.class })
+public WebApp app() {
+    return new WebApp();
+}
+----
+
+==== @Configuration
+Often you need to customize a bit the container or at least create some resources like test databases. To do so you can create a method returning Properties which will be the container properties.
+
+Note: to simplify writing properties you can use PropertiesBuilder util class which is just a fluent API to write properties.
+
+In these properties you can reuse OpenEJB/TomEE property syntax for resources.
+
+Here is a sample:
+
+[source,java]
+----
+@Configuration
+public Properties configuration() {
+    return new PropertiesBuilder()
+        .p("db", "new://Resource?type=DataSource")
+        .p("db.JdbcUrld", "jdbc:hsqldb:mem:test")
+        .build();
+}
+----
+
+Since TomEE 7.x you can also put properties on ApplicationComposer class using @ContainerProperties API:
+
+[source,java]
+----
+@ContainerProperties({
+  @ContainerProperties.Property(name = "db", value = "new://Resource?type=DataSource"),
+  @ContainerProperties.Property(name = "db.JdbcUrl", value = "jdbc:hsqldb:mem:test")
+})
+public class MyAppComposer() {
+  // ...
+}
+----
+
+==== @Component
+Sometimes you need to customize a container component. The most common use case is the security service to mock a little bit authorization if you don't care in your test.
+
+To do so just write a method decorated with @Component returning the instance you desire.
+
+Components in TomEE are stored in a container Map and the key needs to be a Class. This one is deduced from the returned type of the @Component method:
+
+[source,java]
+----
+@Component
+public SecurityService mockSecurity() {
+    return new MySecurityService();
+}
+----
+
+==== @Descriptors
+You can reuse existing file descriptors using @Descriptors. The name is the file name and the path either a classpath path or a file path:
+
+[source,java]
+----
+// runner if needed etc...
+@Descriptors(@Descriptor(name = "persistence.xml", path = "META-INF/persistence.xml"))
+public class MyTest {
+   //...
+}
+----
+
+Note: this can be put in a @Module method as well.
+
+==== Services
+If you want to test a JAXRS or JAXWS service you need to activate these services.
+
+To do so just add the needed dependency and use @EnableServices:
+
+[source,java]
+----
+// runner if needed etc...
+@EnableService("jaxrs") // jaxws supported as well
+public class MyTest {
+   //...
+}
+----
+
+==== Random port
+Services like JAXRS and JAXWS relies on HTTP. Often it is nice to have a random port to be able to deploy multiple tests/projects on the same CI platform at the same time.
+
+To shortcut all the needed logic you can use @RandomPort. It is simply an injection giving you either the port (int) or the root context (URL):
+
+[source,java]
+----
+// runner, services if needed etc...
+public class MyTest {
+   @RandomPort("http")
+   private int port;
+}
+----
+
+Note: you can generate this way multiple ports. The value is the name of the service it will apply on (being said http is an alias for httpejbd which is our embedded http layer).
+
+==== Nice logs
+@SimpleLog annotation allows you to have one liner logs
+
+==== @JaxrsProvider
+@JaxrsProvider allows you to specify on a @Module method the list of JAXRS provider you want to use.
+
+==== Dependencies without hacky code
+@Jars allows you to add dependencies (scanned) to your application automatically (like CDI libraries):
+
+[source,java]
+----
+@Module
+@Classes(cdi = true, value = { C1.class, C2.class, E1.class })
+@Jars("deltaspike-")
+public WebApp app() {
+    return new WebApp();
+}
+----
+
+==== @Default
+@Default (openejb one not CDI one) automatically adds in the application target/classes as binaries and src/main/webapp as resources for maven projects.
+
+==== @CdiExtensions
+This annotation allows you to control which extensions are activated during the test.
+
+==== @AppResource
+This annotation allows injection of few particular test resources like:
+
+the test AppModule (application meta)
+the test Context (JNDI)
+the test ApplicationComposers (underlying runner)
+ContextProvider: allow to mock JAXRS contexts
+
+==== @MockInjector
+Allows to mock EJB injections. It decorates a dedicated method returning an instance (or Class) implementing FallbackPropertyInjector.
+
+==== @WebResource
+Allow for web application to add folders containing web resources.
+
+
+=== How to run it?
+==== JUnit
+If you use JUnit you have mainly 2 solutions to run you "model" using the ApplicationComposer:
+
+using ApplicationComposer runner:
+
+[source,java]
+----
+@RunWith(ApplicationComposer.class) public class MyTest { // ... }
+----
+
+using ApplicationComposerRule rule:
+public class MyTest { @Rule // or @ClassRule if you want the container/application lifecycle be bound to the class and not test methods public final ApplicationComposerRule rule = new ApplicationComposerRule(this); }
+
+Tip: since TomEE 7.x ApplicationComposerRule is decomposed in 2 rules if you need: ContainerRule and DeployApplication. Using JUnit RuleChain you can chain them to get the samebehavior as ApplicationComposerRule or better deploy multiple ApplicationComposer models and controlling their deployment ordering (to mock a remote service for instance).
+
+Finally just write `@Test` method using test class injections as if the test class was a managed bean!
+
+==== TestNG
+TestNG integration is quite simple today and mainly ApplicationComposerListener class you can configure as a listener to get ApplicationComposer features.
+
+Finally just write TestNG @Test method using test class injections as if the test class was a managed bean!
+
+==== Standalone
+Since TomEE 7.x you can also use ApplicationComposers to directly run you ApplicationComposer model as a standalone application:
+
+[source,java]
+----
+public class MyApp {
+    public static void main(String[] args) {
+        ApplicationComposers.run(MyApp.class, args);
+    }
+
+    // @Module, @Configuration etc...
+}
+----
+
+Tip: if MyApp has `@PostConstruct` methods they will be respected and if MyApp has a constructor taking an array of String it will be instantiated getting the second parameter as argument (ie you can propagate your main parameter to your model to modify your application depending it!)
+
+=== JUnit Sample
+
+[source,java]
+----
+@Classes(cdi = true, value = { MyService.class, MyOtherService.class })
+@ContainerProperties(@ContainerProperties.Property(name = "myDb", value = "new://Resource?type=DataSource"))
+@RunWith(ApplicationComposer.class)
+public class MyTest {
+    @Resource(name = "myDb")
+    private DataSource ds;
+
+    @Inject
+    private MyService service;
+
+    @Test
+    public void myTest() {
+        // do test using injections
+    }
+}
+----
+
+=== Start and Deploy once
+
+When having a huge suite of test it can be long to start/deploy/undeploy/shutdown he container/application for each method.
+
+That's why `SingleApplicationComposerRunner` allows to just reuse the same instance accross several test.
+
+The first test will start and deploy the application and then other tests will reuse this instance until the JVM is destroyed
+where the server/application will be undeployed/shutdown.
+
+
+Here a simple usage:
+
+[source,java]
+----
+import org.apache.openejb.testing.SingleApplicationComposerRunner;
+// other imports
+
+@RunWith(SingleApplicationComposerRunner.class)
+public class MyTest {
+    @Inject
+    private ACdiBean bean;
+
+    @Application
+    private TheModel model;
+
+    @Test
+    public void aTest() {
+        // ...
+    }
+}
+----
+
+TIP: if you need a real TomEE container then you can have a look to `TomEEEmbeddedSingleRunner` which does deploys the classpath
+using tomee-embedded.
+
+==== Configure what to deploy
+
+As all tests will reuse the same application the model (the class declaring the application with `@Classes`, `@Module` etc...) needs to be extracted from the test class itself.
+
+The application lookup uses this strategy (ordered):
+
+- the fully qualified name is read from the system property `tomee.application-composer.application`
+- a *single* class decorated with `@Application` is looked in the jar/folder containing the test class
+
+If you have several "groups" you can use JUnit `@Category` to differentiate them and write one application class by category. Then
+in `surefire` plugin you declare two `executions` enforcing the system property `tomee.application-composer.application` for each of them
+and the associated `@Category`.
+
+==== Available injections
+
+- If the application model class uses `@RandomPort` then the test classes can get it as well
+- CDI injections are supported
+- `@Application` on a field allows to get the application model to get injected
+
+Compared to a standalone usage it misses all other EE injections (`@PersistenceContext`, `@Resource` etc... but you can inject them in the application model
+and just expose them or wrap them in your tests thanks to the `@Application` field.
+
+
+=== Going further
+If you want to learn more about ApplicationComposer see link:../../../advanced/applicationcomposer/index.html[ApplicationComposer Advanced] page.
diff --git a/src/main/jbake/content/developer/testing/arquillian/index.adoc b/src/main/jbake/content/developer/testing/arquillian/index.adoc
new file mode 100755
index 0000000..16f0538
--- /dev/null
+++ b/src/main/jbake/content/developer/testing/arquillian/index.adoc
@@ -0,0 +1,421 @@
+= TomEE and Arquillian
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE has several arquillian adapter flavors:
+
+- openejb-embedded: a plain embedded OpenEJB supporting most of EE features
+- tomee-embedded: a full TomEE running in the same JVM
+- tomee-remote: a standard TomEE running in its own process as in production
+- tomee-webapp (not recommanded): an adapter starting from a Tomcat and installing tomee-webapp
+
+=== Embedded or Remote?
+
+Big advantage of embedded adapters is to be able to debug as usual. However it has few drawbacks which can make you
+rething this choice:
+
+- JVM resources are available where it will likely not be the case in war mode (src/main/resources typically)
+- You can mix server and client side features when writing a test
+- Classloading is a bit different by design and less isolated (test dependencies) so you can get runtime surprises when really deploying
+
+To summarize: the choice is the trade off you choose between easiness and reality of the simulation.
+
+TIP: in TomEE build we build the same tests against all tomee adapters in the same build/module, this means you can use embedded adapter in dev
+and activate remote tomee too (not only cause then if there is a failure you don't know if you missed it locally or if it is due
+to the switch of adapter) on your continuous integration platform.
+
+NOTE: all configurations have defaults
+
+=== OpenEJB Embedded
+
+==== Coordinates
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>arquillian-openejb-embedded</artifactId>
+  <version>${tomee7.version}
+</dependency>
+----
+
+==== arquillian.xml
+
+|===
+|Name|Description
+|properties|container properties, as in conf/system.properties (not in xml format)
+|preloadClasses|some class to load (ie enforce static block initialization)
+|startDefaultScopes|should CDI default scopes be started (includes @RequestScoped)
+|singleDeploymentByArchiveName |names of archives (or true for all) to dploy a single time
+|===
+
+Sample:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<arquillian
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+  <container qualifier="openejb" default="true">
+    <configuration>
+      <property name="properties">
+        # used to not have a single DataSource and be able to test the resource resolution
+        db1 = new://Resource?type=DataSource
+        db1.JdbcUrl = jdbc:hsqldb:mem:db1
+
+        # will preload both classes, simple comma separated qualified names work too
+        openejb.arquillian.predeploy-archives = org.company.openejb.arquillian.openejb.archive.[SimpleArchive|SimpleArchive2]
+      </property>
+    </configuration>
+  </container>
+</arquillian>
+----
+
+=== TomEE Embedded
+
+==== Coordinates
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>arquillian-tomee-embedded</artifactId>
+  <version>${tomee7.version}
+</dependency>
+----
+
+==== Configuration
+
+|===
+|Name|Description
+| exportConfAsSystemProperty|export system properties with adapter prefix(es) (ex: httpPort will be set as tomee.httpPort)
+| httpsPort | the HTTPS port
+| httpPort  | the HTTP port
+| stopPort   | the shutdown port
+| dir    | where to create the TomEE work dir (a fake file layout is created for Tomcat needs)
+| appWorkingDir     | where to dump applications (`@Deployment`)
+| host      | which host to use
+| stopHost       | which port to use to shutdown TomEE (port on Server configuration)
+| stopCommand       | which command to use to shutdown TomEE
+| serverXml       | where is the provided server.xml
+| portRange        | when port are set to -1 TomEE adapter will generate an available port, if specified the range will be used
+| preloadClasses        | which classes to initialize during container startup
+| quickSession         | should the session use a Random instead of SecureRandom (useful when the machine doesn't have a lot of entropy)
+| unsafeEjbd         | should EJB allow all classes
+| unpackWars          | unpackWARs value in server.xml
+| properties           | container properties
+| webContextToUseWithEars           |sometimes you can need this to adjust which context the adapter uses to find the ArquillianServletRunner
+| keepServerXmlAsThis           |don't replace ports etc in server.xml and use it like it has been provided when serverXml is set
+| singleDumpByArchiveName           | dump only once `@Deployment` archives using the name as key
+| singleDeploymentByArchiveName            |deploy only once `@Deployment` archives using the name as key
+|ssl| should https be activated
+|withEjbRemote| should EJBd remote be activated
+|keystoreFile | if ssl is set to true the keystore location
+|keystorePass | if ssl is set to true the keystore password
+|keystoreType  | if ssl is set to true the keystore type
+|clientAuth  |should SSL connector use clientAuth
+|keyAlias  | if ssl is set to true the key to use
+|sslProtocol  | if ssl is set to true the protocol to use
+|users  |a map of users (properties syntax)
+|roles  |user roles (properties syntax)
+|webResourcesCached   |should resources be cached or not (`DefaultServlet` caching)
+|===
+
+
+Sample:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+  http://jboss.org/schema/arquillian
+  http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <container qualifier="tomee" default="true">
+  <configuration>
+   <property name="serverXml">conf/server.xml</property>
+
+   <!-- port = -1 means random -->
+   <property name="httpPort">-1</property>
+   <property name="stopPort">-1</property>
+
+   <!-- ssl -->
+   <property name="httpsPort">-1</property>
+   <property name="ssl">false</property>
+   <property name="keystoreFile">keystore-path</property>
+   <property name="keystorePass">changeit</property>
+   <property name="keystoreType">JKS</property>
+   <property name="clientAuth">false</property>
+   <property name="keyAlias">alias</property>
+   <property name="sslProtocol">protocol</property>
+
+   <!-- where to create TomEE files -->
+   <property name="dir">target/tomee-embedded</property>
+
+   <!-- where to dump on disk applications to deploy -->
+   <property name="appWorkingDir">target/working-dir</property>
+
+   <!-- optional - limit the port allowed when random -->
+   <property name="portRange">20001-30000</property>
+
+   <!-- container config -->
+   <property name="properties">
+    # same as embedded case
+   </property>
+
+   <!-- Deployer config -->
+   <property name="deployerProperties">
+    # openejb.deployer.binaries.use=true
+    # openejb.deployer.forced.appId=[name]
+    # openejb.deployer.save-deployments=false
+   </property>
+  </configuration>
+ </container>
+</arquillian>
+----
+
+=== TomEE Remote
+
+IMPORTANT: if a server is already started on host:port then it will be used instead of starting the configured TomEE type.
+
+To use a custom instance with arquillian ensure to have ejbd and tomee webapp activated. A way is to have in `conf/system.properties` these entries:
+
+[source]
+----
+tomee.remote.support=true
+openejb.system.apps=true
+
+# you can customize it depending the security level you need on the instance
+tomee.serialization.class.whitelist =
+tomee.serialization.class.blacklist = org.codehaus.groovy.runtime.,org.apache.commons.collections.functors.,org.apache.xalan,java.lang.Process
+----
+
+For really remote instances (= not on localhost) you need the `deployerProperties` of previous snippet too:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+  http://jboss.org/schema/arquillian
+  http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <container qualifier="tomee" default="true">
+  <configuration>
+   <!-- ... -->
+   <property name="deployerProperties">
+    openejb.deployer.binaries.use=true
+    openejb.deployer.save-deployments=false
+   </property>
+  </configuration>
+ </container>
+</arquillian>
+----
+
+==== Coordinates
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>arquillian-tomee-remote</artifactId>
+  <version>${tomee7.version}
+</dependency>
+----
+
+==== Configuration
+
+|===
+|Name|Description
+| exportConfAsSystemProperty|export system properties with adapter prefix(es) (ex: httpPort will be set as tomee.httpPort)
+| httpsPort | the HTTPS port
+| httpPort  | the HTTP port
+| stopPort   | the shutdown port
+| dir    | where to create the TomEE work dir (a fake file layout is created for Tomcat needs)
+| appWorkingDir     | where to dump applications (`@Deployment`)
+| host      | which host to use
+| stopHost       | which port to use to shutdown TomEE (port on Server configuration)
+| stopCommand       | which command to use to shutdown TomEE
+| serverXml       | where is the provided server.xml
+| portRange        | when port are set to -1 TomEE adapter will generate an available port, if specified the range will be used
+| preloadClasses        | which classes to initialize during container startup
+| quickSession         | should the session use a Random instead of SecureRandom (useful when the machine doesn't have a lot of entropy)
+| unsafeEjbd         | should EJB allow all classes
+| unpackWars          | unpackWARs value in server.xml
+| properties           | container properties
+| webContextToUseWithEars           |sometimes you can need this to adjust which context the adapter uses to find the ArquillianServletRunner
+| keepServerXmlAsThis           |don't replace ports etc in server.xml and use it like it has been provided when serverXml is set
+| singleDumpByArchiveName           | dump only once `@Deployment` archives using the name as key
+| singleDeploymentByArchiveName            |deploy only once `@Deployment` archives using the name as key
+|groupId|the maven groupId of the TomEE (or not) artifact
+|artifactId|the maven artifactId of the TomEE (or not) artifact
+|version |the maven version of the TomEE (or not) artifact
+|classifier |the maven classifier of the TomEE (or not) artifact
+|type  |the maven type of the TomEE (or not) artifact (should be zip)
+|removeUnusedWebapps   |should default webapps (ROOT, manager, ...) be removed
+|ajpPort   |the ajp port if used
+|conf  |a folder to synchronize with TomEE conf folder
+|bin  |a folder to synchronize with TomEE bin folder
+|lib  |a folder to synchronize with TomEE lib folder
+|endorsed   |a folder to synchronize with TomEE endorsed folder
+|javaagent   |a list (flat format) of javaagent to add when launching tomee, can use maven coordinates if prefixed with `mvn:`
+|additionalLibs   |a list (flat format) of library to add to TomEE libraries, can use paths of maven coordinates when prefixed with `mvn:`
+|cleanOnStartUp   |should TomEE folder be deleted on startup if exists
+|debug   |should the container run in debug mode (`-Dopenejb.server.debug=true` activates it without touching the configuration)
+|debugPort   |if activated which port to use to debug
+|catalina_opts   |equivalent to `CATALINA_OPTS` environment variable
+|simple_log   |should logs be inline
+|deployerProperties    |deployer properties, useful when not deploying on an instance managed by the build (remote instance typically)
+|===
+
+
+Sample:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+  http://jboss.org/schema/arquillian
+  http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <container qualifier="tomee" default="true">
+  <configuration>
+   <property name="serverXml">conf/server.xml</property>
+
+   <!-- tomee zip to use -->
+   <property name="groupId">org.apache.tomee</property>
+   <property name="artifactId">apache-tomee</property>
+   <property name="version">LATEST</property>
+   <property name="type">zip</property>
+
+   <!-- tomee provided files, ignored by default -->
+   <property name="bin">src/test/tomee/bin</property>
+   <property name="conf">src/test/tomee/conf</property>
+   <property name="lib">src/test/tomee/lib</property>
+
+   <!--
+    remote debugging,
+    -Dopenejb.server.debug can activate it too
+   -->
+   <property name="debug">false</property>
+   <property name="debugPort">5005</property>
+
+   <!-- nice one line logging -->
+   <property name="simpleLog">true</property>
+
+   <!-- jvm config -->
+   <property name="catalina_opts">-XX:-UseParallelGC</property>
+
+   <!-- remove if exist -->
+   <property name="cleanOnStartUp">true</property>
+
+   <!-- remove default webapps -->
+   <property name="removeunusedWebapps">true</property>
+
+   <!-- port = -1 means random -->
+   <property name="httpPort">-1</property>
+   <property name="stopPort">-1</property>
+
+   <!-- where to create TomEE -->
+   <property name="dir">target/apache-tomee</property>
+
+   <!-- where to dump on disk applications to deploy -->
+   <property name="appWorkingDir">target/working-dir</property>
+
+   <!-- optional - limit the port allowed when random -->
+   <property name="portRange">20001-30000</property>
+
+   <!-- container config -->
+   <property name="properties">
+    # same as embedded case
+   </property>
+
+   <!-- we monitor the test with sirona -->
+   <property name="javaagent">
+     mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
+   </property>
+
+   <!-- Deployer config -->
+   <property name="deployerProperties">
+    # openejb.deployer.binaries.use=true
+    # openejb.deployer.forced.appId=[name]
+    # openejb.deployer.save-deployments=false
+   </property>
+
+  </configuration>
+ </container>
+</arquillian>
+----
+
+=== Multiple instances
+
+With arquillian you can create cluster or isolated instances. Here is a sample `arquillian.xml`:
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="
+    http://jboss.org/schema/arquillian
+    http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <group qualifier="tomee-cluster">
+  <container qualifier="tomee-1">
+   <configuration>
+    <property name="httpPort">-1</property>
+    <property name="stopPort">-1</property>
+    <property name="ajpPort">-1</property>
+    <property name="dir">target/tomee1</property>
+    <property name="appWorkingDir">target/wd1</property>
+   </configuration>
+  </container>
+  <container qualifier="tomee-2">
+   <configuration>
+    <property name="httpPort">-1</property>
+    <property name="stopPort">-1</property>
+    <property name="ajpPort">-1</property>
+    <property name="dir">target/tomee2</property>
+    <property name="appWorkingDir">target/wd2</property>
+   </configuration>
+  </container>
+ </group>
+</arquillian>
+----
+
+Then in your test just specify the container you are testing against:
+
+[source,java]
+----
+@RunWith(Arquillian.class)
+public class MultipleTomEETest {
+ @Deployment(name = "war1", testable = false)
+ @TargetsContainer("tomee-1")
+ public static WebArchive war1() {
+  return /* ... */;
+ }
+
+ @Deployment(name = "war2", testable = false)
+ @TargetsContainer("tomee-2")
+ public static WebArchive war2() {
+  return /* ... */;
+ }
+
+ @Test
+ @OperateOnDeployment("war1")
+ public void testRunningInDep1(
+    @ArquillianResource URL url) {
+   // test on tomee 1, url is contextual
+ }
+
+ @Test
+ @OperateOnDeployment("war2")
+ public void testRunningInDep1(
+    @ArquillianResource URL url) {
+   // test on tomee 1, url is contextual
+ }
+}
+----
diff --git a/src/main/jbake/content/developer/testing/index.adoc b/src/main/jbake/content/developer/testing/index.adoc
new file mode 100755
index 0000000..66e562c
--- /dev/null
+++ b/src/main/jbake/content/developer/testing/index.adoc
@@ -0,0 +1,9 @@
+= TomEE and Testing
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+- link:applicationcomposer/index.html[`ApplicationComposer`]: lightweight tests
+- link:arquillian/index.html[Arquillian]: the de facto standard for EE tests
+- link:other/index.html[Going futher]: OpenEJB JUnit, TomEE Embedded...
diff --git a/src/main/jbake/content/developer/testing/other/index.adoc b/src/main/jbake/content/developer/testing/other/index.adoc
new file mode 100755
index 0000000..b1d41b1
--- /dev/null
+++ b/src/main/jbake/content/developer/testing/other/index.adoc
@@ -0,0 +1,134 @@
+= Other Testing Techniques
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== EJBContainer
+
+The `EJBContainer` API is a JavaEE API enriched by some OpenEJB features to make the testing easier.
+
+It starts a container (embedded for case we are interested in) scanning the classpath. This operation can be
+slow and if you go with this solution maybe think to start it only once for all tests.
+
+==== Sample
+
+[source,java]
+----
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.inject.Inject;
+import javax.naming.NamingException;
+
+import static org.junit.Assert.assertTrue;
+
+public class ATest {
+    @Inject
+    private MyCDIBean aBean;
+
+    @PersistenceContext
+    private EntityManager em;
+
+    @Resource
+    private DataSource ds;
+
+    @BeforeClass
+    public static void start() throws NamingException {
+        container = EJBContainer.createEJBContainer();
+    }
+
+    @AfterClass
+    public static void shutdown() {
+        if (container != null) {
+            container.close();
+        }
+    }
+
+    @Before
+    public void inject() throws NamingException {
+        container.getContext().bind("inject", this);
+    }
+
+    @After
+    public void reset() throws NamingException {
+        container.getContext().unbind("inject");
+    }
+
+    @Test
+    public void aTest() {
+        // ...
+    }
+}
+----
+
+It will use `createEJBContainer()` method to start the container and application, and `close()` to shutdown it.
+
+OpenEJB provides the `bind("inject")` hack to be able to get injection in the test class.
+
+=== OpenEJB JUnit
+
+`openejb-junit` is another artifact providing some facilities for testing.
+
+==== EJBContainer Rule
+
+[source,java]
+----
+@Properties({
+    @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit.*")
+})
+public class TestEJBContainerDefaultConfig {
+    @Rule
+    public final EJBContainerRule containerRule = new EJBContainerRule(this);
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private Context ctx;
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private java.util.Properties props;
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private EJBContainer container;
+
+
+    @Test
+    public void configIsHere() {
+        // ...
+    }
+}
+
+----
+
+TIP: there is the equivalent runner: `@RunWith(EJBContainerRunner.class)`
+
+==== InjectRule: injections for EJBContainerRule
+
+[source,java]
+----
+@Properties({
+    @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*myjar.*")
+})
+public class TestEJBContainerRule {
+    @ClassRule
+    public static final EJBContainerRule CONTAINER_RULE = new EJBContainerRule();
+
+    @Rule
+    public final InjectRule injectRule = new InjectRule(this, CONTAINER_RULE);
+
+    @EJB
+    private BasicEjbLocal ejb;
+
+    @Test
+    public void aTest() {
+        // ...
+    }
+}
+----
+
+TIP: an alternative in `openejb-core` is to use `org.apache.openejb.Injector.inject(instance)`
diff --git a/src/main/jbake/content/developer/tools/gradle-plugins.adoc b/src/main/jbake/content/developer/tools/gradle-plugins.adoc
new file mode 100755
index 0000000..fe43434
--- /dev/null
+++ b/src/main/jbake/content/developer/tools/gradle-plugins.adoc
@@ -0,0 +1,50 @@
+= TomEE Gradle Plugin
+:jbake-date: 2016-05-31
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE provides a gradle plugin for tomee-embedded "à la Jetty".
+
+[source,java]
+----
+buildscript {
+   repositories {
+       mavenCentral()
+   }
+
+   dependencies {
+       classpath 'org.apache.tomee.gradle:tomee-embedded:7.0.0'
+   }
+}
+
+apply plugin: 'org.apache.tomee.tomee-embedded'
+
+// ...
+----
+
+Then just start tomee with:
+
+[source]
+----
+gradle tomee-embedded -i
+----
+
+== Configuration
+
+All the configuration is optional.
+
+[source,java]
+----
+// plugin setup
+def tomeeEmbedded = extensions.getByName('tomee-embedded')
+tomeeEmbedded.tomeeVersion = 'other version'
+tomeeEmbedded.skipDefaultRepository  = true // don't use central to retrieve tomee
+
+// container dependencies
+def tomeeEmbeddedDeps = configurations.getByName('tomee-embedded')
+// add dependencies you need to this configuration
+----
+
+tomee-embedded task has several more advanced configuration like tomee properties, modules to deploy etc...
+Its configuration is pretty close to link:maven/embedded.html[Embedded Maven Plugin].
diff --git a/src/main/jbake/content/developer/tools/index.adoc b/src/main/jbake/content/developer/tools/index.adoc
new file mode 100755
index 0000000..713638e
--- /dev/null
+++ b/src/main/jbake/content/developer/tools/index.adoc
@@ -0,0 +1,8 @@
+= TomEE developer tools
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+- link:maven-plugins.html[Maven Plugins]
+- link:gradle-plugins.html[Gradle Plugin]
diff --git a/src/main/jbake/content/developer/tools/maven-plugins.adoc b/src/main/jbake/content/developer/tools/maven-plugins.adoc
new file mode 100755
index 0000000..3f335d2
--- /dev/null
+++ b/src/main/jbake/content/developer/tools/maven-plugins.adoc
@@ -0,0 +1,12 @@
+= TomEE Maven Plugins
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE provides several maven plugins:
+
+- one for a link:maven/tomee.html[standalone TomEE]
+- one for link:maven/embedded.html[TomEE embedded]
+- one for link:maven/applicationcomposer.html[application composer] based applications
+- Note: there is one for `EJBContainer` but this one is easily replaced by one of the previous in general
diff --git a/src/main/jbake/content/developer/tools/maven/applicationcomposer.adoc b/src/main/jbake/content/developer/tools/maven/applicationcomposer.adoc
new file mode 100755
index 0000000..8694c37
--- /dev/null
+++ b/src/main/jbake/content/developer/tools/maven/applicationcomposer.adoc
@@ -0,0 +1,47 @@
+= Application Composer Maven Plugin
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+This plugin has two goal:
+
+- `applicationcomposer:run`: to start the application from mvn command line
+- `applicationcomposer:zip`: to package a zip with dependencies and start scripts
+
+IMPORTANT: the dependencies are retrieved with `MavenProject.getArtifacts()` which means you artifacts should be a `war`
+- maven doesn't populate it with a `jar` - and the compile phase - at least - should be passed to ensure it is populated.
+
+=== Run goal configuration
+
+[source]
+----
+mvn process-classes applicationcomposer:run -DskipTests
+----
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default | Description
+| args | - | a list of application arguments
+|application|-|application qualified name
+|binaries|${project.build.outputDirectory}|where is your module code (target/classes)
+|mavenLog|true|force to use maven logging in openejb
+|===
+
+=== Zip goal configuration
+
+[source]
+----
+mvn process-classes applicationcomposer:zip -DskipTests
+----
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default | Description
+|workDir|${project.build.directory}/${project.build.finalName}-applicationcomposer| where the container can "work" and create temp files
+|zip|${project.build.directory}/${project.build.finalName}-applicationcomposer.zip| where to create the zip
+|attach|true|attach the created artifact
+|classifier|-|artifact classifier if needed
+|application|-|application qualified name
+|binaries|${project.build.outputDirectory}|where is your module code (target/classes)
+|===
diff --git a/src/main/jbake/content/developer/tools/maven/embedded.adoc b/src/main/jbake/content/developer/tools/maven/embedded.adoc
new file mode 100755
index 0000000..6e27054
--- /dev/null
+++ b/src/main/jbake/content/developer/tools/maven/embedded.adoc
@@ -0,0 +1,53 @@
+= TomEE Embedded Maven Plugin
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE Embedded Maven plugin has a single goal: `tomee-embedded:run`.
+
+=== Configuration
+
+[.table.table-bordered,options="header"]
+|===
+| Name | Default | Description
+| warFile | ${project.build.directory}/${project.build.finalName} | where is the binary
+| httpPort | 8080 | HTTP port
+| httpsPort | 8443 | HTTPS port
+| ajpPort | 8009 | AJP port
+| stopPort | 8005 | shutdown port
+| host | localhost | the server host
+| dir | ${project.build.directory}/apache-tomee-embedded | the work directory
+| keystoreFile | - | the keystore file for the HTTPS connector
+| keystorePass | - | the keystore password for the HTTPS connector
+| keystoreType | JKS | the keystore type for the HTTPS connector
+| clientAuth | - | should HTTPS use client authentication
+| keyAlias | - | the key to use for HTTPS
+| sslProtocol | - | the protocol to use for SSL/HTTPS
+| serverXml | - | a custom server.xml
+| ssl | false | is HTTPS active
+| withEjbRemote |false | is EJBd active
+| quickSession | true | is sessions using Random instead of SecureRandom to generate id (faster but less secure, good for dev purposes)
+| skipHttp | false | don't activate HTTP connector (allow to have only HTTPS for instance)
+| classpathAsWar | false | deploy the classpath instead of the binary/war
+| useProjectClasspath | true | in previous case use the project classpath and not plugin one
+| webResourceCached | true | should web resources be cached
+| modules | ${project.build.outputDirectory} | list of module to add to the classpath of the application
+| docBase | ${project.basedir}/src/main/webapp | where is the docBase in classpath deployment mode (where are web resources)
+| context | - | which context to use for the main artifact/deployment
+| containerProperties | - | map of container properties
+| mavenLog | true | should the plugin use maven logger instead of JUL
+| keepServerXmlAsThis | false | don't apply port/host configuration to the server.xml if provided
+| users | - | map of user/password
+| roles | - | map of role/users
+| forceJspDevelopment | true | ensure JSP are in development mode (updated)
+| applications | - | list of applications to deploy
+| applicationScopes | - | scope of the artifact to take into account for the classpath (ignore PROVIDED for instance)
+| skipCurrentProject | - | don't deploy current project but only configured applications
+| applicationCopyFolder | - | a folder containing applications
+| workDir | - | tomee embedded work dir
+| inlinedServerXml | - | server.xml content directly in the pom
+| inlinedTomEEXml | - | tomee.xml content directly in the pom
+| liveReload | - | livereload configuration if activated. This is an object containing these options: {watchedFolder: 'src/main/webapp', path: '/', port: 35729}
+| withLiveReload | false | activate livereload for web resources
+|===
diff --git a/src/main/jbake/content/developer/tools/maven/tomee.adoc b/src/main/jbake/content/developer/tools/maven/tomee.adoc
new file mode 100755
index 0000000..e4f5896
--- /dev/null
+++ b/src/main/jbake/content/developer/tools/maven/tomee.adoc
@@ -0,0 +1,183 @@
+= TomEE Maven Plugin
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+TomEE Maven Plugin is a set of goals for the development and to prepare to go in production:
+
+- `tomee:build`
+- `tomee:exec`
+- `tomee:configtest`
+- `tomee:debug`
+- `tomee:deploy`
+- `tomee:exec`
+- `tomee:list`
+- `tomee:run`
+- `tomee:start`
+- `tomee:stop`
+- `tomee:undeploy`
+
+=== Run
+
+The most commonly used goal, it allows to start a tomee with applications. Here is its configuration:
+
+[.table.table-bordered,options="header"]
+|===
+|Name|Default|Description
+
+|synchronization|-|a synchronization (see after the table)
+|synchronizations|-|list of synchronizations
+|reloadOnUpdate|-|should the application be redeployed when a synchronization is triggered
+
+|skipCurrentProject|false|should current project not be considered as a deployable even if its packaging is compatible (war typically)
+|tomeeVersion|auto, plugin one|which version of TomEE to use
+|tomeeGroupId|org.apache.tomee|TomEE artifact groupId
+|tomeeArtifactId|apache-tomee|TomEE artifact artifactId
+|tomeeType|zip| the type of the TomEE artifact , only zip supported at the moment
+|tomeeClassifier|webprofile|which flavor of TomEE to use (classifier)
+|tomeeShutdownPort|read from server.xml|the shutdown port
+|tomeeShutdownAttempts|60|how many times to wait for startup/shutdown (waits 1s in between)
+|tomeeShutdownCommand|SHUTDOWN|the shutdown command
+|tomeeAjpPort|read from the pom|the AJP port if needed
+|tomeeHttpsPort|read from the pom|the HTTPS port if needed
+|args|-|command line arguments (system properties, javaagent, JVM options ...)
+|debug|-|start and wait for a remote debugger to connect
+|debugPort|5005|used when debug to change the default port
+|simpleLog|false|use one line logs
+|extractWars|false|explode wars before starting
+|stripWarVersion|true|remove the version from the war name
+|stripVersion|false|remove the version from the artifact name whatever it is (even jar)
+|webappResources|${project.basedir}/src/main/webapp|where web resources are
+|webappClasses and classes|${project.build.outputDirectory}|where artifact binaries are
+|catalinaBase|${project.build.directory}/apache-tomee|where to create the tomee instance
+|context|-|name of the current artifact (rename the war from the maven name to this one)
+|webappDir|webapps|path to webapps folder from tomee.base
+|appDir|apps|path to apps folder from tomee.base
+|libDir|lib|where is lib folder
+|mainDir|${project.basedir}/src/main|used in openejb mode to change default config of conf/lib/bin folders to openejb instead of tomee
+|config|${project.basedir}/src/main/tomee/conf|a conf folder synchronized with TomEE one
+|bin|${project.basedir}/src/main/tomee/bin|a bin folder synchronized with TomEE one
+|lib|${project.basedir}/src/main/tomee/lib|a lib folder synchronized with TomEE one
+|systemVariables|-|a map of system properties
+|classpaths|-|a list of additional entries for the startup classpath
+|customizers|-|a list of customizers
+|jsCustomizers|-|a list of js customizers (js scripts)
+|groovyCustomizers|-|a list of groovy customizers (groovy scripts)
+|webappDefaultConfig|false|auto config war oriented
+|quickSession|true|session generation will use `Random` instead of `SecureRandom` (for dev)
+|forceReloadable|false|ensure TomEE supports reloading/redeployment
+|forceJspDevelopment|true|JSP will be auto-recompiled on changes
+|libs|-|dependencies to add in lib, see after this table for advanced usage
+|endorsedLibs|-|dependencies to add in endorsed, see after this table for advanced usage
+|javaagents|-|javaagents to add on the JVM, supports maven coordinates
+|persistJavaagents|false|should javaagent be saved or just use for this plugin run
+|webapps|-|additional applicatinos to deploy
+|warFile|${project.build.directory}/${project.build.finalName}.${project.packaging}|the war to deploy
+|workWarFile|${project.build.directory}/${project.build.finalName}"|the exploded war to deploy
+|removeDefaultWebapps|true| should default webapps (ROOT, docs, ...) be deleted
+|deployOpenEjbApplication|false|should openejb internal application be deployed
+|removeTomeeWebapp|true|should tomee webapp (with EJBd adapter) be deployed
+|tomeeAlreadyInstalled|false|skip all the setup configuration
+|ejbRemote|true|should EJBd be activated
+|checkStarted|false|should the plugin check the server is up (useful when used with `pre-integration` phase
+|useConsole|true|wait for the end of the execution reading inputs from the console (like `quit` command)
+|useOpenEJB|false|use openejb-standalone instead of tomee
+|inlinedServerXml|-|a server.xml content in pom.xml directly
+|inlinedTomEEXml|-|a tomee.xml content in pom.xml directly
+|overrideOnUnzip|true|if when unzipping tomee a file is already there should it be overriden
+|skipRootFolderOnUnzip|true|ignore root folder of the zip
+|keystore|-|path to keystore for HTTPS connector
+|===
+
+
+Synchronization are blocks defining a source and target folder and both are synchronized. It typically copy
+`src/main/webapp` resources in `target/apache-tomee/webapps/myapp/`.
+
+
+==== Customizers
+
+Customizers are java classes loadable by the plugin and with a main or implementing `Runnable` and taking optionally
+as constructor parameter a `File` representing `tomee.base` or no arguments.
+
+They are executed when creating the TomEE instance.
+
+There are two scripting flavors of that: js and groovy. Both will have some contextual variables:
+
+- catalinaBase: tomee base path
+- resolver: a maven resolver to get a dependency using maven. For instance: `resolver.resolve('group', 'artfact', 'version', 'type')`
+
+==== Dependencies (libs)
+
+The format can be:
+
+- a maven dependency:
+
+[source]
+----
+groupId:artifactId:version
+----
+
+- a zip dependency and extracted in lib folder:
+
+[source]
+----
+unzip:groupId:artifactId:version
+----
+
+- a matching prefix to remove:
+
+[source]
+----
+remove:prefix
+----
+
+==== Example
+
+[source,xml]
+----
+<plugin>
+  <groupId>org.apache.tomee.maven</groupId>
+  <artifactId>tomee-maven-plugin</artifactId>
+  <version>${tomee7.version}</version>
+  <configuration>
+    <tomeeClassifier>plus</tomeeClassifier>
+    <debug>false</debug>
+    <debugPort>5005</debugPort>
+    <args>-Dfoo=bar</args>
+    <config>${project.basedir}/src/test/tomee/conf</config>
+    <libs>
+      <lib>mysql:mysql-connector-java:5.1.20</lib>
+    </libs>
+    <webapps>
+       <webapp>org.superbiz:myapp:4.3?name=ROOT</webapp>
+       <webapp>org.superbiz:api:1.1</webapp>
+    </webapps>
+    <apps>
+        <app>org.superbiz:mybugapp:3.2:ear</app>
+    </apps>
+    <libs>
+        <lib>mysql:mysql-connector-java:5.1.21</lib>
+        <lib>unzip:org.superbiz:hibernate-bundle:4.1.0.Final:zip</lib>
+        <lib>remove:openjpa-</lib>
+    </libs>
+  </configuration>
+</plugin>
+----
+
+=== Build
+
+Excepted synchronization, build plugin inherit from `run` Mojo its configuration. It just adds the following:
+
+[.table.table-bordered,options="header"]
+|===
+|Name|Default|Description
+|formats|-|map of configuration, keys are format (zip, tar.gz) and value the target location
+|zip|true|create a zip from the configured instance
+|attach|true|attach created artifacts
+|skipArchiveRootFolder|false|don't add a root folder in the zip
+|===
+
+=== Tomcat like goals
+
+`configtest`, `start` and `stop` just execute these commands on the server (like on `catalina.sh`).
diff --git a/src/main/jbake/content/download-ng.adoc b/src/main/jbake/content/download-ng.adoc
new file mode 100755
index 0000000..0610a06
--- /dev/null
+++ b/src/main/jbake/content/download-ng.adoc
@@ -0,0 +1,280 @@
+= Downloads
+:jbake-date: 2015-04-05
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+:icons: font
+
+IMPORTANT: only TomEE 1.x WebProfile and JAX-RS distributions are certified.
+
+[.table.table-bordered,options="header"]
+|===
+|Name|Version|Date|Size|Type|Links
+|Apache TomEE plume|7.0.3|Tue, 07 Mar 2017 21:47:50 GMT|55 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.3|Tue, 07 Mar 2017 21:45:35 GMT|55 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.3|Tue, 07 Mar 2017 21:43:39 GMT|48 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.3|Tue, 07 Mar 2017 21:41:45 GMT|48 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.3|Tue, 07 Mar 2017 21:40:27 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.3|Tue, 07 Mar 2017 21:39:18 GMT|34 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.2|Sun, 06 Nov 2016 19:13:59 GMT|55 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.2|Sun, 06 Nov 2016 19:05:57 GMT|55 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.2|Sun, 06 Nov 2016 18:58:09 GMT|48 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.2|Sun, 06 Nov 2016 18:50:31 GMT|48 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.2|Sun, 06 Nov 2016 18:45:10 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.2|Sun, 06 Nov 2016 18:40:34 GMT|34 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.1|Wed, 22 Jun 2016 22:41:15 GMT|54 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.1|Wed, 22 Jun 2016 22:39:25 GMT|54 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.1|Wed, 22 Jun 2016 22:37:49 GMT|47 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.1|Wed, 22 Jun 2016 22:36:12 GMT|48 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.1|Wed, 22 Jun 2016 22:30:21 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.1|Wed, 22 Jun 2016 22:29:08 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.1/apache-tomee-7.0.1-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.0|Tue, 17 May 2016 21:53:07 GMT|54 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.0|Tue, 17 May 2016 21:50:29 GMT|54 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.0|Tue, 17 May 2016 21:48:06 GMT|47 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.0|Tue, 17 May 2016 21:45:50 GMT|48 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.0|Tue, 17 May 2016 21:44:11 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.0|Tue, 17 May 2016 21:42:31 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0/apache-tomee-7.0.0-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.0-M3|Thu, 03 Mar 2016 15:55:40 GMT|53 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.0-M3|Thu, 03 Mar 2016 15:54:01 GMT|54 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.0-M3|Thu, 03 Mar 2016 15:52:34 GMT|47 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.0-M3|Thu, 03 Mar 2016 15:50:48 GMT|47 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.0-M3|Thu, 03 Mar 2016 15:49:47 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.0-M3|Thu, 03 Mar 2016 15:48:43 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M3/apache-tomee-7.0.0-M3-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.0-M2|Tue, 23 Feb 2016 9:44:02 GMT|53 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.0-M2|Tue, 23 Feb 2016 9:42:25 GMT|54 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.0-M2|Tue, 23 Feb 2016 9:40:54 GMT|47 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.0-M2|Tue, 23 Feb 2016 9:39:26 GMT|47 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.0-M2|Tue, 23 Feb 2016 9:38:24 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.0-M2|Tue, 23 Feb 2016 9:37:22 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M2/apache-tomee-7.0.0-M2-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.0-M1|Sun, 06 Dec 2015 0:27:57 GMT|55 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|7.0.0-M1|Sun, 06 Dec 2015 0:19:48 GMT|55 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.0-M1|Sun, 06 Dec 2015 0:12:32 GMT|49 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|7.0.0-M1|Sun, 06 Dec 2015 0:05:03 GMT|49 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.0-M1|Sun, 06 Dec 2015 0:00:04 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|7.0.0-M1|Sat, 05 Dec 2015 23:55:06 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.0-M1/apache-tomee-7.0.0-M1-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.4|Fri, 04 Mar 2016 8:35:33 GMT|49 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.4|Fri, 04 Mar 2016 8:34:03 GMT|49 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.4|Fri, 04 Mar 2016 8:32:46 GMT|41 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.4|Fri, 04 Mar 2016 8:31:29 GMT|42 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.4|Fri, 04 Mar 2016 8:30:27 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.4|Fri, 04 Mar 2016 8:29:24 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.4|Fri, 04 Mar 2016 8:28:27 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.4|Fri, 04 Mar 2016 8:27:32 GMT|30 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.4/apache-tomee-1.7.4-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.3|Fri, 04 Dec 2015 19:02:57 GMT|49 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.3|Fri, 04 Dec 2015 18:55:31 GMT|49 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.3|Fri, 04 Dec 2015 18:49:30 GMT|41 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.3|Fri, 04 Dec 2015 18:43:26 GMT|42 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.3|Fri, 04 Dec 2015 18:38:33 GMT|32 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.3|Fri, 04 Dec 2015 18:33:41 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.3|Fri, 04 Dec 2015 18:29:15 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.3|Fri, 04 Dec 2015 18:24:39 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.3/apache-tomee-1.7.3-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.2|Sun, 17 May 2015 22:19:18 GMT|48 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.2|Sun, 17 May 2015 22:19:13 GMT|49 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.2|Sun, 17 May 2015 22:19:09 GMT|41 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.2|Sun, 17 May 2015 22:19:02 GMT|41 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.2|Sun, 17 May 2015 22:18:56 GMT|32 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.2|Sun, 17 May 2015 22:18:50 GMT|32 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.2|Sun, 17 May 2015 22:18:43 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.2|Sun, 17 May 2015 22:18:34 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.2/apache-tomee-1.7.2-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.1|Fri, 12 Sep 2014 12:36:48 GMT|48 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.1|Fri, 12 Sep 2014 12:33:01 GMT|48 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.1|Fri, 12 Sep 2014 12:29:54 GMT|41 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.1|Fri, 12 Sep 2014 12:26:42 GMT|41 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.1|Fri, 12 Sep 2014 12:24:08 GMT|32 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.1|Fri, 12 Sep 2014 12:21:36 GMT|32 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.1|Fri, 12 Sep 2014 12:19:16 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.1|Fri, 12 Sep 2014 12:16:53 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.1/apache-tomee-1.7.1-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.0|Sat, 09 Aug 2014 23:32:29 GMT|48 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plume.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plume|1.7.0|Sat, 09 Aug 2014 23:28:50 GMT|48 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plume.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.0|Sat, 09 Aug 2014 23:25:44 GMT|41 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.7.0|Sat, 09 Aug 2014 23:22:42 GMT|41 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.0|Sat, 09 Aug 2014 23:20:15 GMT|32 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.7.0|Sat, 09 Aug 2014 23:17:51 GMT|32 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.0|Sat, 09 Aug 2014 23:15:42 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.7.0|Sat, 09 Aug 2014 23:13:32 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.7.0/apache-tomee-1.7.0-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.6.0.2|Tue, 06 May 2014 13:30:56 GMT|45 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.6.0.2|Tue, 06 May 2014 13:29:48 GMT|45 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.6.0.2|Tue, 06 May 2014 13:29:00 GMT|31 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.6.0.2|Tue, 06 May 2014 13:28:12 GMT|32 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.6.0.2|Tue, 06 May 2014 13:27:29 GMT|28 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.6.0.2|Tue, 06 May 2014 13:26:45 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.2/apache-tomee-1.6.0.2-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.6.0.1|Wed, 16 Apr 2014 21:23:39 GMT|45 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.6.0.1|Wed, 16 Apr 2014 21:23:20 GMT|45 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.6.0.1|Wed, 16 Apr 2014 21:23:10 GMT|31 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.6.0.1|Wed, 16 Apr 2014 21:22:58 GMT|32 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.6.0.1|Wed, 16 Apr 2014 21:22:42 GMT|28 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.6.0.1|Wed, 16 Apr 2014 21:22:33 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0.1/apache-tomee-1.6.0.1-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.6.0|Sun, 17 Nov 2013 7:01:56 GMT|44 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.6.0|Sun, 17 Nov 2013 7:01:46 GMT|44 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.6.0|Sun, 17 Nov 2013 7:01:38 GMT|31 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.6.0|Sun, 17 Nov 2013 7:01:29 GMT|31 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.6.0|Sun, 17 Nov 2013 7:01:20 GMT|28 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.6.0|Sun, 17 Nov 2013 7:01:13 GMT|28 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.6.0/apache-tomee-1.6.0-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.5.2|Wed, 20 Mar 2013 4:16:27 GMT|43 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.5.2|Wed, 20 Mar 2013 4:16:16 GMT|43 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.5.2|Wed, 20 Mar 2013 4:16:08 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.5.2|Wed, 20 Mar 2013 4:15:59 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.5.2|Wed, 20 Mar 2013 4:15:51 GMT|27 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.5.2|Wed, 20 Mar 2013 4:15:44 GMT|27 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.2/apache-tomee-1.5.2-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.5.1|Sun, 09 Dec 2012 21:15:39 GMT|43 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.5.1|Sun, 09 Dec 2012 21:08:18 GMT|43 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.5.1|Sun, 09 Dec 2012 21:03:22 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.5.1|Sun, 09 Dec 2012 20:58:23 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.5.1|Sun, 09 Dec 2012 20:53:50 GMT|26 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.5.1|Sun, 09 Dec 2012 20:49:14 GMT|27 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.1/apache-tomee-1.5.1-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.5.0|Fri, 28 Sep 2012 20:29:05 GMT|42 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.5.0|Fri, 28 Sep 2012 20:28:56 GMT|43 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-plus.zip.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.5.0|Fri, 28 Sep 2012 20:28:50 GMT|28 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-jaxrs.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-jaxrs.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-jaxrs.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-jaxrs.tar.gz.asc[icon:download[] asc]
+|Apache TomEE jaxrs|1.5.0|Fri, 28 Sep 2012 20:28:43 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-jaxrs.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-jaxrs.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-jaxrs.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-jaxrs.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.5.0|Fri, 28 Sep 2012 20:28:37 GMT|26 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.5.0|Fri, 28 Sep 2012 20:28:31 GMT|26 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.5.0/apache-tomee-1.5.0-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.0.0-beta-2|Mon, 16 Jan 2012 4:54:06 GMT|41 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.0.0-beta-2|Mon, 16 Jan 2012 4:51:07 GMT|41 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.0.0-beta-2|Mon, 16 Jan 2012 4:49:24 GMT|23 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.0.0-beta-2|Mon, 16 Jan 2012 4:47:41 GMT|24 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-2/apache-tomee-1.0.0-beta-2-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.0.0-beta-1|Sun, 02 Oct 2011 23:39:59 GMT|40 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.0.0-beta-1|Sun, 02 Oct 2011 23:39:51 GMT|40 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.0.0-beta-1|Sun, 02 Oct 2011 23:39:47 GMT|23 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.0.0-beta-1|Sun, 02 Oct 2011 23:39:43 GMT|23 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0-beta-1/apache-tomee-1.0.0-beta-1-webprofile.zip.asc[icon:download[] asc]
+|Apache TomEE plus|1.0.0|Fri, 27 Apr 2012 4:35:37 GMT|44 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-plus.tar.gz.asc[icon:download[] asc]
+|Apache TomEE plus|1.0.0|Fri, 27 Apr 2012 4:32:24 GMT|44 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-plus.zip.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.0.0|Fri, 27 Apr 2012 4:30:26 GMT|27 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-webprofile.tar.gz.asc[icon:download[] asc]
+|Apache TomEE webprofile|1.0.0|Fri, 27 Apr 2012 4:28:28 GMT|27 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/apache-tomee/1.0.0/apache-tomee-1.0.0-webprofile.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.7.4|Fri, 04 Mar 2016 8:00:52 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.4/openejb-4.7.4-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.4/openejb-4.7.4-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.4/openejb-4.7.4-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.4/openejb-4.7.4-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.7.3|Fri, 04 Dec 2015 17:00:54 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.3/openejb-4.7.3-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.3/openejb-4.7.3-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.3/openejb-4.7.3-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.3/openejb-4.7.3-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.7.2|Sun, 17 May 2015 22:07:51 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.2/openejb-4.7.2-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.2/openejb-4.7.2-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.2/openejb-4.7.2-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.2/openejb-4.7.2-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.7.1|Fri, 12 Sep 2014 11:35:17 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.1/openejb-4.7.1-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.1/openejb-4.7.1-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.1/openejb-4.7.1-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.1/openejb-4.7.1-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.7.0|Sat, 09 Aug 2014 22:32:07 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.0/openejb-4.7.0-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.0/openejb-4.7.0-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.0/openejb-4.7.0-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.7.0/openejb-4.7.0-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.6.0.2|Tue, 06 May 2014 13:04:25 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0.2/openejb-4.6.0.2-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0.2/openejb-4.6.0.2-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0.2/openejb-4.6.0.2-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0.2/openejb-4.6.0.2-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.6.0.1|Wed, 16 Apr 2014 20:44:13 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0.1/openejb-4.6.0.1-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0.1/openejb-4.6.0.1-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0.1/openejb-4.6.0.1-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0.1/openejb-4.6.0.1-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.6.0|Sun, 17 Nov 2013 6:44:28 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0/openejb-4.6.0-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0/openejb-4.6.0-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0/openejb-4.6.0-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.6.0/openejb-4.6.0-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.5.2|Wed, 20 Mar 2013 3:52:50 GMT|9 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.2/openejb-4.5.2-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.2/openejb-4.5.2-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.2/openejb-4.5.2-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.2/openejb-4.5.2-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.5.1|Sun, 09 Dec 2012 19:36:45 GMT|9 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.1/openejb-4.5.1-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.1/openejb-4.5.1-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.1/openejb-4.5.1-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.1/openejb-4.5.1-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.5.0|Fri, 28 Sep 2012 20:08:18 GMT|9 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.0/openejb-4.5.0-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.0/openejb-4.5.0-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.0/openejb-4.5.0-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.5.0/openejb-4.5.0-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.0.0-beta-2|Mon, 16 Jan 2012 4:21:35 GMT|7 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0-beta-2/openejb-4.0.0-beta-2-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0-beta-2/openejb-4.0.0-beta-2-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0-beta-2/openejb-4.0.0-beta-2-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0-beta-2/openejb-4.0.0-beta-2-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.0.0-beta-1|Sun, 02 Oct 2011 23:28:04 GMT|7 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0-beta-1/openejb-4.0.0-beta-1-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0-beta-1/openejb-4.0.0-beta-1-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0-beta-1/openejb-4.0.0-beta-1-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0-beta-1/openejb-4.0.0-beta-1-source-release.zip.asc[icon:download[] asc]
+|OpenEJB source-release|4.0.0|Fri, 27 Apr 2012 3:39:25 GMT|8 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0/openejb-4.0.0-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0/openejb-4.0.0-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0/openejb-4.0.0-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb/4.0.0/openejb-4.0.0-source-release.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.3|Tue, 07 Mar 2017 21:18:40 GMT|35 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.3/openejb-standalone-7.0.3.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.3/openejb-standalone-7.0.3.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.3/openejb-standalone-7.0.3.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.3/openejb-standalone-7.0.3.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.3|Tue, 07 Mar 2017 21:14:32 GMT|35 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.3/openejb-standalone-7.0.3.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.3/openejb-standalone-7.0.3.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.3/openejb-standalone-7.0.3.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.3/openejb-standalone-7.0.3.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.2|Sun, 06 Nov 2016 18:33:10 GMT|35 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.2/openejb-standalone-7.0.2.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.2/openejb-standalone-7.0.2.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.2/openejb-standalone-7.0.2.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.2/openejb-standalone-7.0.2.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.2|Sun, 06 Nov 2016 18:27:53 GMT|35 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.2/openejb-standalone-7.0.2.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.2/openejb-standalone-7.0.2.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.2/openejb-standalone-7.0.2.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.2/openejb-standalone-7.0.2.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.1|Wed, 22 Jun 2016 22:16:43 GMT|35 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.1/openejb-standalone-7.0.1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.1/openejb-standalone-7.0.1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.1/openejb-standalone-7.0.1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.1/openejb-standalone-7.0.1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.1|Wed, 22 Jun 2016 22:15:29 GMT|35 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.1/openejb-standalone-7.0.1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.1/openejb-standalone-7.0.1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.1/openejb-standalone-7.0.1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.1/openejb-standalone-7.0.1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.0|Tue, 17 May 2016 21:32:17 GMT|35 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0/openejb-standalone-7.0.0.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0/openejb-standalone-7.0.0.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0/openejb-standalone-7.0.0.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0/openejb-standalone-7.0.0.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.0|Tue, 17 May 2016 21:29:54 GMT|35 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0/openejb-standalone-7.0.0.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0/openejb-standalone-7.0.0.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0/openejb-standalone-7.0.0.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0/openejb-standalone-7.0.0.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.0-M3|Thu, 03 Mar 2016 15:39:36 GMT|35 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M3/openejb-standalone-7.0.0-M3.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M3/openejb-standalone-7.0.0-M3.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M3/openejb-standalone-7.0.0-M3.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M3/openejb-standalone-7.0.0-M3.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.0-M3|Thu, 03 Mar 2016 15:37:07 GMT|35 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M3/openejb-standalone-7.0.0-M3.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M3/openejb-standalone-7.0.0-M3.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M3/openejb-standalone-7.0.0-M3.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M3/openejb-standalone-7.0.0-M3.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.0-M2|Tue, 23 Feb 2016 9:30:57 GMT|35 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M2/openejb-standalone-7.0.0-M2.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M2/openejb-standalone-7.0.0-M2.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M2/openejb-standalone-7.0.0-M2.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M2/openejb-standalone-7.0.0-M2.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.0-M2|Tue, 23 Feb 2016 9:29:10 GMT|35 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M2/openejb-standalone-7.0.0-M2.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M2/openejb-standalone-7.0.0-M2.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M2/openejb-standalone-7.0.0-M2.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M2/openejb-standalone-7.0.0-M2.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.0-M1|Sat, 05 Dec 2015 9:14:39 GMT|37 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M1/openejb-standalone-7.0.0-M1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M1/openejb-standalone-7.0.0-M1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M1/openejb-standalone-7.0.0-M1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M1/openejb-standalone-7.0.0-M1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|7.0.0-M1|Sat, 05 Dec 2015 9:08:12 GMT|37 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M1/openejb-standalone-7.0.0-M1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M1/openejb-standalone-7.0.0-M1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M1/openejb-standalone-7.0.0-M1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/openejb-standalone/7.0.0-M1/openejb-standalone-7.0.0-M1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.4|Fri, 04 Mar 2016 8:20:25 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.4/openejb-standalone-4.7.4.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.4/openejb-standalone-4.7.4.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.4/openejb-standalone-4.7.4.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.4/openejb-standalone-4.7.4.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.4|Fri, 04 Mar 2016 8:15:03 GMT|30 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.4/openejb-standalone-4.7.4.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.4/openejb-standalone-4.7.4.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.4/openejb-standalone-4.7.4.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.4/openejb-standalone-4.7.4.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.3|Fri, 04 Dec 2015 17:39:28 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.3/openejb-standalone-4.7.3.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.3/openejb-standalone-4.7.3.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.3/openejb-standalone-4.7.3.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.3/openejb-standalone-4.7.3.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.3|Fri, 04 Dec 2015 17:34:59 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.3/openejb-standalone-4.7.3.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.3/openejb-standalone-4.7.3.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.3/openejb-standalone-4.7.3.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.3/openejb-standalone-4.7.3.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.2|Sun, 17 May 2015 22:13:39 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.2/openejb-standalone-4.7.2.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.2/openejb-standalone-4.7.2.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.2/openejb-standalone-4.7.2.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.2/openejb-standalone-4.7.2.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.2|Sun, 17 May 2015 22:13:34 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.2/openejb-standalone-4.7.2.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.2/openejb-standalone-4.7.2.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.2/openejb-standalone-4.7.2.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.2/openejb-standalone-4.7.2.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.1|Fri, 12 Sep 2014 11:51:56 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.1/openejb-standalone-4.7.1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.1/openejb-standalone-4.7.1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.1/openejb-standalone-4.7.1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.1/openejb-standalone-4.7.1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.1|Fri, 12 Sep 2014 11:49:31 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.1/openejb-standalone-4.7.1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.1/openejb-standalone-4.7.1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.1/openejb-standalone-4.7.1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.1/openejb-standalone-4.7.1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.0|Sat, 09 Aug 2014 22:50:55 GMT|29 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.0/openejb-standalone-4.7.0.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.0/openejb-standalone-4.7.0.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.0/openejb-standalone-4.7.0.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.0/openejb-standalone-4.7.0.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.7.0|Sat, 09 Aug 2014 22:48:40 GMT|29 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.0/openejb-standalone-4.7.0.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.0/openejb-standalone-4.7.0.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.0/openejb-standalone-4.7.0.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.7.0/openejb-standalone-4.7.0.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.6.0.2|Tue, 06 May 2014 13:15:50 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.2/openejb-standalone-4.6.0.2.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.2/openejb-standalone-4.6.0.2.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.2/openejb-standalone-4.6.0.2.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.2/openejb-standalone-4.6.0.2.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.6.0.2|Tue, 06 May 2014 13:15:00 GMT|32 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.2/openejb-standalone-4.6.0.2.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.2/openejb-standalone-4.6.0.2.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.2/openejb-standalone-4.6.0.2.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.2/openejb-standalone-4.6.0.2.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.6.0.1|Wed, 16 Apr 2014 21:16:20 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.1/openejb-standalone-4.6.0.1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.1/openejb-standalone-4.6.0.1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.1/openejb-standalone-4.6.0.1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.1/openejb-standalone-4.6.0.1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.6.0.1|Wed, 16 Apr 2014 21:16:02 GMT|32 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.1/openejb-standalone-4.6.0.1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.1/openejb-standalone-4.6.0.1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.1/openejb-standalone-4.6.0.1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0.1/openejb-standalone-4.6.0.1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.6.0|Sun, 17 Nov 2013 6:53:30 GMT|32 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0/openejb-standalone-4.6.0.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0/openejb-standalone-4.6.0.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0/openejb-standalone-4.6.0.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0/openejb-standalone-4.6.0.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.6.0|Sun, 17 Nov 2013 6:53:21 GMT|32 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0/openejb-standalone-4.6.0.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0/openejb-standalone-4.6.0.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0/openejb-standalone-4.6.0.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.6.0/openejb-standalone-4.6.0.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.5.2|Wed, 20 Mar 2013 4:00:56 GMT|31 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.2/openejb-standalone-4.5.2.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.2/openejb-standalone-4.5.2.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.2/openejb-standalone-4.5.2.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.2/openejb-standalone-4.5.2.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.5.2|Wed, 20 Mar 2013 4:00:46 GMT|31 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.2/openejb-standalone-4.5.2.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.2/openejb-standalone-4.5.2.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.2/openejb-standalone-4.5.2.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.2/openejb-standalone-4.5.2.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.5.1|Sun, 09 Dec 2012 20:01:27 GMT|31 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.1/openejb-standalone-4.5.1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.1/openejb-standalone-4.5.1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.1/openejb-standalone-4.5.1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.1/openejb-standalone-4.5.1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.5.1|Sun, 09 Dec 2012 19:56:07 GMT|31 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.1/openejb-standalone-4.5.1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.1/openejb-standalone-4.5.1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.1/openejb-standalone-4.5.1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.1/openejb-standalone-4.5.1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.5.0|Fri, 28 Sep 2012 20:15:45 GMT|31 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.0/openejb-standalone-4.5.0.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.0/openejb-standalone-4.5.0.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.0/openejb-standalone-4.5.0.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.0/openejb-standalone-4.5.0.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.5.0|Fri, 28 Sep 2012 20:15:38 GMT|31 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.0/openejb-standalone-4.5.0.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.0/openejb-standalone-4.5.0.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.0/openejb-standalone-4.5.0.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.5.0/openejb-standalone-4.5.0.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.0.0-beta-2|Mon, 16 Jan 2012 4:34:03 GMT|31 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-2/openejb-standalone-4.0.0-beta-2.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-2/openejb-standalone-4.0.0-beta-2.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-2/openejb-standalone-4.0.0-beta-2.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-2/openejb-standalone-4.0.0-beta-2.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.0.0-beta-2|Mon, 16 Jan 2012 4:31:50 GMT|31 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-2/openejb-standalone-4.0.0-beta-2.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-2/openejb-standalone-4.0.0-beta-2.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-2/openejb-standalone-4.0.0-beta-2.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-2/openejb-standalone-4.0.0-beta-2.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.0.0-beta-1|Sun, 02 Oct 2011 23:40:46 GMT|30 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-1/openejb-standalone-4.0.0-beta-1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-1/openejb-standalone-4.0.0-beta-1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-1/openejb-standalone-4.0.0-beta-1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-1/openejb-standalone-4.0.0-beta-1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.0.0-beta-1|Sun, 02 Oct 2011 23:40:38 GMT|30 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-1/openejb-standalone-4.0.0-beta-1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-1/openejb-standalone-4.0.0-beta-1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-1/openejb-standalone-4.0.0-beta-1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0-beta-1/openejb-standalone-4.0.0-beta-1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|4.0.0|Fri, 27 Apr 2012 4:10:56 GMT|33 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0/openejb-standalone-4.0.0.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0/openejb-standalone-4.0.0.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0/openejb-standalone-4.0.0.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0/openejb-standalone-4.0.0.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|4.0.0|Fri, 27 Apr 2012 4:08:37 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0/openejb-standalone-4.0.0.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0/openejb-standalone-4.0.0.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0/openejb-standalone-4.0.0.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/4.0.0/openejb-standalone-4.0.0.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1.4|Fri, 12 Nov 2010 23:56:16 GMT|20 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.4/openejb-standalone-3.1.4.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.4/openejb-standalone-3.1.4.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.4/openejb-standalone-3.1.4.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.4/openejb-standalone-3.1.4.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1.4|Fri, 12 Nov 2010 23:44:42 GMT|20 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.4/openejb-standalone-3.1.4.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.4/openejb-standalone-3.1.4.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.4/openejb-standalone-3.1.4.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.4/openejb-standalone-3.1.4.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1.3|Sat, 16 Oct 2010 0:56:15 GMT|20 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.3/openejb-standalone-3.1.3.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.3/openejb-standalone-3.1.3.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.3/openejb-standalone-3.1.3.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.3/openejb-standalone-3.1.3.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1.3|Sat, 16 Oct 2010 0:51:44 GMT|20 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.3/openejb-standalone-3.1.3.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.3/openejb-standalone-3.1.3.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.3/openejb-standalone-3.1.3.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.3/openejb-standalone-3.1.3.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1.2|Sat, 10 Oct 2009 10:24:22 GMT|17 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.2/openejb-standalone-3.1.2.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.2/openejb-standalone-3.1.2.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.2/openejb-standalone-3.1.2.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.2/openejb-standalone-3.1.2.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1.2|Sat, 10 Oct 2009 10:19:28 GMT|17 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.2/openejb-standalone-3.1.2.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.2/openejb-standalone-3.1.2.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.2/openejb-standalone-3.1.2.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.2/openejb-standalone-3.1.2.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1.1|Sun, 31 May 2009 1:24:09 GMT|24 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.1/openejb-standalone-3.1.1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.1/openejb-standalone-3.1.1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.1/openejb-standalone-3.1.1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.1/openejb-standalone-3.1.1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1.1|Sun, 31 May 2009 1:22:43 GMT|24 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.1/openejb-standalone-3.1.1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.1/openejb-standalone-3.1.1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.1/openejb-standalone-3.1.1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1.1/openejb-standalone-3.1.1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1|Thu, 23 Oct 2008 5:35:16 GMT|14 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1/openejb-standalone-3.1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1/openejb-standalone-3.1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1/openejb-standalone-3.1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1/openejb-standalone-3.1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.1|Thu, 23 Oct 2008 5:35:14 GMT|14 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1/openejb-standalone-3.1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1/openejb-standalone-3.1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1/openejb-standalone-3.1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.1/openejb-standalone-3.1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0.4|Sat, 22 Oct 2011 15:14:35 GMT|14 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.4/openejb-standalone-3.0.4.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.4/openejb-standalone-3.0.4.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.4/openejb-standalone-3.0.4.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.4/openejb-standalone-3.0.4.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0.4|Sat, 22 Oct 2011 15:14:28 GMT|14 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.4/openejb-standalone-3.0.4.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.4/openejb-standalone-3.0.4.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.4/openejb-standalone-3.0.4.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.4/openejb-standalone-3.0.4.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0.3|Tue, 26 Oct 2010 15:02:55 GMT|14 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.3/openejb-standalone-3.0.3.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.3/openejb-standalone-3.0.3.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.3/openejb-standalone-3.0.3.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.3/openejb-standalone-3.0.3.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0.3|Tue, 26 Oct 2010 15:01:34 GMT|14 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.3/openejb-standalone-3.0.3.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.3/openejb-standalone-3.0.3.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.3/openejb-standalone-3.0.3.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.3/openejb-standalone-3.0.3.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0.2|Tue, 30 Mar 2010 1:39:33 GMT|14 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.2/openejb-standalone-3.0.2.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.2/openejb-standalone-3.0.2.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.2/openejb-standalone-3.0.2.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.2/openejb-standalone-3.0.2.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0.2|Tue, 30 Mar 2010 1:34:09 GMT|14 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.2/openejb-standalone-3.0.2.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.2/openejb-standalone-3.0.2.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.2/openejb-standalone-3.0.2.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.2/openejb-standalone-3.0.2.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0.1|Thu, 12 Mar 2009 5:10:53 GMT|14 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.1/openejb-standalone-3.0.1.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.1/openejb-standalone-3.0.1.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.1/openejb-standalone-3.0.1.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.1/openejb-standalone-3.0.1.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0.1|Thu, 12 Mar 2009 5:07:53 GMT|14 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.1/openejb-standalone-3.0.1.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.1/openejb-standalone-3.0.1.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.1/openejb-standalone-3.0.1.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0.1/openejb-standalone-3.0.1.tar.gz.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0|Sun, 13 Apr 2008 1:19:10 GMT|14 MB |zip| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0/openejb-standalone-3.0.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0/openejb-standalone-3.0.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0/openejb-standalone-3.0.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0/openejb-standalone-3.0.zip.asc[icon:download[] asc]
+|OpenEJB Standalone|3.0|Sun, 13 Apr 2008 1:19:08 GMT|14 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0/openejb-standalone-3.0.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0/openejb-standalone-3.0.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0/openejb-standalone-3.0.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/openejb-standalone/3.0/openejb-standalone-3.0.tar.gz.asc[icon:download[] asc]
+|TomEE Plume Webapp|7.0.3|Tue, 07 Mar 2017 21:16:50 GMT|46 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.3/tomee-plume-webapp-7.0.3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.3/tomee-plume-webapp-7.0.3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.3/tomee-plume-webapp-7.0.3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.3/tomee-plume-webapp-7.0.3.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|7.0.2|Sun, 06 Nov 2016 18:31:55 GMT|46 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.2/tomee-plume-webapp-7.0.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.2/tomee-plume-webapp-7.0.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.2/tomee-plume-webapp-7.0.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.2/tomee-plume-webapp-7.0.2.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|7.0.1|Wed, 22 Jun 2016 22:25:07 GMT|68 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.1/tomee-plume-webapp-7.0.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.1/tomee-plume-webapp-7.0.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.1/tomee-plume-webapp-7.0.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.1/tomee-plume-webapp-7.0.1.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|7.0.0|Tue, 17 May 2016 21:32:49 GMT|68 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0/tomee-plume-webapp-7.0.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0/tomee-plume-webapp-7.0.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0/tomee-plume-webapp-7.0.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0/tomee-plume-webapp-7.0.0.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|7.0.0-M3|Thu, 03 Mar 2016 15:41:32 GMT|67 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M3/tomee-plume-webapp-7.0.0-M3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M3/tomee-plume-webapp-7.0.0-M3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M3/tomee-plume-webapp-7.0.0-M3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M3/tomee-plume-webapp-7.0.0-M3.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|7.0.0-M2|Tue, 23 Feb 2016 9:31:35 GMT|67 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M2/tomee-plume-webapp-7.0.0-M2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M2/tomee-plume-webapp-7.0.0-M2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M2/tomee-plume-webapp-7.0.0-M2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M2/tomee-plume-webapp-7.0.0-M2.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|7.0.0-M1|Sat, 05 Dec 2015 10:04:13 GMT|69 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M1/tomee-plume-webapp-7.0.0-M1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M1/tomee-plume-webapp-7.0.0-M1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M1/tomee-plume-webapp-7.0.0-M1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plume-webapp/7.0.0-M1/tomee-plume-webapp-7.0.0-M1.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|1.7.4|Fri, 04 Mar 2016 8:22:46 GMT|41 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.4/tomee-plume-webapp-1.7.4.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.4/tomee-plume-webapp-1.7.4.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.4/tomee-plume-webapp-1.7.4.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.4/tomee-plume-webapp-1.7.4.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|1.7.3|Fri, 04 Dec 2015 18:07:38 GMT|58 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.3/tomee-plume-webapp-1.7.3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.3/tomee-plume-webapp-1.7.3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.3/tomee-plume-webapp-1.7.3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.3/tomee-plume-webapp-1.7.3.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|1.7.2|Sun, 17 May 2015 22:17:10 GMT|40 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.2/tomee-plume-webapp-1.7.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.2/tomee-plume-webapp-1.7.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.2/tomee-plume-webapp-1.7.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.2/tomee-plume-webapp-1.7.2.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|1.7.1|Fri, 12 Sep 2014 12:06:45 GMT|40 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.1/tomee-plume-webapp-1.7.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.1/tomee-plume-webapp-1.7.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.1/tomee-plume-webapp-1.7.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.1/tomee-plume-webapp-1.7.1.war.asc[icon:download[] asc]
+|TomEE Plume Webapp|1.7.0|Sat, 09 Aug 2014 23:05:10 GMT|40 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.0/tomee-plume-webapp-1.7.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.0/tomee-plume-webapp-1.7.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.0/tomee-plume-webapp-1.7.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plume-webapp/1.7.0/tomee-plume-webapp-1.7.0.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|7.0.3|Tue, 07 Mar 2017 21:16:50 GMT|40 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.3/tomee-plus-webapp-7.0.3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.3/tomee-plus-webapp-7.0.3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.3/tomee-plus-webapp-7.0.3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.3/tomee-plus-webapp-7.0.3.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|7.0.2|Sun, 06 Nov 2016 18:31:54 GMT|40 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.2/tomee-plus-webapp-7.0.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.2/tomee-plus-webapp-7.0.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.2/tomee-plus-webapp-7.0.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.2/tomee-plus-webapp-7.0.2.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|7.0.1|Wed, 22 Jun 2016 22:22:32 GMT|61 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.1/tomee-plus-webapp-7.0.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.1/tomee-plus-webapp-7.0.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.1/tomee-plus-webapp-7.0.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.1/tomee-plus-webapp-7.0.1.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|7.0.0|Tue, 17 May 2016 21:32:49 GMT|61 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0/tomee-plus-webapp-7.0.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0/tomee-plus-webapp-7.0.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0/tomee-plus-webapp-7.0.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0/tomee-plus-webapp-7.0.0.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|7.0.0-M3|Thu, 03 Mar 2016 15:41:31 GMT|61 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M3/tomee-plus-webapp-7.0.0-M3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M3/tomee-plus-webapp-7.0.0-M3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M3/tomee-plus-webapp-7.0.0-M3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M3/tomee-plus-webapp-7.0.0-M3.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|7.0.0-M2|Tue, 23 Feb 2016 9:31:32 GMT|61 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M2/tomee-plus-webapp-7.0.0-M2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M2/tomee-plus-webapp-7.0.0-M2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M2/tomee-plus-webapp-7.0.0-M2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M2/tomee-plus-webapp-7.0.0-M2.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|7.0.0-M1|Sat, 05 Dec 2015 9:49:49 GMT|63 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M1/tomee-plus-webapp-7.0.0-M1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M1/tomee-plus-webapp-7.0.0-M1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M1/tomee-plus-webapp-7.0.0-M1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-plus-webapp/7.0.0-M1/tomee-plus-webapp-7.0.0-M1.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|4.0.0-beta-2|Mon, 16 Jan 2012 4:44:39 GMT|35 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/4.0.0-beta-2/tomee-plus-webapp-4.0.0-beta-2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/4.0.0-beta-2/tomee-plus-webapp-4.0.0-beta-2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/4.0.0-beta-2/tomee-plus-webapp-4.0.0-beta-2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/4.0.0-beta-2/tomee-plus-webapp-4.0.0-beta-2.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|4.0.0|Fri, 27 Apr 2012 4:20:52 GMT|37 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/4.0.0/tomee-plus-webapp-4.0.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/4.0.0/tomee-plus-webapp-4.0.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/4.0.0/tomee-plus-webapp-4.0.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/4.0.0/tomee-plus-webapp-4.0.0.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.7.4|Fri, 04 Mar 2016 8:22:46 GMT|33 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.4/tomee-plus-webapp-1.7.4.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.4/tomee-plus-webapp-1.7.4.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.4/tomee-plus-webapp-1.7.4.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.4/tomee-plus-webapp-1.7.4.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.7.3|Fri, 04 Dec 2015 17:59:30 GMT|51 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.3/tomee-plus-webapp-1.7.3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.3/tomee-plus-webapp-1.7.3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.3/tomee-plus-webapp-1.7.3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.3/tomee-plus-webapp-1.7.3.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.7.2|Sun, 17 May 2015 22:16:50 GMT|33 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.2/tomee-plus-webapp-1.7.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.2/tomee-plus-webapp-1.7.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.2/tomee-plus-webapp-1.7.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.2/tomee-plus-webapp-1.7.2.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.7.1|Fri, 12 Sep 2014 12:03:13 GMT|33 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.1/tomee-plus-webapp-1.7.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.1/tomee-plus-webapp-1.7.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.1/tomee-plus-webapp-1.7.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.1/tomee-plus-webapp-1.7.1.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.7.0|Sat, 09 Aug 2014 23:02:01 GMT|33 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.0/tomee-plus-webapp-1.7.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.0/tomee-plus-webapp-1.7.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.0/tomee-plus-webapp-1.7.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.7.0/tomee-plus-webapp-1.7.0.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.6.0.2|Tue, 06 May 2014 13:23:39 GMT|37 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0.2/tomee-plus-webapp-1.6.0.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0.2/tomee-plus-webapp-1.6.0.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0.2/tomee-plus-webapp-1.6.0.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0.2/tomee-plus-webapp-1.6.0.2.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.6.0.1|Wed, 16 Apr 2014 21:20:01 GMT|37 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0.1/tomee-plus-webapp-1.6.0.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0.1/tomee-plus-webapp-1.6.0.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0.1/tomee-plus-webapp-1.6.0.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0.1/tomee-plus-webapp-1.6.0.1.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.6.0|Sun, 17 Nov 2013 6:59:26 GMT|37 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0/tomee-plus-webapp-1.6.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0/tomee-plus-webapp-1.6.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0/tomee-plus-webapp-1.6.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.6.0/tomee-plus-webapp-1.6.0.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.5.2|Wed, 20 Mar 2013 4:13:54 GMT|36 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.2/tomee-plus-webapp-1.5.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.2/tomee-plus-webapp-1.5.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.2/tomee-plus-webapp-1.5.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.2/tomee-plus-webapp-1.5.2.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.5.1|Sun, 09 Dec 2012 20:37:28 GMT|36 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.1/tomee-plus-webapp-1.5.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.1/tomee-plus-webapp-1.5.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.1/tomee-plus-webapp-1.5.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.1/tomee-plus-webapp-1.5.1.war.asc[icon:download[] asc]
+|TomEE Plus Webapp|1.5.0|Fri, 28 Sep 2012 20:26:37 GMT|36 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.0/tomee-plus-webapp-1.5.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.0/tomee-plus-webapp-1.5.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.0/tomee-plus-webapp-1.5.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-plus-webapp/1.5.0/tomee-plus-webapp-1.5.0.war.asc[icon:download[] asc]
+|TomEE Project source-release|7.0.3|Tue, 07 Mar 2017 20:57:22 GMT|12 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.3/tomee-project-7.0.3-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.3/tomee-project-7.0.3-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.3/tomee-project-7.0.3-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.3/tomee-project-7.0.3-source-release.zip.asc[icon:download[] asc]
+|TomEE Project source-release|7.0.2|Sun, 06 Nov 2016 18:18:10 GMT|12 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.2/tomee-project-7.0.2-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.2/tomee-project-7.0.2-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.2/tomee-project-7.0.2-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.2/tomee-project-7.0.2-source-release.zip.asc[icon:download[] asc]
+|TomEE Project source-release|7.0.1|Wed, 22 Jun 2016 21:59:15 GMT|12 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.1/tomee-project-7.0.1-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.1/tomee-project-7.0.1-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.1/tomee-project-7.0.1-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.1/tomee-project-7.0.1-source-release.zip.asc[icon:download[] asc]
+|TomEE Project source-release|7.0.0|Tue, 17 May 2016 21:12:22 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0/tomee-project-7.0.0-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0/tomee-project-7.0.0-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0/tomee-project-7.0.0-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0/tomee-project-7.0.0-source-release.zip.asc[icon:download[] asc]
+|TomEE Project source-release|7.0.0-M3|Thu, 03 Mar 2016 15:25:45 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M3/tomee-project-7.0.0-M3-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M3/tomee-project-7.0.0-M3-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M3/tomee-project-7.0.0-M3-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M3/tomee-project-7.0.0-M3-source-release.zip.asc[icon:download[] asc]
+|TomEE Project source-release|7.0.0-M2|Tue, 23 Feb 2016 9:18:32 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M2/tomee-project-7.0.0-M2-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M2/tomee-project-7.0.0-M2-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M2/tomee-project-7.0.0-M2-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M2/tomee-project-7.0.0-M2-source-release.zip.asc[icon:download[] asc]
+|TomEE Project source-release|7.0.0-M1|Sat, 05 Dec 2015 8:37:38 GMT|11 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M1/tomee-project-7.0.0-M1-source-release.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M1/tomee-project-7.0.0-M1-source-release.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M1/tomee-project-7.0.0-M1-source-release.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-project/7.0.0-M1/tomee-project-7.0.0-M1-source-release.zip.asc[icon:download[] asc]
+|TomEE Webapp|7.0.3|Tue, 07 Mar 2017 21:12:29 GMT|25 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.3/tomee-webapp-7.0.3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.3/tomee-webapp-7.0.3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.3/tomee-webapp-7.0.3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.3/tomee-webapp-7.0.3.war.asc[icon:download[] asc]
+|TomEE Webapp|7.0.2|Sun, 06 Nov 2016 18:28:02 GMT|25 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.2/tomee-webapp-7.0.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.2/tomee-webapp-7.0.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.2/tomee-webapp-7.0.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.2/tomee-webapp-7.0.2.war.asc[icon:download[] asc]
+|TomEE Webapp|7.0.1|Wed, 22 Jun 2016 22:17:53 GMT|26 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.1/tomee-webapp-7.0.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.1/tomee-webapp-7.0.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.1/tomee-webapp-7.0.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.1/tomee-webapp-7.0.1.war.asc[icon:download[] asc]
+|TomEE Webapp|7.0.0|Tue, 17 May 2016 21:30:00 GMT|26 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0/tomee-webapp-7.0.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0/tomee-webapp-7.0.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0/tomee-webapp-7.0.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0/tomee-webapp-7.0.0.war.asc[icon:download[] asc]
+|TomEE Webapp|7.0.0-M3|Thu, 03 Mar 2016 15:37:38 GMT|26 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M3/tomee-webapp-7.0.0-M3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M3/tomee-webapp-7.0.0-M3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M3/tomee-webapp-7.0.0-M3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M3/tomee-webapp-7.0.0-M3.war.asc[icon:download[] asc]
+|TomEE Webapp|7.0.0-M2|Tue, 23 Feb 2016 9:29:47 GMT|25 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M2/tomee-webapp-7.0.0-M2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M2/tomee-webapp-7.0.0-M2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M2/tomee-webapp-7.0.0-M2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M2/tomee-webapp-7.0.0-M2.war.asc[icon:download[] asc]
+|TomEE Webapp|7.0.0-M1|Sat, 05 Dec 2015 9:35:37 GMT|26 MB |war| http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M1/tomee-webapp-7.0.0-M1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M1/tomee-webapp-7.0.0-M1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M1/tomee-webapp-7.0.0-M1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/tomee-webapp/7.0.0-M1/tomee-webapp-7.0.0-M1.war.asc[icon:download[] asc]
+|TomEE Webapp|4.0.0-beta-2|Mon, 16 Jan 2012 4:43:02 GMT|17 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/4.0.0-beta-2/tomee-webapp-4.0.0-beta-2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/4.0.0-beta-2/tomee-webapp-4.0.0-beta-2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/4.0.0-beta-2/tomee-webapp-4.0.0-beta-2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/4.0.0-beta-2/tomee-webapp-4.0.0-beta-2.war.asc[icon:download[] asc]
+|TomEE Webapp|4.0.0|Fri, 27 Apr 2012 4:18:28 GMT|19 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/4.0.0/tomee-webapp-4.0.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/4.0.0/tomee-webapp-4.0.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/4.0.0/tomee-webapp-4.0.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/4.0.0/tomee-webapp-4.0.0.war.asc[icon:download[] asc]
+|TomEE Webapp|1.7.4|Fri, 04 Mar 2016 8:15:13 GMT|21 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.4/tomee-webapp-1.7.4.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.4/tomee-webapp-1.7.4.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.4/tomee-webapp-1.7.4.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.4/tomee-webapp-1.7.4.war.asc[icon:download[] asc]
+|TomEE Webapp|1.7.3|Fri, 04 Dec 2015 17:55:20 GMT|21 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.3/tomee-webapp-1.7.3.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.3/tomee-webapp-1.7.3.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.3/tomee-webapp-1.7.3.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.3/tomee-webapp-1.7.3.war.asc[icon:download[] asc]
+|TomEE Webapp|1.7.2|Sun, 17 May 2015 22:16:22 GMT|21 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.2/tomee-webapp-1.7.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.2/tomee-webapp-1.7.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.2/tomee-webapp-1.7.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.2/tomee-webapp-1.7.2.war.asc[icon:download[] asc]
+|TomEE Webapp|1.7.1|Fri, 12 Sep 2014 12:00:25 GMT|21 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.1/tomee-webapp-1.7.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.1/tomee-webapp-1.7.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.1/tomee-webapp-1.7.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.1/tomee-webapp-1.7.1.war.asc[icon:download[] asc]
+|TomEE Webapp|1.7.0|Sat, 09 Aug 2014 22:59:18 GMT|21 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.0/tomee-webapp-1.7.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.0/tomee-webapp-1.7.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.0/tomee-webapp-1.7.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.7.0/tomee-webapp-1.7.0.war.asc[icon:download[] asc]
+|TomEE Webapp|1.6.0.2|Tue, 06 May 2014 13:21:48 GMT|20 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0.2/tomee-webapp-1.6.0.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0.2/tomee-webapp-1.6.0.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0.2/tomee-webapp-1.6.0.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0.2/tomee-webapp-1.6.0.2.war.asc[icon:download[] asc]
+|TomEE Webapp|1.6.0.1|Wed, 16 Apr 2014 21:15:45 GMT|20 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0.1/tomee-webapp-1.6.0.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0.1/tomee-webapp-1.6.0.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0.1/tomee-webapp-1.6.0.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0.1/tomee-webapp-1.6.0.1.war.asc[icon:download[] asc]
+|TomEE Webapp|1.6.0|Sun, 17 Nov 2013 6:58:24 GMT|20 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0/tomee-webapp-1.6.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0/tomee-webapp-1.6.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0/tomee-webapp-1.6.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.6.0/tomee-webapp-1.6.0.war.asc[icon:download[] asc]
+|TomEE Webapp|1.5.2|Wed, 20 Mar 2013 4:13:16 GMT|20 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.2/tomee-webapp-1.5.2.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.2/tomee-webapp-1.5.2.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.2/tomee-webapp-1.5.2.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.2/tomee-webapp-1.5.2.war.asc[icon:download[] asc]
+|TomEE Webapp|1.5.1|Sun, 09 Dec 2012 20:33:30 GMT|19 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.1/tomee-webapp-1.5.1.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.1/tomee-webapp-1.5.1.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.1/tomee-webapp-1.5.1.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.1/tomee-webapp-1.5.1.war.asc[icon:download[] asc]
+|TomEE Webapp|1.5.0|Fri, 28 Sep 2012 20:26:01 GMT|19 MB |war| http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.0/tomee-webapp-1.5.0.war[icon:download[] war] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.0/tomee-webapp-1.5.0.war.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.0/tomee-webapp-1.5.0.war.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/openejb/tomee-webapp/1.5.0/tomee-webapp-1.5.0.war.asc[icon:download[] asc]
+|===
+
+
diff --git a/src/main/jbake/content/examples/access-timeout-meta.adoc b/src/main/jbake/content/examples/access-timeout-meta.adoc
new file mode 100755
index 0000000..345b7c3
--- /dev/null
+++ b/src/main/jbake/content/examples/access-timeout-meta.adoc
@@ -0,0 +1,291 @@
+= @AccessTimeout the Meta-Annotation Way
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example access-timeout-meta can be browsed at https://github.com/apache/tomee/tree/master/examples/access-timeout-meta
+
+
+Any annotation that takes parameters can benefit from meta-annotations.  Here we see how `@AccessTimeout` can be far more understandable and manageable through meta-annotations.
+We'll use the link:access-timeout.html[access-timeout] example as our use-case.
+
+The value of the parameters supplied to `@AccessTimeout` have a dramatic affect on how what that annotation actually does.  Moreover, `@AccessTimeout` has one of those designs
+where `-1` and `0` have signifcantly different meanings.  One means "wait forever", the other means "never wait".  Only a lucky few can remember which is which on a daily basis.
+For the rest of us it is a constant source of bugs.
+
+Meta-Annotations to the rescue!
+
+=  Creating the Meta-Annotations
+
+As a matter of best-practices, we will put our meta-annotations in a package called `api`, for this example that gives us `org.superbiz.accesstimeout.api`.  The package `org.superbiz.api` would work just as well.
+
+The basic idea is to have a package where "approved' annotations are used and to prohibit usage of the non-meta versions of the annotations.  All the real configuration will
+then be centralized in the `api` package and changes to timeout values will be localized to that package and automatically be reflected throuhout the application.
+
+An interesting side-effect of this approach is that if the `api` package where the meta-annotation definitions exist is kept in a separate jar as well, then one can effectively
+change the configuration of an entire application by simply replacing the `api` jar.
+
+==  @Metatype <small>The "root" Meta-Annotation</small>
+
+As with all meta-annotation usage, you first need to create your own "root" meta-annotation.  This is as easy as creating an annotation
+named `Metatype` that is annotated with itself and has `ElementType.ANNOTATION_TYPE` as its target.
+
+
+
+[source,java]
+----
+package org.superbiz.accesstimeout.api;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.ANNOTATION_TYPE)
+public @interface Metatype {
+}
+----
+
+
+==  @AwaitNever
+
+When the `@AccessTimeout` annotation has the value of `0` that has the implication that one should never wait to access the bean.  If the bean is busy, the caller will immediately
+receive an `ConcurrentAccessException`.  This is hard to remember and definitely not self-documenting for those that never knew the details.
+
+To create a meta-annotation version of `@AccessTimeout(0)` we simply need to think of a good annotation name, create that annotation, and annotate it with both `@AccessTimeout`
+and `@Metatype`
+
+
+[source,java]
+----
+package org.superbiz.accesstimeout.api;
+
+import javax.ejb.AccessTimeout;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+
+@AccessTimeout(0)
+public @interface AwaitNever {
+}
+----
+
+
+==  @AwaitForever
+
+Just as `0` carries the special meaning of "never wait", a value of `-1` means "wait forever."
+
+As long as we're being picky, which we can be with meta-annotations,
+Technically "wait forever" is not the best description.  The actual methods of the `javax.util.concurrent` APIs use "await" rather than "wait".  One (wait) perphaps implies a
+command to wait, which this is not, and the other (await) perhaps better implies that waiting is possible but not a certainty.  So we will use "await" in our annotation names.
+
+We make our own `@AwaitForever` and annotate it with `@AccessTimeout(0)` and `@Metatype`
+
+
+[source,java]
+----
+package org.superbiz.accesstimeout.api;
+
+import javax.ejb.AccessTimeout;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+
+@AccessTimeout(-1)
+public @interface AwaitForever {
+}
+----
+
+
+==  @AwaitBriefly
+
+Non `-1` and `0` values to `@AccessTimeout` actually involve the full breadth of the annotation.  Here is where you get to specify the maximum number minutes, seconds,
+milliseconds, etc. where one might await access to the bean instance.
+
+
+[source,java]
+----
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.METHOD, ElementType.TYPE})
+
+@AccessTimeout(value = 5, unit = TimeUnit.SECONDS)
+public @interface AwaitBriefly {
+}
+----
+
+
+=  Configuration vs Operation
+
+Once you create a few meta-annotations and the fun becomes common-place, questoins start to raise in your mind on how to best get the benefits of meta-annotations.
+
+You have to really start thinking about how you want to approach your usage of meta-annotation and really put your designer hat on.  The fundamental question is
+**configuration vs operation** and the answer is subjective; how much flexibility do you want to design into your applications and where?
+
+==  Configuration names <small>describing the configuration</small>
+
+The simplest approach is to name your meta-annotations after the **configuration** they encapsulate. We've been following that format so far with `@AwaitNever` and `@AwaitForever`
+to clearly reflect the contents of each meta-annotation (`@AccessTimeout(-1)` and `@AccessTimeout(0)` respectively).
+
+The **cons** of this approach is that should you want to change the configuration of the application by only changing the meta-annotations -- this is one of the potential benefits
+of meta-annotations.  Certainly, the `@AwaitNever` meta-annotation can have no other value than `0` if it is to live up to its name.
+
+==  Operation names <small>describing the code</small>
+
+The alternate approach is to name your meta-annotations after the **operations** they apply to.  In short, to describe the code itself and not the configuration.  So, names like
+`@OrderCheckTimeout` or `@TwitterUpdateTimeout`.  These names are configuration-change-proof.  They would not change if the configuration changes and in fact they can facilitate
+finder-grained control over the configuration of an application.
+
+The **cons** are of course it is requires far more deliberation and consideration, not to mention more annotations.  Your skills as an architect, designer and ability to think as
+a administrator will be challenged.  You must be good at wearing your dev-opts hat.
+
+==  Pragmatism  <small>best of both worlds</small>
+
+Fortunately, meta-annotations are recursive.  You can do a little of both.
+
+
+[source,java]
+----
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+
+@AwaitBriefly
+public @interface TwitterUpdateTimeout {
+}
+----
+
+
+Of course you still need to be very deliberate on how your annotations are used.  When using a "configuration" named meta-annotation in code it can help to say to yourself,
+"I do not want to reconfigure this later."  If that doesn't feel quite right, put the extra effort into creating an operation named annotation and use in that code.
+
+=  Applying the Meta-Annotations
+
+Putting it all together, here's how we might apply our meta-annotations to the link:access-timeout.html[access-timeout] example.
+
+==  Before
+
+
+[source,java]
+----
+package org.superbiz.accesstimeout;
+
+import javax.ejb.AccessTimeout;
+import javax.ejb.Asynchronous;
+import javax.ejb.Lock;
+import javax.ejb.Singleton;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import static javax.ejb.LockType.WRITE;
+
+/**
+ * @version $Revision$ $Date$
+ */
+@Singleton
+@Lock(WRITE)
+public class BusyBee {
+
+    @Asynchronous
+    public Future stayBusy(CountDownLatch ready) {
+        ready.countDown();
+
+        try {
+            new CountDownLatch(1).await();
+        } catch (InterruptedException e) {
+            Thread.interrupted();
+        }
+
+        return null;
+    }
+
+    @AccessTimeout(0)
+    public void doItNow() {
+        // do something
+    }
+
+    @AccessTimeout(value = 5, unit = TimeUnit.SECONDS)
+    public void doItSoon() {
+        // do something
+    }
+
+    @AccessTimeout(-1)
+    public void justDoIt() {
+        // do something
+    }
+
+}
+----
+
+
+==  After
+
+
+[source,java]
+----
+package org.superbiz.accesstimeout;
+
+import org.superbiz.accesstimeout.api.AwaitBriefly;
+import org.superbiz.accesstimeout.api.AwaitForever;
+import org.superbiz.accesstimeout.api.AwaitNever;
+
+import javax.ejb.Asynchronous;
+import javax.ejb.Lock;
+import javax.ejb.Singleton;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Future;
+
+import static javax.ejb.LockType.WRITE;
+
+/**
+ * @version $Revision$ $Date$
+ */
+@Singleton
+@Lock(WRITE)
+public class BusyBee {
+
+    @Asynchronous
+    public Future stayBusy(CountDownLatch ready) {
+        ready.countDown();
+
+        try {
+            new CountDownLatch(1).await();
+        } catch (InterruptedException e) {
+            Thread.interrupted();
+        }
+
+        return null;
+    }
+
+    @AwaitNever
+    public void doItNow() {
+        // do something
+    }
+
+    @AwaitBriefly
+    public void doItSoon() {
+        // do something
+    }
+
+    @AwaitForever
+    public void justDoIt() {
+        // do something
+    }
+
+}
+----
+
diff --git a/src/main/jbake/content/examples/access-timeout.adoc b/src/main/jbake/content/examples/access-timeout.adoc
new file mode 100755
index 0000000..8adbf40
--- /dev/null
+++ b/src/main/jbake/content/examples/access-timeout.adoc
@@ -0,0 +1,225 @@
+= @AccessTimeout annotation
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example access-timeout can be browsed at https://github.com/apache/tomee/tree/master/examples/access-timeout
+
+
+Before taking a look at `@AccessTimeout`, it might help to see when a caller might have to "wait"
+
+==  Waiting
+
+=== Stateful Bean
+
+NOTE: By default, clients are allowed to make concurrent calls to a stateful session object and the container is required to serialize such concurrent requests. Note that the container never permits multi-threaded access to the actual stateful session bean instance. For this reason, Read/Write method locking metadata, as well as the bean-managed concurrency mode, are not applicable to stateful session beans and must not be used.
+
+
+This means that when a method `foo()` of a stateful bean instance is being executed and a second request comes in for that method or another method, EJB container would serialize the second request. It would not let the method be executed concurrently but wait until the first request is processed.
+
+The client would wait also when `@Stateful` bean is in a transaction and the client is invoking it from outside that transaction.
+
+=== Stateless Bean
+
+Say there are 20 instances of a bean in the pool and all of them are busy. Now when the next request comes in, the processing *might wait* for a bean to be available in the pool. (Note: Pooling sematics, if any, are not covered by the spec. The vendor's pooling semantics might or might not involve a wait condition)
+
+=== Singleton Bean
+
+The container enforces a single-threaded access by default to singleton beans. That's the equivalent of annotating with `@Lock(Write)`. So when a `@Lock(Write)` method is executing, all other `@Lock(READ)` and `@Lock(WRITE)` method invocations would have to wait.
+
+===  Summary
+
+ - `@Singleton` - an `@Lock(WRITE)` method is being invoked and container-managed concurrency is being used.  All methods are `@Lock(WRITE)` by default.
+ - `@Stateful` - any method of the instance is being invoked and a second invocation occurs.  OR the `@Stateful` bean is in a transaction and the caller is invoking it from outside that transaction.
+ - `@Stateless` - no instances are available in the pool. As noted, however, pooling sematics, if any, are not covered by the spec.  If the vendor's pooling semantics do involve a wait condition, the @AccessTimeout should apply.
+
+=  @AccessTimeout
+
+The `@AccessTimeout` is simply a convenience wrapper around the `long` and `TimeUnit` tuples commonly used in the `java.util.concurrent` API.
+
+
+[source,java]
+----
+import java.util.concurrent.TimeUnit;
+@Target({METHOD, TYPE})
+@Retention(RUNTIME)
+public @interface AccessTimeout {
+    long value();
+    TimeUnit unit() default TimeUnit.MILLISECONDS;
+}
+----
+
+
+==  Usage
+
+A method or class can be annotated with @AccessTimeout to specify the maximum time a call might wait for access to the bean wait should a wait condition occur.
+
+The semantics of the value element are as follows:
+
+ - A `value` > 0 indicates a timeout value in the units specified by the `unit` element.
+ - A `value` of 0 means concurrent access is not permitted.
+ - A `value` of -1 indicates that the client request will block indefinitely until forward progress it can proceed.
+
+Just as simple as that !
+
+=== What exception would the client receive, with a timeout ?
+Quoting from the spec, "if a client-invoked business method is in progress on an instance when another client-invoked call, from the same or different client, arrives at the same instance of a stateful session bean, if the second client is a client of the bean�s business interface or no-interface view, the concurrent invocation must result in the second client receiving a javax.ejb.ConcurrentAccessException[15]. If the EJB 2.1 client view is used, the container must throw a java.rmi.RemoteException if the second client is a remote client, or a javax.ejb.EJBException if the second client is a local client"
+
+===  No standard default
+
+Note that the `value` attribute has no default.  This was intentional and intended to communicate that if `@AccessTimeout` is not explicitly used, the behavior you get is vendor-specific.
+
+Some vendors will wait for a preconfigured time and throw `javax.ejb.ConcurrentAccessException`, some vendors will throw it immediately.
+
+=  Example
+
+Here we have a simple @Singleton bean that has three synchronous methods and one `@Asynchronous` method.  The bean itself is annotated `@Lock(WRITE)` so that only one thread may access the `@Singleton` at a time.  This is the default behavior of an `@Singleton` bean, so explicit usage of `@Lock(WRITE)` is not needed but is rather nice for clarity as the single-threaded nature of the bean is important to the example.
+
+
+[source,java]
+----
+@Singleton
+@Lock(WRITE)
+public class BusyBee {
+
+    @Asynchronous
+    public Future stayBusy(CountDownLatch ready) {
+        ready.countDown();
+
+        try {
+            new CountDownLatch(1).await();
+        } catch (InterruptedException e) {
+            Thread.interrupted();
+        }
+
+        return null;
+    }
+
+    @AccessTimeout(0)
+    public void doItNow() {
+        // do something
+    }
+
+    @AccessTimeout(value = 5, unit = TimeUnit.SECONDS)
+    public void doItSoon() {
+        // do something
+    }
+
+    @AccessTimeout(-1)
+    public void justDoIt() {
+        // do something
+    }
+
+}
+----
+
+
+The `@Asynchronous` method is not a critical part of `@AccessTimeout`, but serves as a simple way to "lock" the bean for testing purposes.  It allows us to easily test the concurrent behavior of the bean.
+
+
+[source,java]
+----
+public class BusyBeeTest extends TestCase {
+
+    public void test() throws Exception {
+
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        final CountDownLatch ready = new CountDownLatch(1);
+
+        final BusyBee busyBee = (BusyBee) context.lookup("java:global/access-timeout/BusyBee");
+
+        // This asynchronous method will never exit
+        busyBee.stayBusy(ready);
+
+        // Are you working yet little bee?
+        ready.await();
+
+
+        // OK, Bee is busy
+
+
+        { // Timeout Immediately
+            final long start = System.nanoTime();
+
+            try {
+                busyBee.doItNow();
+
+                fail("The bee should be busy");
+            } catch (Exception e) {
+                // the bee is still too busy as expected
+            }
+
+            assertEquals(0, seconds(start));
+        }
+
+        { // Timeout in 5 seconds
+            final long start = System.nanoTime();
+
+            try {
+                busyBee.doItSoon();
+
+                fail("The bee should be busy");
+            } catch (Exception e) {
+                // the bee is still too busy as expected
+            }
+
+            assertEquals(5, seconds(start));
+        }
+
+        // This will wait forever, give it a try if you have that long
+        //busyBee.justDoIt();
+    }
+
+    private long seconds(long start) {
+        return TimeUnit.NANOSECONDS.toSeconds(System.nanoTime() - start);
+    }
+}
+----
+
+
+
+=  Running
+
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.accesstimeout.BusyBeeTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/access-timeout
+INFO - openejb.base = /Users/dblevins/examples/access-timeout
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/access-timeout/target/classes
+INFO - Beginning load: /Users/dblevins/examples/access-timeout/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/access-timeout
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean BusyBee: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.accesstimeout.BusyBeeTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/access-timeout" loaded.
+INFO - Assembling app: /Users/dblevins/examples/access-timeout
+INFO - Jndi(name="java:global/access-timeout/BusyBee!org.superbiz.accesstimeout.BusyBee")
+INFO - Jndi(name="java:global/access-timeout/BusyBee")
+INFO - Jndi(name="java:global/EjbModule748454644/org.superbiz.accesstimeout.BusyBeeTest!org.superbiz.accesstimeout.BusyBeeTest")
+INFO - Jndi(name="java:global/EjbModule748454644/org.superbiz.accesstimeout.BusyBeeTest")
+INFO - Created Ejb(deployment-id=org.superbiz.accesstimeout.BusyBeeTest, ejb-name=org.superbiz.accesstimeout.BusyBeeTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=BusyBee, ejb-name=BusyBee, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.accesstimeout.BusyBeeTest, ejb-name=org.superbiz.accesstimeout.BusyBeeTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=BusyBee, ejb-name=BusyBee, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/access-timeout)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.071 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
diff --git a/src/main/jbake/content/examples/alternate-descriptors.adoc b/src/main/jbake/content/examples/alternate-descriptors.adoc
new file mode 100755
index 0000000..6946ce0
--- /dev/null
+++ b/src/main/jbake/content/examples/alternate-descriptors.adoc
@@ -0,0 +1,177 @@
+= Alternate Descriptors
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example alternate-descriptors can be browsed at https://github.com/apache/tomee/tree/master/examples/alternate-descriptors
+
+
+See the link:../../alternate-descriptors.html[Alternate Descriptors] page for the full details of how this feature works.
+
+For our example we'll use the standard "moviefun" code which contains a `Movie` entity and `Movies` session bean.  To add a twist
+for testing and demonstrate alternate descriptors, we will create an interceptor that will be used only in our test cases.
+
+To add this to our application, we simply need a `test.ejb-jar.xml` in the same location that the regular `ejb-jar.xml` would be expected.
+
+That gives us the following files in our project:
+
+ - src/main/resources/META-INF/ejb-jar.xml
+ - src/main/resources/META-INF/persistence.xml
+ - src/main/resources/META-INF/test.ejb-jar.xml
+
+==  The test.ejb-jar.xml
+
+The normal `ejb-jar.xml` simply contains `<ejb-jar/>`, however the `test.ejb-jar.xml` we add an extra interceptor:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee">
+  <assembly-descriptor>
+    <interceptor-binding>
+      <ejb-name>Movies</ejb-name>
+      <interceptor-class>org.superbiz.altdd.MoviesTest$Interceptor</interceptor-class>
+    </interceptor-binding>
+  </assembly-descriptor>
+</ejb-jar>
+----
+
+
+==  The TestCase
+
+To enable our `test.ejb-jar.xml` in the test case, we simply set the `openejb.altdd.prefix` property when creating the embedded `EJBContainer`
+
+     public class MoviesTest extends TestCase {
+
+         @EJB
+         private Movies movies;
+
+         @Resource
+         private UserTransaction userTransaction;
+
+         @PersistenceContext
+         private EntityManager entityManager;
+
+         public void setUp() throws Exception {
+             Properties p = new Properties();
+             p.put("movieDatabase", "new://Resource?type=DataSource");
+             p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+             p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+             p.put("openejb.altdd.prefix", "test");
+
+             EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+         }
+
+         public void test() throws Exception {
+
+             userTransaction.begin();
+
+             try {
+                 entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+                 entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+                 entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+                 List<Movie> list = movies.getMovies();
+                 assertEquals("List.size()", 3, list.size());
+
+                 for (Movie movie : list) {
+                     movies.deleteMovie(movie);
+                 }
+
+                 assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+
+             } finally {
+                 try {
+                     userTransaction.commit();
+                     fail("Transaction should have been rolled back");
+                 } catch (RollbackException e) {
+                     // Good, we don't want to clean up the db
+                 }
+             }
+         }
+
+         public static class Interceptor {
+
+             @Resource
+             private SessionContext sessionContext;
+
+             @AroundInvoke
+             public Object invoke(InvocationContext context) throws Exception {
+
+                 sessionContext.setRollbackOnly();
+
+                 return context.proceed();
+             }
+         }
+     }
+
+As noted in link:../../alternate-descriptors.html[the documentation], several prefixes can be used at once.
+
+=  Running
+
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.altdd.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/alternate-descriptors
+INFO - openejb.base = /Users/dblevins/examples/alternate-descriptors
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/alternate-descriptors/target/classes
+INFO - Beginning load: /Users/dblevins/examples/alternate-descriptors/target/classes
+INFO - AltDD ejb-jar.xml -> file:/Users/dblevins/examples/alternate-descriptors/target/classes/META-INF/test.ejb-jar.xml
+INFO - Configuring enterprise application: /Users/dblevins/examples/alternate-descriptors
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.altdd.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/alternate-descriptors" loaded.
+INFO - Assembling app: /Users/dblevins/examples/alternate-descriptors
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 411ms
+INFO - Jndi(name="java:global/alternate-descriptors/Movies!org.superbiz.altdd.Movies")
+INFO - Jndi(name="java:global/alternate-descriptors/Movies")
+INFO - Jndi(name="java:global/EjbModule1893321675/org.superbiz.altdd.MoviesTest!org.superbiz.altdd.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1893321675/org.superbiz.altdd.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.altdd.MoviesTest, ejb-name=org.superbiz.altdd.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.altdd.MoviesTest, ejb-name=org.superbiz.altdd.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/alternate-descriptors)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.569 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
+=  Warning on Tooling
+
+If you split your descriptors into separate directories, this support will not work.  Specifically, this will not work:
+
+ - src/main/resources/META-INF/ejb-jar.xml
+ - src/main/resources/META-INF/persistence.xml
+ - src/**test**/resources/META-INF/test.ejb-jar.xml
+
+This support is **not** aware of any Maven, Gradle, Ant, IntelliJ, NetBeans, Eclipse or other settings.
+
+
+
+
+
diff --git a/src/main/jbake/content/examples/applet.adoc b/src/main/jbake/content/examples/applet.adoc
new file mode 100755
index 0000000..b3bba7d
--- /dev/null
+++ b/src/main/jbake/content/examples/applet.adoc
@@ -0,0 +1,196 @@
+= Applet
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example applet can be browsed at https://github.com/apache/tomee/tree/master/examples/applet
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Calculator
+
+
+[source,java]
+----
+package org.superbiz.applet;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface Calculator {
+    public double add(double x, double y);
+}
+----
+
+
+==  CalculatorApplet
+
+
+[source,java]
+----
+package org.superbiz.applet;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.rmi.PortableRemoteObject;
+import javax.swing.JApplet;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Properties;
+
+public class CalculatorApplet extends JApplet {
+    JTextArea area;
+
+    JTextField field1;
+    JTextField field2;
+    JLabel label1;
+    JLabel label2;
+    JButton button;
+    JLabel label3;
+    Context ctx;
+
+    public void init() {
+        try {
+            SwingUtilities.invokeAndWait(new Runnable() {
+                public void run() {
+                    createUI();
+                }
+            });
+        } catch (Exception e) {
+            System.err.println("createGUI didn't successfully complete");
+        }
+    }
+
+    private void createUI() {
+        field1 = new JTextField();
+        field2 = new JTextField();
+        label1 = new JLabel("Enter first number");
+        label2 = new JLabel("Enter second number");
+        label3 = new JLabel("RESULT=");
+        button = new JButton("Add");
+
+        setLayout(new GridLayout(3, 2));
+        add(label1);
+        add(field1);
+        add(label2);
+        add(field2);
+        add(button);
+        add(label3);
+        Properties props = new Properties();
+        props.put(Context.INITIAL_CONTEXT_FACTORY,
+                "org.apache.openejb.client.RemoteInitialContextFactory");
+        props.put(Context.PROVIDER_URL, "http://127.0.0.1:8080/applet/ejb");
+        try {
+            ctx = new InitialContext(props);
+        } catch (NamingException e) {
+            throw new RuntimeException(e);
+        }
+        button.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+
+                try {
+                    final Object ref = ctx.lookup("CalculatorImplRemote");
+                    Calculator calc = (Calculator) PortableRemoteObject.narrow(
+                            ref, Calculator.class);
+                    String text1 = field1.getText();
+                    String text2 = field2.getText();
+                    int num1 = Integer.parseInt(text1);
+                    int num2 = Integer.parseInt(text2);
+                    double result = calc.add(num1, num2);
+                    label3.setText("RESULT=" + result);
+                } catch (NamingException ex) {
+                    throw new RuntimeException(ex);
+                }
+            }
+        });
+    }
+}
+----
+
+
+==  CalculatorImpl
+
+
+[source,java]
+----
+package org.superbiz.applet;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class CalculatorImpl implements Calculator {
+
+    public double add(double x, double y) {
+        return x + y;
+    }
+}
+----
+
+
+==  web.xml
+
+
+[source,xml]
+----
+<web-app>
+  <servlet>
+    <servlet-name>ServerServlet</servlet-name>
+    <servlet-class>org.apache.openejb.server.httpd.ServerServlet</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>ServerServlet</servlet-name>
+    <url-pattern>/ejb/*</url-pattern>
+  </servlet-mapping>
+</web-app>
+----
+
+    
+
+==  JNDILookupTest
+
+
+[source,java]
+----
+package org.superbiz;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.superbiz.applet.Calculator;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.rmi.PortableRemoteObject;
+import java.util.Properties;
+
+
+public class JNDILookupTest {
+
+    @Test
+    public void test() {
+        Properties props = new Properties();
+        props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+        props.put(Context.PROVIDER_URL, "http://127.0.0.1:8080/tomee/ejb");
+        try {
+            Context ctx = new InitialContext(props);
+            System.out.println("Found context " + ctx);
+            final Object ref = ctx.lookup("CalculatorImplRemote");
+            Calculator calc = (Calculator) PortableRemoteObject.narrow(ref, Calculator.class);
+            double result = calc.add(10, 30);
+            Assert.assertEquals(40, result, 0.5);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
+----
+
diff --git a/src/main/jbake/content/examples/application-composer.adoc b/src/main/jbake/content/examples/application-composer.adoc
new file mode 100755
index 0000000..cf32a75
--- /dev/null
+++ b/src/main/jbake/content/examples/application-composer.adoc
@@ -0,0 +1,180 @@
+= Application Composer
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example application-composer can be browsed at https://github.com/apache/tomee/tree/master/examples/application-composer
+
+
+The `org.apache.openejb.junit.ApplicationComposer` is JUnit test runner modeled after the way we've done testing internally in OpenEJB for years (since about 2006).
+It involves no classpath scanning at all.  If you want something to be in the app, you must build it directly in your testcase.
+
+With the `ApplicationComposer` you can do identical testing that OpenEJB uses internally, but with limited dependency on OpenEJB itself.  The main dependency is on the code
+that is used to build the actual applications:
+
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.openejb</groupId>
+  <artifactId>openejb-jee</artifactId>
+  <version>4.0.0-beta-1</version>
+</dependency>
+----
+
+
+=  Composing an Application
+
+The main difference to the embedded `EJBContainer` API is building the application in the test code.  This is done with one or more methods in the test case annotated
+with `org.apache.openejb.junit.Module` using the following format:
+
+
+[source,java]
+----
+@Module
+public <return-value> <module-name>() {
+
+Where **module-name** is the name you wish to use for that module and **return-value** can be any one of the following:
+
+ - java.lang.Class
+ - java.lang.Class[]
+ - org.apache.openejb.jee.EjbJar
+ - org.apache.openejb.jee.EnterpriseBean
+ - org.apache.openejb.jee.Application
+ - org.apache.openejb.jee.Connector
+ - org.apache.openejb.jee.Beans
+ - org.apache.openejb.jee.jpa.unit.Persistence
+ - org.apache.openejb.jee.jpa.unit.PersistenceUnit
+
+# Example
+
+Used in an actual testcase, that might look like so:
+
+import junit.framework.TestCase;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.StatefulBean;
+import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.Configuration;
+import org.apache.openejb.junit.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.transaction.UserTransaction;
+import java.util.List;
+import java.util.Properties;
+
+@RunWith(ApplicationComposer.class)
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @Resource
+    private UserTransaction userTransaction;
+
+    @PersistenceContext
+    private EntityManager entityManager;
+
+    @Module
+    public PersistenceUnit persistence() {
+        PersistenceUnit unit = new PersistenceUnit("movie-unit");
+        unit.setJtaDataSource("movieDatabase");
+        unit.setNonJtaDataSource("movieDatabaseUnmanaged");
+        unit.getClazz().add(Movie.class.getName());
+        unit.setProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
+        return unit;
+    }
+
+    @Module
+    public EjbJar beans() {
+        EjbJar ejbJar = new EjbJar("movie-beans");
+        ejbJar.addEnterpriseBean(new StatefulBean(MoviesImpl.class));
+        return ejbJar;
+    }
+
+    @Configuration
+    public Properties config() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+        return p;
+    }
+
+    @Test
+    public void test() throws Exception {
+
+        userTransaction.begin();
+
+        try {
+            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                movies.deleteMovie(movie);
+            }
+
+            assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+
+        } finally {
+            userTransaction.commit();
+        }
+    }
+}
+----
+
+
+=  Running
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.composed.MoviesTest
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Configuring enterprise application: /Users/dblevins/examples/application-composer/MoviesTest
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.composed.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean MoviesImpl: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/application-composer/MoviesTest" loaded.
+INFO - Assembling app: /Users/dblevins/examples/application-composer/MoviesTest
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 449ms
+INFO - Jndi(name=org.superbiz.composed.MoviesTestLocalBean) --> Ejb(deployment-id=org.superbiz.composed.MoviesTest)
+INFO - Jndi(name=global/MoviesTest/EjbModule2027711095/MoviesTest!org.superbiz.composed.MoviesTest) --> Ejb(deployment-id=org.superbiz.composed.MoviesTest)
+INFO - Jndi(name=global/MoviesTest/EjbModule2027711095/MoviesTest) --> Ejb(deployment-id=org.superbiz.composed.MoviesTest)
+INFO - Jndi(name=MoviesImplLocal) --> Ejb(deployment-id=MoviesImpl)
+INFO - Jndi(name=global/MoviesTest/movie-beans/MoviesImpl!org.superbiz.composed.Movies) --> Ejb(deployment-id=MoviesImpl)
+INFO - Jndi(name=global/MoviesTest/movie-beans/MoviesImpl) --> Ejb(deployment-id=MoviesImpl)
+INFO - Created Ejb(deployment-id=org.superbiz.composed.MoviesTest, ejb-name=MoviesTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=MoviesImpl, ejb-name=MoviesImpl, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.composed.MoviesTest, ejb-name=MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=MoviesImpl, ejb-name=MoviesImpl, container=Default Stateful Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/application-composer/MoviesTest)
+INFO - Undeploying app: /Users/dblevins/examples/application-composer/MoviesTest
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.221 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/applicationcomposer-jaxws-cdi.adoc b/src/main/jbake/content/examples/applicationcomposer-jaxws-cdi.adoc
new file mode 100755
index 0000000..7116a9f
--- /dev/null
+++ b/src/main/jbake/content/examples/applicationcomposer-jaxws-cdi.adoc
@@ -0,0 +1,9 @@
+= applicationcomposer-jaxws-cdi
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example applicationcomposer-jaxws-cdi can be browsed at https://github.com/apache/tomee/tree/master/examples/applicationcomposer-jaxws-cdi
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/applicationexception.adoc b/src/main/jbake/content/examples/applicationexception.adoc
new file mode 100755
index 0000000..72cdda6
--- /dev/null
+++ b/src/main/jbake/content/examples/applicationexception.adoc
@@ -0,0 +1,129 @@
+= @ApplicationException annotation
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example applicationexception can be browsed at https://github.com/apache/tomee/tree/master/examples/applicationexception
+
+
+=  Declaring an @ApplicationException
+
+
+[source,java]
+----
+import javax.ejb.ApplicationException;
+
+/**
+ * @version $Rev: 784112 $ $Date: 2009-06-12 06:23:57 -0700 (Fri, 12 Jun 2009) $
+ */
+@ApplicationException(rollback = true)
+public abstract class BusinessException extends RuntimeException {
+}
+----
+
+
+By default, @ApplicationException is inherited
+
+
+[source,java]
+----
+public class ValueRequiredException extends BusinessException {
+}
+----
+
+
+=  In the bean code
+
+
+[source,java]
+----
+@Stateless
+public class ThrowBusinessExceptionImpl implements ThrowBusinessException {
+
+    public void throwValueRequiredException() throws BusinessException {
+        throw new ValueRequiredException();
+    }
+
+}
+----
+
+
+Normally throwing a `RuntimeException` would cause the container to both rollback the transaction and destroy the bean instance that threw the exception.
+
+As `BusinessException` has been annotated `@ApplicationException(rollback = true)` only the transaction rollback will occur and the bean will not get destroyed.
+
+=  The TestCase
+
+
+[source,java]
+----
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+public class ThrowBusinessExceptionImplTest {
+
+    private InitialContext initialContext;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+
+        initialContext = new InitialContext(properties);
+    }
+
+    @Test(expected = ValueRequiredException.class)
+    public void testCounterViaRemoteInterface() throws Exception {
+        Object object = initialContext.lookup("ThrowBusinessExceptionImplRemote");
+
+        Assert.assertNotNull(object);
+        Assert.assertTrue(object instanceof ThrowBusinessException);
+        ThrowBusinessException bean = (ThrowBusinessException) object;
+        bean.throwValueRequiredException();
+    }
+}
+----
+
+
+=  Running
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.appexception.ThrowBusinessExceptionImplTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/applicationexception
+INFO - openejb.base = /Users/dblevins/examples/applicationexception
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/applicationexception/target/classes
+INFO - Beginning load: /Users/dblevins/examples/applicationexception/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/applicationexception/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean ThrowBusinessExceptionImpl: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/applicationexception/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/applicationexception/classpath.ear
+INFO - Jndi(name=ThrowBusinessExceptionImplRemote) --> Ejb(deployment-id=ThrowBusinessExceptionImpl)
+INFO - Jndi(name=global/classpath.ear/applicationexception/ThrowBusinessExceptionImpl!org.superbiz.appexception.ThrowBusinessException) --> Ejb(deployment-id=ThrowBusinessExceptionImpl)
+INFO - Jndi(name=global/classpath.ear/applicationexception/ThrowBusinessExceptionImpl) --> Ejb(deployment-id=ThrowBusinessExceptionImpl)
+INFO - Created Ejb(deployment-id=ThrowBusinessExceptionImpl, ejb-name=ThrowBusinessExceptionImpl, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=ThrowBusinessExceptionImpl, ejb-name=ThrowBusinessExceptionImpl, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/applicationexception/classpath.ear)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.434 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
diff --git a/src/main/jbake/content/examples/arquillian-jpa.adoc b/src/main/jbake/content/examples/arquillian-jpa.adoc
new file mode 100755
index 0000000..287e933
--- /dev/null
+++ b/src/main/jbake/content/examples/arquillian-jpa.adoc
@@ -0,0 +1,180 @@
+= Arquillian Persistence Extension
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example arquillian-jpa can be browsed at https://github.com/apache/tomee/tree/master/examples/arquillian-jpa
+
+
+A sample showing how to use TomEE, Arquillian and its Persistence Extension.
+
+Note that it doesn't work with embedded containers (openejb, tomee-embedded)
+if you don't use workarounds like https://github.com/rmannibucau/persistence-with-openejb-and-arquillian
+(see src/test/resources folder).
+
+=  Running (output)
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.arquillian.test.persistence.PersistenceTest
+oct. 01, 2014 6:30:23 PM org.apache.openejb.arquillian.common.Setup findHome
+INFOS: Unable to find home in: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote
+oct. 01, 2014 6:30:23 PM org.apache.openejb.arquillian.common.MavenCache getArtifact
+INFOS: Downloading org.apache.openejb:apache-tomee:7.0.0-SNAPSHOT:zip:webprofile please wait...
+oct. 01, 2014 6:30:23 PM org.apache.openejb.arquillian.common.Zips unzip
+INFOS: Extracting '/home/rmannibucau/.m2/repository/org/apache/openejb/apache-tomee/7.0.0-SNAPSHOT/apache-tomee-7.0.0-SNAPSHOT-webprofile.zip' to '/home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote'
+oct. 01, 2014 6:30:24 PM org.apache.tomee.arquillian.remote.RemoteTomEEContainer configure
+INFOS: Downloaded container to: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT
+INFOS - Server version: Apache Tomcat/8.0.14
+INFOS - Server built:   Sep 24 2014 09:01:51
+INFOS - Server number:  8.0.14.0
+INFOS - OS Name:        Linux
+INFOS - OS Version:     3.13.0-35-generic
+INFOS - Architecture:   amd64
+INFOS - JVM Version:    1.7.0_67-b01
+INFOS - JVM Vendor:     Oracle Corporation
+INFOS - The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
+INFOS - Initializing ProtocolHandler ["http-nio-52256"]
+INFOS - Using a shared selector for servlet write/read
+INFOS - Initializing ProtocolHandler ["ajp-nio-40071"]
+INFOS - Using a shared selector for servlet write/read
+INFOS - Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
+INFOS - ********************************************************************************
+INFOS - OpenEJB http://tomee.apache.org/
+INFOS - Startup: Wed Oct 01 18:30:26 CEST 2014
+INFOS - Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
+INFOS - Version: 7.0.0-SNAPSHOT
+INFOS - Build date: 20141001
+INFOS - Build time: 04:53
+INFOS - ********************************************************************************
+INFOS - openejb.home = /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT
+INFOS - openejb.base = /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT
+INFOS - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@13158bbd
+INFOS - Succeeded in installing singleton service
+INFOS - openejb configuration file is '/home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT/conf/tomee.xml'
+INFOS - Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
+INFOS - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFOS - Configuring Service(id=demoDataSource, type=Resource, provider-id=Default JDBC Database)
+INFOS - Using 'openejb.system.apps=true'
+INFOS - Configuring enterprise application: openejb
+INFOS - Using openejb.deploymentId.format '{ejbName}'
+INFOS - Auto-deploying ejb openejb/Deployer: EjbDeployment(deployment-id=openejb/Deployer)
+INFOS - Auto-deploying ejb openejb/ConfigurationInfo: EjbDeployment(deployment-id=openejb/ConfigurationInfo)
+INFOS - Auto-deploying ejb MEJB: EjbDeployment(deployment-id=MEJB)
+INFOS - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFOS - Auto-creating a container for bean openejb/Deployer: Container(type=STATELESS, id=Default Stateless Container)
+INFOS - Enterprise application "openejb" loaded.
+INFOS - Creating TransactionManager(id=Default Transaction Manager)
+INFOS - Creating SecurityService(id=Tomcat Security Service)
+INFOS - Creating Resource(id=demoDataSource)
+INFOS - Disabling testOnBorrow since no validation query is provided
+INFOS - Creating Container(id=Default Stateless Container)
+INFOS - Not creating another application classloader for openejb
+INFOS - Assembling app: openejb
+INFOS - Using 'openejb.jndiname.format={deploymentId}{interfaceType.openejbLegacyName}'
+INFOS - Jndi(name=openejb/DeployerBusinessRemote) --> Ejb(deployment-id=openejb/Deployer)
+INFOS - Jndi(name=global/openejb/openejb/Deployer!org.apache.openejb.assembler.Deployer) --> Ejb(deployment-id=openejb/Deployer)
+INFOS - Jndi(name=global/openejb/openejb/Deployer) --> Ejb(deployment-id=openejb/Deployer)
+INFOS - Jndi(name=openejb/ConfigurationInfoBusinessRemote) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+INFOS - Jndi(name=global/openejb/openejb/ConfigurationInfo!org.apache.openejb.assembler.classic.cmd.ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+INFOS - Jndi(name=global/openejb/openejb/ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+INFOS - Jndi(name=MEJB) --> Ejb(deployment-id=MEJB)
+INFOS - Jndi(name=global/openejb/MEJB!javax.management.j2ee.ManagementHome) --> Ejb(deployment-id=MEJB)
+INFOS - Jndi(name=global/openejb/MEJB) --> Ejb(deployment-id=MEJB)
+INFOS - Created Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
+INFOS - Created Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
+INFOS - Created Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
+INFOS - Started Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
+INFOS - Started Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
+INFOS - Started Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
+INFOS - Deployed MBean(openejb.user.mbeans:application=openejb,group=org.apache.openejb.assembler.monitoring,name=JMXDeployer)
+INFOS - Deployed Application(path=openejb)
+INFOS - Creating ServerService(id=cxf-rs)
+INFOS -   ** Bound Services **
+INFOS -   NAME                 IP              PORT  
+INFOS - -------
+INFOS - Ready!
+INFOS - Initialization processed in 2589 ms
+INFOS - Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
+INFOS - Creating Resource(id=UserDatabase)
+INFOS - Démarrage du service Catalina
+INFOS - Starting Servlet Engine: Apache Tomcat (TomEE)/8.0.14 (7.0.0-SNAPSHOT)
+INFOS - Starting ProtocolHandler ["http-nio-52256"]
+INFOS - Starting ProtocolHandler ["ajp-nio-40071"]
+INFOS - Server startup in 140 ms
+oct. 01, 2014 6:30:30 PM org.apache.openejb.client.EventLogger log
+INFOS: RemoteInitialContextCreated{providerUri=http://localhost:52256/tomee/ejb}
+INFOS - Extracting jar: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest.war
+INFOS - Extracted path: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest
+INFOS - using default host: localhost
+INFOS - ------------------------- localhost -> /UserPersistenceTest
+INFOS - Using 'openejb.session.manager=org.apache.tomee.catalina.session.QuickSessionManager'
+INFOS - Configuring enterprise application: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest
+INFOS - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFOS - Auto-creating a container for bean UserPersistenceTest_org.superbiz.arquillian.test.persistence.PersistenceTest: Container(type=MANAGED, id=Default Managed Container)
+INFOS - Creating Container(id=Default Managed Container)
+INFOS - Using directory /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/apache-tomee-remote/apache-tomee-webprofile-7.0.0-SNAPSHOT/temp for stateful session passivation
+INFOS - Configuring PersistenceUnit(name=demoApplicationPU)
+INFOS - Auto-creating a Resource with id 'demoDataSourceNonJta' of type 'DataSource for 'demoApplicationPU'.
+INFOS - Configuring Service(id=demoDataSourceNonJta, type=Resource, provider-id=demoDataSource)
+INFOS - Creating Resource(id=demoDataSourceNonJta)
+INFOS - Disabling testOnBorrow since no validation query is provided
+INFOS - Adjusting PersistenceUnit demoApplicationPU <non-jta-data-source> to Resource ID 'demoDataSourceNonJta' from 'null'
+INFOS - Enterprise application "/home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest" loaded.
+INFOS - Assembling app: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest
+INFOS - OpenJPA dynamically loaded a validation provider.
+INFOS - Starting OpenJPA 2.4.0-nonfinal-1598334
+INFOS - Using dictionary class "org.apache.openjpa.jdbc.sql.HSQLDictionary" (HSQL Database Engine 2.3.2 ,HSQL Database Engine Driver 2.3.2).
+INFOS - Connected to HSQL Database Engine version 2.2 using JDBC driver HSQL Database Engine Driver version 2.3.2. 
+INFOS - SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES --> 0ms
+INFOS - CREATE TABLE User (id BIGINT NOT NULL, name VARCHAR(255), PRIMARY KEY (id)) --> 0ms
+INFOS - PersistenceUnit(name=demoApplicationPU, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 1075ms
+INFOS - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@13158bbd
+INFOS - OpenWebBeans Container is starting...
+INFOS - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFOS - All injection points were validated successfully.
+INFOS - OpenWebBeans Container has started, it took 224 ms.
+INFOS - Deployed Application(path=/home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest)
+INFOS - At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
+AVERTISSEMENT - Potential problem found: The configured data type factory 'class org.dbunit.dataset.datatype.DefaultDataTypeFactory' might cause problems with the current database 'HSQL Database Engine' (e.g. some datatypes may not be supported properly). In rare cases you might see this message because the list of supported database products is incomplete (list=[derby]). If so please request a java-class update via the forums.If you are using your own IDataTypeFactory extending DefaultDataTypeFactory, ensure that you override getValidDbProducts() to specify the supported database products.
+INFOS - insert into USER (ID, NAME) values (1, TomEE) --> 1ms
+INFOS - insert into USER (ID, NAME) values (1, 2)TomEE,Old) --> 0ms
+INFOS - SELECT COUNT(t0.id) FROM User t0 --> 0ms
+INFOS - SELECT t0.name FROM User t0 WHERE t0.id = 2 --> 0ms
+INFOS - UPDATE User SET name = OpenEJB WHERE id = 2 --> 1ms
+INFOS - select ID, NAME from USER order by ID --> 0ms
+INFOS - select ID, NAME from USER order by ID --> 0ms
+INFOS - select ID, NAME from USER order by ID --> 0ms
+INFOS - select ID, NAME from USER order by ID --> 0ms
+INFOS - delete from USER --> 0ms
+oct. 01, 2014 6:30:34 PM org.apache.openejb.client.EventLogger log
+INFOS: RemoteInitialContextCreated{providerUri=http://localhost:52256/tomee/ejb}
+INFOS - Undeploying app: /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0/UserPersistenceTest
+oct. 01, 2014 6:30:34 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
+INFOS: cleaning /home/rmannibucau/dev/Apache/tomee-trunk/examples/arquillian-jpa/target/arquillian-test-working-dir/0
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 11.242 sec
+INFOS - A valid shutdown command was received via the shutdown port. Stopping the Server instance.
+INFOS - Pausing ProtocolHandler ["http-nio-52256"]
+INFOS - Pausing ProtocolHandler ["ajp-nio-40071"]
+INFOS - Arrêt du service Catalina
+INFOS - Stopping ProtocolHandler ["http-nio-52256"]
+INFOS - Stopping ProtocolHandler ["ajp-nio-40071"]
+INFOS - Stopping server services
+INFOS - Undeploying app: openejb
+INFOS - Closing DataSource: demoDataSource
+INFOS - Closing DataSource: demoDataSourceNonJta
+INFOS - Destroying ProtocolHandler ["http-nio-52256"]
+INFOS - Destroying ProtocolHandler ["ajp-nio-40071"]
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
+
diff --git a/src/main/jbake/content/examples/async-methods.adoc b/src/main/jbake/content/examples/async-methods.adoc
new file mode 100755
index 0000000..c4a0527
--- /dev/null
+++ b/src/main/jbake/content/examples/async-methods.adoc
@@ -0,0 +1,178 @@
+= @Asynchronous Methods
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example async-methods can be browsed at https://github.com/apache/tomee/tree/master/examples/async-methods
+
+
+The @Asynchronous annotation was introduced in EJB 3.1 as a simple way of creating asynchronous processing.
+
+Every time a method annotated `@Asynchronous` is invoked by anyone it will immediately return regardless of how long the method actually takes.  Each invocation returns a [Future][1] object that essentially starts out *empty* and will later have its value filled in by the container when the related method call actually completes.  Returning a `Future` object is not required and `@Asynchronous` methods can of course return `void`.
+
+=  Example
+
+Here, in `JobProcessorTest`,
+
+`final Future<String> red = processor.addJob("red");`
+proceeds to the next statement,
+
+`final Future<String> orange = processor.addJob("orange");`
+
+without waiting for the addJob() method to complete. And later we could ask for the result using the `Future<?>.get()` method like
+
+`assertEquals("blue", blue.get());`
+
+It waits for the processing to complete (if its not completed already) and gets the result. If you did not care about the result, you could simply have your asynchronous method as a void method.
+
+[Future][1] Object from docs,
+
+
+NOTE:  A Future represents the result of an asynchronous computation. Methods are provided to check if the computation is complete, to wait for its completion, and to retrieve the result of the computation. The result can only be retrieved using method get when the computation has completed, blocking if necessary until it is ready. Cancellation is performed by the cancel method. Additional methods are provided to determine if the task completed normally or was cancelled. Once a computation has completed, the computation cannot be cancelled. If you would like to use a Future for the sake of cancellability but not provide a usable result, you can declare types of the form Future<?> and return null as a result of the underlying task
+
+
+
+
+=  The code
+
+[source,java]
+----
+@Singleton
+public class JobProcessor {
+@Asynchronous
+@Lock(READ)
+@AccessTimeout(-1)
+public Future<String> addJob(String jobName) {
+
+    // Pretend this job takes a while
+    doSomeHeavyLifting();
+
+    // Return our result
+    return new AsyncResult<String>(jobName);
+}
+----
+
+
+    private void doSomeHeavyLifting() {
+        try {
+            Thread.sleep(SECONDS.toMillis(10));
+        } catch (InterruptedException e) {
+            Thread.interrupted();
+            throw new IllegalStateException(e);
+        }
+      }
+    }
+=  Test
+
+[source,java]
+----
+public class JobProcessorTest extends TestCase {
+
+public void test() throws Exception {
+
+    final Context context = EJBContainer.createEJBContainer().getContext();
+
+    final JobProcessor processor = (JobProcessor) context.lookup("java:global/async-methods/JobProcessor");
+
+    final long start = System.nanoTime();
+
+    // Queue up a bunch of work
+    final Future<String> red = processor.addJob("red");
+    final Future<String> orange = processor.addJob("orange");
+    final Future<String> yellow = processor.addJob("yellow");
+    final Future<String> green = processor.addJob("green");
+    final Future<String> blue = processor.addJob("blue");
+    final Future<String> violet = processor.addJob("violet");
+
+    // Wait for the result -- 1 minute worth of work
+    assertEquals("blue", blue.get());
+    assertEquals("orange", orange.get());
+    assertEquals("green", green.get());
+    assertEquals("red", red.get());
+    assertEquals("yellow", yellow.get());
+    assertEquals("violet", violet.get());
+
+    // How long did it take?
+    final long total = TimeUnit.NANOSECONDS.toSeconds(System.nanoTime() - start);
+
+    // Execution should be around 9 - 21 seconds
+		// The execution time depends on the number of threads available for asynchronous execution.
+		// In the best case it is 10s plus some minimal processing time. 
+    assertTrue("Expected > 9 but was: " + total, total > 9);
+    assertTrue("Expected < 21 but was: " + total, total < 21);
+
+  }
+}
+----
+
+= Running
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.async.JobProcessorTest
+Apache OpenEJB 7.0.0-SNAPSHOT    build: 20110801-04:02
+http://tomee.apache.org/
+INFO - openejb.home = G:\Workspace\fullproject\openejb3\examples\async-methods
+INFO - openejb.base = G:\Workspace\fullproject\openejb3\examples\async-methods
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: g:\Workspace\fullproject\openejb3\examples\async-methods\target\classes
+INFO - Beginning load: g:\Workspace\fullproject\openejb3\examples\async-methods\target\classes
+INFO - Configuring enterprise application: g:\Workspace\fullproject\openejb3\examples\async-methods
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean JobProcessor: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.async.JobProcessorTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "g:\Workspace\fullproject\openejb3\examples\async-methods" loaded.
+INFO - Assembling app: g:\Workspace\fullproject\openejb3\examples\async-methods
+INFO - Jndi(name="java:global/async-methods/JobProcessor!org.superbiz.async.JobProcessor")
+INFO - Jndi(name="java:global/async-methods/JobProcessor")
+INFO - Jndi(name="java:global/EjbModule100568296/org.superbiz.async.JobProcessorTest!org.superbiz.async.JobProcessorTest")
+INFO - Jndi(name="java:global/EjbModule100568296/org.superbiz.async.JobProcessorTest")
+INFO - Created Ejb(deployment-id=org.superbiz.async.JobProcessorTest, ejb-name=org.superbiz.async.JobProcessorTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=JobProcessor, ejb-name=JobProcessor, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.async.JobProcessorTest, ejb-name=org.superbiz.async.JobProcessorTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=JobProcessor, ejb-name=JobProcessor, container=Default Singleton Container)
+INFO - Deployed Application(path=g:\Workspace\fullproject\openejb3\examples\async-methods)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.305 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
+    [INFO] ------------------------------------------------------------------------
+    [INFO] BUILD SUCCESS
+    [INFO] ------------------------------------------------------------------------
+    [INFO] Total time: 21.097s
+    [INFO] Finished at: Wed Aug 03 22:48:26 IST 2011
+    [INFO] Final Memory: 13M/145M
+    [INFO] ------------------------------------------------------------------------
+
+=  How it works <small>under the covers</small>
+
+Under the covers what makes this work is:
+
+  - The `JobProcessor` the caller sees is not actually an instance of `JobProcessor`.  Rather it's a subclass or proxy that has all the methods overridden.  Methods that are supposed to be asynchronous are handled differently.
+  - Calls to an asynchronous method simply result in a `Runnable` being created that wraps the method and parameters you gave.  This runnable is given to an [Executor][3] which is simply a work queue attached to a thread pool.
+  - After adding the work to the queue, the proxied version of the method returns an implementation of `Future` that is linked to the `Runnable` which is now waiting on the queue.
+  - When the `Runnable` finally executes the method on the *real* `JobProcessor` instance, it will take the return value and set it into the `Future` making it available to the caller.
+
+Important to note that the `AsyncResult` object the `JobProcessor` returns is not the same `Future` object the caller is holding.  It would have been neat if the real `JobProcessor` could just return `String` and the caller's version of `JobProcessor` could return `Future<String>`, but we didn't see any way to do that without adding more complexity.  So the `AsyncResult` is a simple wrapper object.  The container will pull the `String` out, throw the `AsyncResult` away, then put the `String` in the *real* `Future` that the caller is holding.
+
+To get progress along the way, simply pass a thread-safe object like [AtomicInteger][4] to the `@Asynchronous` method and have the bean code periodically update it with the percent complete.
+
+= Related Examples
+
+For complex asynchronous processing, JavaEE's answer is `@MessageDrivenBean`. Have a look at the link:simple-mdb.html[simple-mdb] example
+
+[1]: http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html
+[3]: http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executor.html
+[4]: http://download.oracle.com/javase/6/docs/api/java/util/concurrent/atomic/AtomicInteger.html
+
diff --git a/src/main/jbake/content/examples/async-postconstruct.adoc b/src/main/jbake/content/examples/async-postconstruct.adoc
new file mode 100755
index 0000000..c0ee098
--- /dev/null
+++ b/src/main/jbake/content/examples/async-postconstruct.adoc
@@ -0,0 +1,140 @@
+= @Asynchronous @PostConstruct
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example async-postconstruct can be browsed at https://github.com/apache/tomee/tree/master/examples/async-postconstruct
+
+
+Placing `@Asynchronous` on the `@PostConstruct` of an EJB is not a supported part of Java EE, but this example shows a pattern which works just as well with little effort.
+
+The heart of this pattern is to:
+
+ - pass the construction "logic" to an `@Asynchronous` method via a `java.util.concurrent.Callable`
+ - ensure the bean does not process invocations till construction is complete via an `@AroundInvoke` method on the bean and the `java.util.concurrent.Future`
+
+Simple and effective.  The result is a faster starting application that is still thread-safe.
+
+
+[source,java]
+----
+package org.superbiz.asyncpost;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.EJB;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+@Singleton
+@Lock(LockType.READ)
+public class SlowStarter {
+
+    @EJB
+    private Executor executor;
+
+    private Future construct;
+
+    private String color;
+    private String shape;
+
+    @PostConstruct
+    private void construct() throws Exception {
+        construct = executor.submit(new Callable() {
+            @Override
+            public Object call() throws Exception {
+                Thread.sleep(SECONDS.toMillis(10));
+                SlowStarter.this.color = "orange";
+                SlowStarter.this.shape = "circle";
+                return null;
+            }
+        });
+    }
+
+    @AroundInvoke
+    private Object guaranteeConstructionComplete(InvocationContext context) throws Exception {
+        construct.get();
+        return context.proceed();
+    }
+
+    public String getColor() {
+        return color;
+    }
+
+    public String getShape() {
+        return shape;
+    }
+}
+----
+
+
+
+The `Executor` is a simple pattern, useful for many things, which exposes an interface functionaly equivalent to `java.util.concurrent.ExecutorService`, but
+with the underlying thread pool controlled by the container.
+
+
+[source,java]
+----
+package org.superbiz.asyncpost;
+
+import javax.ejb.AsyncResult;
+import javax.ejb.Asynchronous;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+
+@Singleton
+@Lock(LockType.READ)
+public class Executor {
+
+    @Asynchronous
+    public <T> Future<T> submit(Callable<T> task) throws Exception {
+        return new AsyncResult<T>(task.call());
+    }
+
+}
+----
+
+
+
+Finally a test case shows the usefulness of `@AroundInvoke` call in our bean that calls `construct.get()`
+
+
+[source,java]
+----
+package org.superbiz.asyncpost;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+
+public class SlowStarterTest {
+
+    @EJB
+    private SlowStarter slowStarter;
+
+    @Test
+    public void test() throws Exception {
+
+        // Start the Container
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+
+        // Immediately access the fields initialized in the PostConstruct
+        // This will fail without the @AroundInvoke call to construct.get()
+        Assert.assertEquals("orange", slowStarter.getColor());
+        Assert.assertEquals("circle", slowStarter.getShape());
+    }
+}
+----
+
diff --git a/src/main/jbake/content/examples/bean-validation-design-by-contract.adoc b/src/main/jbake/content/examples/bean-validation-design-by-contract.adoc
new file mode 100755
index 0000000..e21f0dd
--- /dev/null
+++ b/src/main/jbake/content/examples/bean-validation-design-by-contract.adoc
@@ -0,0 +1,240 @@
+= bean-validation-design-by-contract
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example bean-validation-design-by-contract can be browsed at https://github.com/apache/tomee/tree/master/examples/bean-validation-design-by-contract
+
+=  Bean Validation - Design By Contract
+
+Bean Validation (aka JSR 303) contains an optional appendix dealing with method validation.
+
+Some implementions of this JSR implement this appendix (Apache bval, Hibernate validator for example).
+
+OpenEJB provides an interceptor which allows you to use this feature to do design by contract.
+
+=  Design by contract
+
+The goal is to be able to configure with a finer grain your contract. In the example you specify
+the minimum centimeters a sport man should jump at pole vaulting:
+
+
+[source,java]
+----
+@Local
+public interface PoleVaultingManager {
+    int points(@Min(120) int centimeters);
+}
+----
+
+
+=  Usage
+
+TomEE and OpenEJB do not provide anymore `BeanValidationAppendixInterceptor` since
+Bean Validation 1.1 does it (with a slighly different usage but the exact same feature).
+
+So basically you don't need to configure anything to use it.
+=  Errors
+
+If a parameter is not validated an exception is thrown, it is an EJBException wrapping a ConstraintViolationException:
+
+    try {
+        gamesManager.addSportMan("I lose", "EN");
+        fail("no space should be in names");
+    } catch (EJBException wrappingException) {
+        assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);
+        ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());
+        assertEquals(1, exception.getConstraintViolations().size());
+    }
+
+=  Example
+
+==  OlympicGamesManager
+
+
+[source,java]
+----
+package org.superbiz.designbycontract;
+
+import javax.ejb.Stateless;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+
+@Stateless
+public class OlympicGamesManager {
+    public String addSportMan(@Pattern(regexp = "^[A-Za-z]+$") String name, @Size(min = 2, max = 4) String country) {
+        if (country.equals("USA")) {
+            return null;
+        }
+        return new StringBuilder(name).append(" [").append(country).append("]").toString();
+    }
+}
+----
+
+
+==  PoleVaultingManager
+
+
+[source,java]
+----
+package org.superbiz.designbycontract;
+
+import javax.ejb.Local;
+import javax.validation.constraints.Min;
+
+@Local
+public interface PoleVaultingManager {
+    int points(@Min(120) int centimeters);
+}
+----
+
+
+==  PoleVaultingManagerBean
+
+
+[source,java]
+----
+package org.superbiz.designbycontract;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class PoleVaultingManagerBean implements PoleVaultingManager {
+    @Override
+    public int points(int centimeters) {
+        return centimeters - 120;
+    }
+}
+----
+
+
+==  OlympicGamesTest
+
+
+[source,java]
+----
+public class OlympicGamesTest {
+    private static Context context;
+
+    @EJB
+    private OlympicGamesManager gamesManager;
+
+    @EJB
+    private PoleVaultingManager poleVaultingManager;
+
+    @BeforeClass
+    public static void start() {
+        Properties properties = new Properties();
+        properties.setProperty(BeanContext.USER_INTERCEPTOR_KEY, BeanValidationAppendixInterceptor.class.getName());
+        context = EJBContainer.createEJBContainer(properties).getContext();
+    }
+
+    @Before
+    public void inject() throws Exception {
+        context.bind("inject", this);
+    }
+
+    @AfterClass
+    public static void stop() throws Exception {
+        if (context != null) {
+            context.close();
+        }
+    }
+
+    @Test
+    public void sportMenOk() throws Exception {
+        assertEquals("IWin [FR]", gamesManager.addSportMan("IWin", "FR"));
+    }
+
+    @Test
+    public void sportMenKoBecauseOfName() throws Exception {
+        try {
+            gamesManager.addSportMan("I lose", "EN");
+            fail("no space should be in names");
+        } catch (EJBException wrappingException) {
+            assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);
+            ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());
+            assertEquals(1, exception.getConstraintViolations().size());
+        }
+    }
+
+    @Test
+    public void sportMenKoBecauseOfCountry() throws Exception {
+        try {
+            gamesManager.addSportMan("ILoseTwo", "TOO-LONG");
+            fail("country should be between 2 and 4 characters");
+        } catch (EJBException wrappingException) {
+            assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);
+            ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());
+            assertEquals(1, exception.getConstraintViolations().size());
+        }
+    }
+
+    @Test
+    public void polVaulting() throws Exception {
+        assertEquals(100, poleVaultingManager.points(220));
+    }
+
+    @Test
+    public void tooShortPolVaulting() throws Exception {
+        try {
+            poleVaultingManager.points(119);
+            fail("the jump is too short");
+        } catch (EJBException wrappingException) {
+            assertTrue(wrappingException.getCause() instanceof ConstraintViolationException);
+            ConstraintViolationException exception = ConstraintViolationException.class.cast(wrappingException.getCausedByException());
+            assertEquals(1, exception.getConstraintViolations().size());
+        }
+    }
+}
+----
+
+
+=  Running
+
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running OlympicGamesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/bean-validation-design-by-contract
+INFO - openejb.base = /Users/dblevins/examples/bean-validation-design-by-contract
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/bean-validation-design-by-contract/target/classes
+INFO - Beginning load: /Users/dblevins/examples/bean-validation-design-by-contract/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/bean-validation-design-by-contract
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean PoleVaultingManagerBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean OlympicGamesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/bean-validation-design-by-contract" loaded.
+INFO - Assembling app: /Users/dblevins/examples/bean-validation-design-by-contract
+INFO - Jndi(name="java:global/bean-validation-design-by-contract/PoleVaultingManagerBean!org.superbiz.designbycontract.PoleVaultingManager")
+INFO - Jndi(name="java:global/bean-validation-design-by-contract/PoleVaultingManagerBean")
+INFO - Jndi(name="java:global/bean-validation-design-by-contract/OlympicGamesManager!org.superbiz.designbycontract.OlympicGamesManager")
+INFO - Jndi(name="java:global/bean-validation-design-by-contract/OlympicGamesManager")
+INFO - Jndi(name="java:global/EjbModule236054577/OlympicGamesTest!OlympicGamesTest")
+INFO - Jndi(name="java:global/EjbModule236054577/OlympicGamesTest")
+INFO - Created Ejb(deployment-id=OlympicGamesManager, ejb-name=OlympicGamesManager, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=PoleVaultingManagerBean, ejb-name=PoleVaultingManagerBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=OlympicGamesTest, ejb-name=OlympicGamesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=OlympicGamesManager, ejb-name=OlympicGamesManager, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=PoleVaultingManagerBean, ejb-name=PoleVaultingManagerBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=OlympicGamesTest, ejb-name=OlympicGamesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/bean-validation-design-by-contract)
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.245 sec
+
+Results :
+
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/bval-evaluation-redeployment.adoc b/src/main/jbake/content/examples/bval-evaluation-redeployment.adoc
new file mode 100755
index 0000000..0b201bb
--- /dev/null
+++ b/src/main/jbake/content/examples/bval-evaluation-redeployment.adoc
@@ -0,0 +1,8 @@
+= bval-evaluation-redeployment
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example bval-evaluation-redeployment can be browsed at https://github.com/apache/tomee/tree/master/examples/bval-evaluation-redeployment
+
diff --git a/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc b/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc
new file mode 100755
index 0000000..2f5e99d
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc
@@ -0,0 +1,138 @@
+= cdi-alternative-and-stereotypes
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-alternative-and-stereotypes can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes
+
+=  Introduction
+
+CDI is a revolution for Java EE world. This specification is the best one to avoid coupling between classes.
+
+This example simply aims to override bindings at runtime to simplify mocking work.
+
+It uses two kind of mocks:
+1) a mock with no implementation in the classloader
+2) a mock with an implementation in the classloader
+
+The mock answer from CDI is called *alternative*.
+
+Annotating `@Alternative` a class will mean it will replace any implementation if there is no other implementation
+or if it is forced (through `META-INF/beans.xml`).
+
+=  Code explanation
+==  main code
+
+We use an EJB `Jouney` to modelize a journey where the vehicle and the society can change. Here an EJB is used simply
+because it simplifies the test. A jouney wraps the vehicle and society information.
+
+We define then two interfaces to inject it in the `Journey` EJB: `Vehicle` and `Society`.
+
+Finally we add an implementation for `Scociety` interface: `LowCostCompanie`.
+
+If we don't go further `Journey` object will not be able to be created because no `Vehicle` implementation is available.
+
+Note: if we suppose we have a `Vehicle` implementation, the injected Society should be `LowCostCompanie`.
+
+==  test code
+
+The goal here is to test our `Journey` EJB. So we have to provide a `Vehicle` implementation: `SuperCar`.
+
+We want to force the `Society` implementation (for any reason) by our test implementation: `AirOpenEJB`.
+
+One solution could simply be to add `@Alternative` annotation on `AirOpenEJB` and activate it through
+the `META-INF/beans.xml` file.
+
+Here we want to write more explicit code. So we want to replace the `@Alternative` annotation by `@Mock` one.
+
+So we simply define an `@Mock` annotation for classes, resolvable at runtime which is a stereotype (`@Stereotype`)
+which replace `@Alternative`.
+
+Here is the annotation:
+
+
+[source,java]
+----
+@Stereotype // we define a stereotype
+@Retention(RUNTIME) // resolvable at runtime
+@Target(TYPE) // this annotation is a class level one
+@Alternative // it replace @Alternative
+public @interface Mock {}
+
+Note: you can add more CDI annotations after `@Alternative` and it will get the behavior expected (the scope for instance).
+
+So now we have our `@Mock` annotation which is a stereotype able to replace `@Alternative` annotation
+we simply add this annotation to our mocks.
+
+If you run it now you'll have this exception:
+
+javax.enterprise.inject.UnsatisfiedResolutionException: Api type [org.superbiz.cdi.stereotype.Vehicle] is not found with the qualifiers
+Qualifiers: [@javax.enterprise.inject.Default()]
+for injection into Field Injection Point, field name :  vehicle, Bean Owner : [Journey, Name:null, WebBeans Type:ENTERPRISE, API Types:[java.lang.Object,org.superbiz.cdi.stereotype.Journey], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]]
+
+It means the stereotype is not activated. To do it simply add it to your `META-INF/beans.xml`:
+
+<alternatives>
+  <stereotype>org.superbiz.cdi.stereotype.Mock</stereotype>
+</alternatives>
+
+Note: if you don't specify `AirOpenEJB` as `@Alternative` (done through our mock annotation) you'll get this exception:
+
+Caused by: javax.enterprise.inject.AmbiguousResolutionException: There is more than one api type with : org.superbiz.cdi.stereotype.Society with qualifiers : Qualifiers: [@javax.enterprise.inject.Default()]
+for injection into Field Injection Point, field name :  society, Bean Owner : [Journey, Name:null, WebBeans Type:ENTERPRISE, API Types:[org.superbiz.cdi.stereotype.Journey,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]]
+found beans:
+AirOpenEJB, Name:null, WebBeans Type:MANAGED, API Types:[org.superbiz.cdi.stereotype.Society,org.superbiz.cdi.stereotype.AirOpenEJB,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]
+LowCostCompanie, Name:null, WebBeans Type:MANAGED, API Types:[org.superbiz.cdi.stereotype.Society,org.superbiz.cdi.stereotype.LowCostCompanie,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]
+
+which simply means two implementations are available for the same injection point (`Journey.society`).
+
+# Conclusion
+
+With CDI it is really easy to define annotations with a strong meaning. You can define business annotations
+or simply technical annotations to simplify your code (as we did with the mock annotation).
+
+Note: if for instance you used qualifiers to inject societies you could have put all these qualifiers on
+the mock class or defined a `@SocietyMock` annotation to be able to inject the same implementation for
+all qualifiers in your tests.
+
+# Output
+
+Running org.superbiz.cdi.stereotype.StereotypeTest
+Apache OpenEJB 7.0.0-SNAPSHOT    build: 20111030-07:54
+http://tomee.apache.org/
+INFO - openejb.home = /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes
+INFO - openejb.base = /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes/target/test-classes
+INFO - Found EjbModule in classpath: /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes/target/classes
+INFO - Beginning load: /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes/target/test-classes
+INFO - Beginning load: /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes/target/classes
+INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean cdi-alternative-and-stereotypes_test.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean Journey: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes" loaded.
+INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes
+INFO - Jndi(name="java:global/cdi-alternative-and-stereotypes/cdi-alternative-and-stereotypes_test.Comp!org.apache.openejb.BeanContext$Comp")
+INFO - Jndi(name="java:global/cdi-alternative-and-stereotypes/cdi-alternative-and-stereotypes_test.Comp")
+INFO - Jndi(name="java:global/cdi-alternative-and-stereotypes/cdi-alternative-and-stereotypes.Comp!org.apache.openejb.BeanContext$Comp")
+INFO - Jndi(name="java:global/cdi-alternative-and-stereotypes/cdi-alternative-and-stereotypes.Comp")
+INFO - Jndi(name="java:global/cdi-alternative-and-stereotypes/Journey!org.superbiz.cdi.stereotype.Journey")
+INFO - Jndi(name="java:global/cdi-alternative-and-stereotypes/Journey")
+INFO - Jndi(name="java:global/EjbModule162291475/org.superbiz.cdi.stereotype.StereotypeTest!org.superbiz.cdi.stereotype.StereotypeTest")
+INFO - Jndi(name="java:global/EjbModule162291475/org.superbiz.cdi.stereotype.StereotypeTest")
+INFO - Created Ejb(deployment-id=cdi-alternative-and-stereotypes_test.Comp, ejb-name=cdi-alternative-and-stereotypes_test.Comp, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=cdi-alternative-and-stereotypes.Comp, ejb-name=cdi-alternative-and-stereotypes.Comp, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=org.superbiz.cdi.stereotype.StereotypeTest, ejb-name=org.superbiz.cdi.stereotype.StereotypeTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=Journey, ejb-name=Journey, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=cdi-alternative-and-stereotypes_test.Comp, ejb-name=cdi-alternative-and-stereotypes_test.Comp, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=cdi-alternative-and-stereotypes.Comp, ejb-name=cdi-alternative-and-stereotypes.Comp, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=org.superbiz.cdi.stereotype.StereotypeTest, ejb-name=org.superbiz.cdi.stereotype.StereotypeTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Journey, ejb-name=Journey, container=Default Singleton Container)
+INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes)
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/cdi-alternative-and-stereotypes
+
diff --git a/src/main/jbake/content/examples/cdi-application-scope.adoc b/src/main/jbake/content/examples/cdi-application-scope.adoc
new file mode 100755
index 0000000..cf1730f
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-application-scope.adoc
@@ -0,0 +1,160 @@
+= CDI @ApplicationScoped
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-application-scope can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-application-scope
+
+
+This example show the use of `@ApplicationScoped` annotation for injected objects. An object
+which is defined as `@ApplicationScoped` is created once for the duration of the application.
+
+=  Example
+
+This example depicts a similar scenario to cdi-request-scope. A restaurant guest orders
+a soup from the waiter. The waiter then delivers the soup back to the guest. Another
+guest can order the same soup that was ordered by the previous client - this is where
+the application scope is used. 
+
+==  Waiter
+
+The `Waiter` session bean receives a request from the test class via the `orderSoup()` method
+and sets the name for the `soup` field. The `orderWhatTheOtherGuyHad()` method returns
+the name of the `soup` field.
+
+
+[source,java]
+----
+@Stateless
+public class Waiter {
+
+    @Inject
+    public Soup soup;
+
+    public String orderSoup(String name){
+        soup.setName(name);
+        return soup.getName();
+    }
+
+    public String orderWhatTheOtherGuyHad() {
+        String name = soup.getName();
+        return name;
+    }
+}
+----
+
+
+==  Soup
+
+The `Soup` class is an injectable POJO, defined as `@ApplicationScoped`. This means that an instance
+will be created only once for the duration of the whole application. Try changing the `@ApplicationScoped`
+annotation to `@RequestScoped` and see what happens.
+
+
+[source,java]
+----
+@ApplicationScoped
+public class Soup {
+
+    private String name = "Soup of the day";
+
+    @PostConstruct
+    public void afterCreate() {
+        System.out.println("Soup created");
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name){
+        this.name = name;
+    }
+}
+----
+
+
+
+=  Test Case
+
+This is the entry class for this example. First a soup is ordered via `orderSoup()` method.
+This initiates the `soup` field. Next, `orderWhatTheOtherGuyHad()` method returns the soup
+from the application context.
+
+
+[source,java]
+----
+public class RestaurantTest {
+
+    private static String TOMATO_SOUP = "Tomato Soup";
+    private EJBContainer container;
+
+    @EJB
+    private Waiter joe;
+
+    @Before
+    public void startContainer() throws Exception {
+        container = EJBContainer.createEJBContainer();
+        container.getContext().bind("inject", this);
+    }
+
+    @Test
+    public void orderSoup(){
+        String someSoup = joe.orderSoup(TOMATO_SOUP);
+        assertEquals(TOMATO_SOUP, someSoup);
+
+        String sameSoup = joe.orderWhatTheOtherGuyHad();
+        assertEquals(TOMATO_SOUP, sameSoup);
+    }
+
+    @After
+    public void closeContainer() throws Exception {
+        container.close();
+    }
+}
+----
+
+
+=  Running
+
+In the output you can see that there is just one `Soup` instance created - one for
+the whole application.
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.cdi.applicationscope.RestaurantTest
+Apache OpenEJB 7.0.0-SNAPSHOT    build: 20111224-11:09
+http://tomee.apache.org/
+INFO - openejb.home = C:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+INFO - openejb.base = C:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope\target\classes
+INFO - Beginning load: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope\target\classes
+INFO - Configuring enterprise application: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean cdi-application-scope.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Waiter: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope" loaded.
+INFO - Assembling app: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+INFO - Jndi(name="java:global/cdi-application-scope/Waiter!org.superbiz.cdi.applicationscope.Waiter")
+INFO - Jndi(name="java:global/cdi-application-scope/Waiter")
+INFO - Created Ejb(deployment-id=Waiter, ejb-name=Waiter, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=Waiter, ejb-name=Waiter, container=Default Stateless Container)
+INFO - Deployed Application(path=c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope)
+Soup created
+INFO - Undeploying app: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-application-scope
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.42 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/cdi-basic.adoc b/src/main/jbake/content/examples/cdi-basic.adoc
new file mode 100755
index 0000000..8097c63
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-basic.adoc
@@ -0,0 +1,191 @@
+= CDI @Inject
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-basic can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-basic
+
+
+To use `@Inject`, the first thing you need is a `META-INF/beans.xml` file in the module
+or jar.  This effectively turns on CDI and allows the `@Inject` references to work.
+No `META-INF/beans.xml` no injection, period.  This may seem overly strict,
+but it is not without reason.  The CDI API is a bit greedy and does consume a fair
+about of resources by design.
+
+When the container constructs a bean with an `@Inject` reference,
+it will first find or create the object that will be injected.  For the sake of
+simplicity, the is example has a basic `Faculty` pojo with a no-arg constructor.  Anyone
+referencing `@Inject Faculty` will get their own instance of `Faculty`.  If the desire
+is to share the same instance of `Faculty`, see the concept of `scopes` -- this is
+exactly what scopes are for.
+
+=  Example
+
+In this example we have an `@Stateless` bean `Course` with an `@Inject` reference to an
+object of type `Faculty`.  When `Course` is created, the container will also create an
+instance of `Faculty`.  The `@PostConstruct` will be called on the `Faculty`,
+then the `Faculty` instance will be injected into the `Course` bean.  Finally, the
+`@PostConstruct` will be invoked on `Course` and then we're done.  All instances will
+have been created.
+
+The `CourseTest` test case drives this creation process by having `Course` injected
+into it in its `@Setup` method.  By the time our `@Test` method is invoked,
+all the real work should be done and we should be ready to go.  In the test case we do
+some basic asserts to ensure everything was constructed, all `@PostConstruct` methods
+called and everyting injected.
+
+==  Faculty <small>a basic injectable pojo</small>
+
+
+[source,java]
+----
+public class Faculty {
+
+    private List<String> facultyMembers;
+
+    private String facultyName;
+
+    @PostConstruct
+    public void initialize() {
+        this.facultyMembers = new ArrayList<String>();
+        facultyMembers.add("Ian Schultz");
+        facultyMembers.add("Diane Reyes");
+        facultyName = "Computer Science";
+    }
+
+    public List<String> getFacultyMembers() {
+        return facultyMembers;
+    }
+
+    public String getFacultyName() {
+        return facultyName;
+    }
+
+}
+----
+
+
+==  Course <small>a simple session bean</small>
+
+
+[source,java]
+----
+@Stateless
+public class Course {
+
+    @Inject
+    private Faculty faculty;
+
+    private String courseName;
+
+    private int capacity;
+
+    @PostConstruct
+    private void init() {
+        assert faculty != null;
+
+        // These strings can be externalized
+        // We'll see how to do that later
+        this.courseName = "CDI 101 - Introduction to CDI";
+        this.capacity = 100;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public int getCapacity() {
+        return capacity;
+    }
+
+    public Faculty getFaculty() {
+        return faculty;
+    }
+}
+----
+
+
+=  Test Case
+
+
+[source,java]
+----
+public class CourseTest extends TestCase {
+
+    @EJB
+    private Course course;
+
+    @Before
+    public void setUp() throws Exception {
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+    }
+
+    @Test
+    public void test() {
+
+        // Was the EJB injected?
+        assertTrue(course != null);
+
+        // Was the Course @PostConstruct called?
+        assertNotNull(course.getCourseName());
+        assertTrue(course.getCapacity() > 0);
+
+        // Was a Faculty instance injected into Course?
+        final Faculty faculty = course.getFaculty();
+        assertTrue(faculty != null);
+
+        // Was the @PostConstruct called on Faculty?
+        assertEquals(faculty.getFacultyName(), "Computer Science");
+        assertEquals(faculty.getFacultyMembers().size(), 2);
+    }
+}
+----
+
+
+=  Running
+
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.cdi.basic.CourseTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/cdi-basic
+INFO - openejb.base = /Users/dblevins/examples/cdi-basic
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/cdi-basic/target/classes
+INFO - Beginning load: /Users/dblevins/examples/cdi-basic/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/cdi-basic
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean cdi-basic.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Course: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/cdi-basic" loaded.
+INFO - Assembling app: /Users/dblevins/examples/cdi-basic
+INFO - Jndi(name="java:global/cdi-basic/cdi-basic.Comp!org.apache.openejb.BeanContext$Comp")
+INFO - Jndi(name="java:global/cdi-basic/cdi-basic.Comp")
+INFO - Jndi(name="java:global/cdi-basic/Course!org.superbiz.cdi.basic.Course")
+INFO - Jndi(name="java:global/cdi-basic/Course")
+INFO - Jndi(name="java:global/EjbModule1833350875/org.superbiz.cdi.basic.CourseTest!org.superbiz.cdi.basic.CourseTest")
+INFO - Jndi(name="java:global/EjbModule1833350875/org.superbiz.cdi.basic.CourseTest")
+INFO - Created Ejb(deployment-id=Course, ejb-name=Course, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=cdi-basic.Comp, ejb-name=cdi-basic.Comp, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=org.superbiz.cdi.basic.CourseTest, ejb-name=org.superbiz.cdi.basic.CourseTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Course, ejb-name=Course, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=cdi-basic.Comp, ejb-name=cdi-basic.Comp, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=org.superbiz.cdi.basic.CourseTest, ejb-name=org.superbiz.cdi.basic.CourseTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/cdi-basic)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.126 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/cdi-ejbcontext-jaas.adoc b/src/main/jbake/content/examples/cdi-ejbcontext-jaas.adoc
new file mode 100755
index 0000000..b94d662
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-ejbcontext-jaas.adoc
@@ -0,0 +1,9 @@
+= cdi-ejbcontext-jaas
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-ejbcontext-jaas can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-ejbcontext-jaas
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/cdi-events.adoc b/src/main/jbake/content/examples/cdi-events.adoc
new file mode 100755
index 0000000..a7e43c4
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-events.adoc
@@ -0,0 +1,40 @@
+= cdi-events
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-events can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-events
+
+=  CDI events: loose coupling and extensibility
+
+CDI allows you to extend business code by the Notifier/Observer pattern.
+
+To do it you simply inject a field `Event` in the notifier class. This class is a template
+and the parameter type is the object type to fire. Then when you want to notify observers
+you simply call the method fire of the event object passing as a parameter the event itself
+(your own class!).
+
+On the other side you annotated a method parameter `@Observes` and the parameter type is the sent type
+by the notifier.
+
+Note: of course you can add qualifiers to be more precise on your events.
+
+=  The example
+
+The example is pretty simple: an ejb uses the `@Schedule` annotation to get a notification each second.
+The each second this EJB will send the current date through CDI events.
+
+This is our "business" code. It is a simple behavior (nothing).
+
+In our test (which is considered as an extension) we created an observer (`Observer` class)
+which simply store and log each received date.
+
+The test itself (`EventTest`) simply verifies the dates were received.
+
+=  Conclusion
+
+CDI let's implement very easily plugins through this event mecanism.
+
+If you go further and look at CDI plugin API you'll realize it is simply the same kind
+of events. CDI events is really the basis of CDI.
diff --git a/src/main/jbake/content/examples/cdi-interceptors.adoc b/src/main/jbake/content/examples/cdi-interceptors.adoc
new file mode 100755
index 0000000..e973203
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-interceptors.adoc
@@ -0,0 +1,268 @@
+= CDI Interceptors
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-interceptors can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-interceptors
+
+
+Let's write a simple application that would allow us to book tickets for a movie show. As with all applications, logging is one cross-cutting concern that we have. Apart from that, there are some methods in our application, that can be accessed only in the working hours. If accessed at non-working-hours we'll throw out an AccessDeniedException.
+
+How do we mark which methods are to be intercepted? Wouldn't it be handy to annotate a method like
+
+
+[source,java]
+----
+@Log
+public void aMethod(){...}
+
+or
+
+@TimeRestricted
+public void bMethod(){...}
+
+Let's create these annotations that would "mark" a method for interception.
+
+@InterceptorBinding
+@Target({ TYPE, METHOD })
+@Retention(RUNTIME)
+public @interface Log {
+}
+----
+
+
+And
+
+
+[source,java]
+----
+@InterceptorBinding
+@Target({ TYPE, METHOD })
+@Retention(RUNTIME)
+public @interface TimeRestricted {
+}
+----
+
+
+Sure, you haven't missed the `@InterceptorBinding` annotation above! Now that our custom annotations are created, lets attach them (or to use a better term for it, "bind them") to interceptors.
+
+So here's our logging interceptor. An `@AroundInvoke` method and we are almost done.
+
+
+[source,java]
+----
+@Interceptor
+@Log  //binding the interceptor here. now any method annotated with @Log would be intercepted by logMethodEntry
+public class BookForAShowLoggingInterceptor implements Serializable {
+    private static final long serialVersionUID = 8139854519874743530L;
+    private Logger logger = Logger.getLogger("BookForAShowApplicationLogger");
+    @AroundInvoke
+    public Object logMethodEntry(InvocationContext ctx) throws Exception {
+        logger.info("Before entering method:" + ctx.getMethod().getName());
+        InterceptionOrderTracker.getMethodsInterceptedList().add(ctx.getMethod().getName());
+        InterceptionOrderTracker.getInterceptedByList().add(this.getClass().getSimpleName());
+        return ctx.proceed();
+    }
+}
+----
+
+
+Now the `@Log` annotation we created is bound to this interceptor. (Likewise we bind `@TimeRestrict` for `TimeBasedRestrictingInterceptor`. See links below for source)
+
+That done, let's annotate at class-level or method-level and have fun intercepting!
+
+
+[source,java]
+----
+@Log
+@Stateful
+public class BookForAShowOneInterceptorApplied implements Serializable {
+    private static final long serialVersionUID = 6350400892234496909L;
+    public List<String> getMoviesList() {
+        List<String> moviesAvailable = new ArrayList<String>();
+        moviesAvailable.add("12 Angry Men");
+        moviesAvailable.add("Kings speech");
+        return moviesAvailable;
+    }
+    public Integer getDiscountedPrice(int ticketPrice) {
+        return ticketPrice - 50;
+    }
+    // assume more methods are present
+}
+----
+
+
+The `@Log` annotation applied at class level denotes that all the methods should be intercepted with `BookForAShowLoggingInterceptor`.
+
+Before we say "all done" there's one last thing we are left with! To enable the interceptors!
+
+Lets quickly put up a `beans.xml` file like the following in `src/main/resources/META-INF/beans.xml`:
+
+
+[source,xml]
+----
+<beans>
+  <interceptors>
+    <class>org.superbiz.cdi.bookshow.interceptors.BookForAShowLoggingInterceptor
+    </class>
+    <class>org.superbiz.cdi.bookshow.interceptors.TimeBasedRestrictingInterceptor
+    </class>
+  </interceptors>
+</beans>
+----
+
+
+
+By default, a bean archive has no enabled interceptors bound via interceptor
+bindings. An interceptor must be explicitly enabled by listing its class
+in the `beans.xml`.
+
+Those lines in `beans.xml` not only "enable" the interceptors, but also define the "order of execution" of the interceptors.
+
+The order in with a method is annotated has no real significance.
+Eg:
+
+
+[source,java]
+----
+@TimeRestrict
+@Log
+void cMethod(){}
+
+Here the `BookForAShowLoggingInterceptor` would be applied first and then `TimeBasedRestrictingInterceptor`
+
+So now you know that the order is only determined by the order of definition in `beans.xml`. Interceptors which occur earlier in the list are called first.
+
+Also note that a method can be marked for interception by multiple interceptors by applying multiple annotations as above.
+
+This brings us to another question. In the above case there were two interceptors applied together. What if I would require about 4 such interceptors that would go along.... Having to annotate so much makes the code a little clumsy?
+
+No worries! Just create a custom annotation which inherits from others
+
+@Inherited
+@InterceptorBinding
+@Target({ TYPE, METHOD })
+@Retention(RUNTIME)
+@Log
+@TimeRestricted
+public @interface TimeRestrictAndLog {
+}
+----
+
+
+This is interceptor binding inheritance.
+
+The code below demonstrates the many cases that we have discussed.
+
+Not to forget, the old style binding with `@Interceptors(WhicheverInterceptor.class)` is also supported. Have a look at `BookForAShowOldStyleInterceptorBinding` where the comments explain how the newer way discussed above is better.
+
+=  The Code
+
+==  BookForAShowOneInterceptorApplied
+
+`BookForAShowOneInterceptorApplied` shows a simple `@Log` interceptor applied.
+
+
+[source,java]
+----
+package org.superbiz.cdi.bookshow.beans;
+
+import org.superbiz.cdi.bookshow.interceptorbinding.Log;
+
+import javax.ejb.Stateful;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Log
+@Stateful
+public class BookForAShowOneInterceptorApplied implements Serializable {
+    private static final long serialVersionUID = 6350400892234496909L;
+
+    public List<String> getMoviesList() {
+        List<String> moviesAvailable = new ArrayList<String>();
+        moviesAvailable.add("12 Angry Men");
+        moviesAvailable.add("Kings speech");
+        return moviesAvailable;
+    }
+
+    public Integer getDiscountedPrice(int ticketPrice) {
+        return ticketPrice - 50;
+    }
+}
+----
+
+
+==  BookForAShowTwoInterceptorsApplied
+
+`BookForAShowTwoInterceptorsApplied` shows both `@Log` and `@TimeRestricted` being applied.
+
+
+[source,java]
+----
+package org.superbiz.cdi.bookshow.beans;
+
+import org.superbiz.cdi.bookshow.interceptorbinding.Log;
+import org.superbiz.cdi.bookshow.interceptorbinding.TimeRestricted;
+
+import javax.ejb.Stateful;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Log
+@Stateful
+public class BookForAShowTwoInterceptorsApplied implements Serializable {
+    private static final long serialVersionUID = 6350400892234496909L;
+
+    public List<String> getMoviesList() {
+        List<String> moviesAvailable = new ArrayList<String>();
+        moviesAvailable.add("12 Angry Men");
+        moviesAvailable.add("Kings speech");
+        return moviesAvailable;
+    }
+
+    @TimeRestricted
+    public Integer getDiscountedPrice(int ticketPrice) {
+        return ticketPrice - 50;
+    }
+}
+----
+
+
+==  BookShowInterceptorBindingInheritanceExplored
+
+`BookShowInterceptorBindingInheritanceExplored` shows how `@TimeRestrictAndLog` (interceptor-binding-inheritance) can  be used as an alternative for annotating a method with multiple annotations explicitly.
+
+
+[source,java]
+----
+package org.superbiz.cdi.bookshow.beans;
+
+import org.superbiz.cdi.bookshow.interceptorbinding.TimeRestrictAndLog;
+
+import javax.ejb.Stateful;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Stateful
+public class BookShowInterceptorBindingInheritanceExplored implements Serializable {
+    private static final long serialVersionUID = 6350400892234496909L;
+
+    public List<String> getMoviesList() {
+        List<String> moviesAvailable = new ArrayList<String>();
+        moviesAvailable.add("12 Angry Men");
+        moviesAvailable.add("Kings speech");
+        return moviesAvailable;
+    }
+
+    @TimeRestrictAndLog
+    public Integer getDiscountedPrice(int ticketPrice) {
+        return ticketPrice - 50;
+    }
+}
+----
+
+
diff --git a/src/main/jbake/content/examples/cdi-produces-disposes.adoc b/src/main/jbake/content/examples/cdi-produces-disposes.adoc
new file mode 100755
index 0000000..30578e7
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-produces-disposes.adoc
@@ -0,0 +1,316 @@
+= CDI Produces Disposes
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-produces-disposes can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-produces-disposes
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  ConsoleHandler
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.disposes;
+
+public class ConsoleHandler implements LogHandler {
+
+    private String name;
+
+    public ConsoleHandler(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void writeLog(String s) {
+        System.out.printf("##### Handler: %s, Writing to the console!\n", getName());
+    }
+}
+----
+
+
+==  DatabaseHandler
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.disposes;
+
+public class DatabaseHandler implements LogHandler {
+
+    private String name;
+
+    public DatabaseHandler(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void writeLog(String s) {
+        System.out.printf("##### Handler: %s, Writing to the database!\n", getName());
+        // Use connection to write log to database
+    }
+}
+----
+
+
+==  FileHandler
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.disposes;
+
+public class FileHandler implements LogHandler {
+
+    private String name;
+
+    public FileHandler(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void writeLog(String s) {
+        System.out.printf("##### Handler: %s, Writing to the file!\n", getName());
+        // Write to log file
+    }
+}
+----
+
+
+==  LogFactory
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.disposes;
+
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.Produces;
+
+public class LogFactory {
+
+    private int type = 2;
+
+    @Produces
+    public LogHandler getLogHandler() {
+        switch (type) {
+            case 1:
+                return new FileHandler("@Produces created FileHandler!");
+            case 2:
+                return new DatabaseHandler("@Produces created DatabaseHandler!");
+            case 3:
+            default:
+                return new ConsoleHandler("@Produces created ConsoleHandler!");
+        }
+    }
+
+    public void closeLogHandler(@Disposes LogHandler handler) {
+        switch (type) {
+            case 1:
+                System.out.println("Closing File handler!");
+                break;
+            case 2:
+                System.out.println("Closing DB handler!");
+                break;
+            case 3:
+            default:
+                System.out.println("Closing Console handler!");
+        }
+    }
+}
+----
+
+
+==  Logger
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.disposes;
+
+public interface Logger {
+
+    public void log(String s);
+
+    public LogHandler getHandler();
+}
+----
+
+
+==  LoggerImpl
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.disposes;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+@Named("logger")
+public class LoggerImpl implements Logger {
+
+    @Inject
+    private LogHandler handler;
+
+    @Override
+    public void log(String s) {
+        getHandler().writeLog(s);
+    }
+
+    public LogHandler getHandler() {
+        return handler;
+    }
+}
+----
+
+
+==  LogHandler
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.disposes;
+
+public interface LogHandler {
+
+    public String getName();
+
+    public void writeLog(String s);
+}
+----
+
+
+==  beans.xml
+
+
+[source,xml]
+----
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+                            http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+</beans>
+----
+
+
+==  LoggerTest
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.disposes;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.inject.Inject;
+import javax.naming.Context;
+
+import static junit.framework.Assert.assertNotNull;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class LoggerTest {
+
+    @Inject
+    Logger logger;
+
+    private Context ctxt;
+
+    @Before
+    public void setUp() {
+        try {
+            ctxt = EJBContainer.createEJBContainer().getContext();
+            ctxt.bind("inject", this);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @After
+    public void cleanUp() {
+        try {
+            ctxt.unbind("inject");
+            ctxt.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void testLogHandler() {
+        assertNotNull(logger);
+        assertFalse("Handler should not be a ConsoleHandler", logger.getHandler() instanceof ConsoleHandler);
+        assertFalse("Handler should not be a FileHandler", logger.getHandler() instanceof FileHandler);
+        assertTrue("Handler should be a DatabaseHandler", logger.getHandler() instanceof DatabaseHandler);
+        logger.log("##### Testing write\n");
+        logger = null;
+    }
+
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.cdi.produces.disposes.LoggerTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/cdi-produces-disposes
+INFO - openejb.base = /Users/dblevins/examples/cdi-produces-disposes
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/cdi-produces-disposes/target/classes
+INFO - Beginning load: /Users/dblevins/examples/cdi-produces-disposes/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/cdi-produces-disposes
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean cdi-produces-disposes.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/cdi-produces-disposes" loaded.
+INFO - Assembling app: /Users/dblevins/examples/cdi-produces-disposes
+INFO - Jndi(name="java:global/cdi-produces-disposes/cdi-produces-disposes.Comp!org.apache.openejb.BeanContext$Comp")
+INFO - Jndi(name="java:global/cdi-produces-disposes/cdi-produces-disposes.Comp")
+INFO - Jndi(name="java:global/EjbModule10202458/org.superbiz.cdi.produces.disposes.LoggerTest!org.superbiz.cdi.produces.disposes.LoggerTest")
+INFO - Jndi(name="java:global/EjbModule10202458/org.superbiz.cdi.produces.disposes.LoggerTest")
+INFO - Created Ejb(deployment-id=cdi-produces-disposes.Comp, ejb-name=cdi-produces-disposes.Comp, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=org.superbiz.cdi.produces.disposes.LoggerTest, ejb-name=org.superbiz.cdi.produces.disposes.LoggerTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=cdi-produces-disposes.Comp, ejb-name=cdi-produces-disposes.Comp, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=org.superbiz.cdi.produces.disposes.LoggerTest, ejb-name=org.superbiz.cdi.produces.disposes.LoggerTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/cdi-produces-disposes)
+##### Handler: @Produces created DatabaseHandler!, Writing to the database!
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.02 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/cdi-produces-field.adoc b/src/main/jbake/content/examples/cdi-produces-field.adoc
new file mode 100755
index 0000000..9a220d9
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-produces-field.adoc
@@ -0,0 +1,321 @@
+= CDI field producer
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-produces-field can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-produces-field
+
+
+This example shows the usage of the @Produces annotation. @Produces is a CDI mechanism which allows defining a source
+ for injection. This example shows one of two ways of declaring a producer. Instead of a producer method (see CDI-produces-disposes example)
+a producer field can be used. A producer field can be used instead of a simple getter method. It could be used to
+inject resources, such as persistence contexts. One caveat to using producer fields over producer
+ methods is that a @Disposes method cannot be used in conjunction with @Produces field.
+
+==  ConsoleHandler
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.field;
+
+public class ConsoleHandler implements LogHandler {
+
+    private String name;
+
+    public ConsoleHandler(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void writeLog(String s) {
+        System.out.printf("##### Handler: %s, Writing to the console!\n", getName());
+    }
+}
+----
+
+
+==  DatabaseHandler
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.field;
+
+public class DatabaseHandler implements LogHandler {
+
+    private String name;
+
+    public DatabaseHandler(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void writeLog(String s) {
+        System.out.printf("##### Handler: %s, Writing to the database!\n", getName());
+        // Use connection to write log to database
+    }
+}
+----
+
+
+==  FileHandler
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.field;
+
+public class FileHandler implements LogHandler {
+
+    private String name;
+
+    public FileHandler(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void writeLog(String s) {
+        System.out.printf("##### Handler: %s, Writing to the file!\n", getName());
+        // Write to log file
+    }
+}
+----
+
+
+==  LogFactory
+
+	package org.superbiz.cdi.produces.field;
+	
+	import javax.enterprise.inject.Produces;
+	
+	public class LogFactory {
+	
+	    private int type = 2;
+	    
+	    @Produces
+	    LogHandler handler;
+	    
+	    public LogFactory(){
+	    	handler = getLogHandler();
+	    }
+	
+	    public LogHandler getLogHandler() {
+	        switch (type) {
+	            case 1:
+	                return new FileHandler("@Produces created FileHandler!");
+	            case 2:
+	                return new DatabaseHandler("@Produces created DatabaseHandler!");
+	            case 3:
+	            default:
+	                return new ConsoleHandler("@Produces created ConsoleHandler!");
+	        }
+	
+	    }
+	}
+
+==  Logger
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.field;
+
+public interface Logger {
+
+    public void log(String s);
+
+    public LogHandler getHandler();
+}
+----
+
+
+==  LoggerImpl
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.field;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+@Named("logger")
+public class LoggerImpl implements Logger {
+
+    @Inject
+    private LogHandler handler;
+
+    @Override
+    public void log(String s) {
+        getHandler().writeLog(s);
+    }
+
+    public LogHandler getHandler() {
+        return handler;
+    }
+}
+----
+
+
+==  LogHandler
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.field;
+
+public interface LogHandler {
+
+    public String getName();
+
+    public void writeLog(String s);
+}
+----
+
+
+==  beans.xml
+
+
+[source,xml]
+----
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+                            http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+</beans>
+----
+
+
+==  LoggerTest
+
+
+[source,java]
+----
+package org.superbiz.cdi.produces.field;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.inject.Inject;
+import javax.naming.Context;
+
+import static junit.framework.Assert.assertNotNull;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class LoggerTest {
+
+    @Inject
+    Logger logger;
+
+    private Context ctxt;
+
+    @Before
+    public void setUp() {
+        try {
+            ctxt = EJBContainer.createEJBContainer().getContext();
+            ctxt.bind("inject", this);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @After
+    public void cleanUp() {
+        try {
+            ctxt.unbind("inject");
+            ctxt.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void testLogHandler() {
+        assertNotNull(logger);
+        assertFalse("Handler should not be a ConsoleHandler", logger.getHandler() instanceof ConsoleHandler);
+        assertFalse("Handler should not be a FileHandler", logger.getHandler() instanceof FileHandler);
+        assertTrue("Handler should be a DatabaseHandler", logger.getHandler() instanceof DatabaseHandler);
+        logger.log("##### Testing write\n");
+        logger = null;
+    }
+
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+	 T E S T S
+	-------------------------------------------------------
+	Running org.superbiz.cdi.produces.field.LoggerTest
+	INFO - ********************************************************************************
+	INFO - OpenEJB http://tomee.apache.org/
+	INFO - Startup: Thu May 10 01:28:19 CDT 2012
+	INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+	INFO - Version: 7.0.0-SNAPSHOT
+	INFO - Build date: 20120510
+	INFO - Build time: 04:06
+	INFO - ********************************************************************************
+	INFO - openejb.home = /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field
+	INFO - openejb.base = /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field
+	INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@a81b1fb
+	INFO - succeeded in installing singleton service
+	INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+	INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+	INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+	INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+	INFO - Creating TransactionManager(id=Default Transaction Manager)
+	INFO - Creating SecurityService(id=Default Security Service)
+	INFO - Inspecting classpath for applications: 26 urls. Consider adjusting your exclude/include.  Current settings: openejb.deployments.classpath.exclude='', openejb.deployments.classpath.include='.*'
+	INFO - Searched 26 classpath urls in 2015 milliseconds.  Average 77 milliseconds per url.
+	INFO - Beginning load: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field/target/classes
+	INFO - Configuring enterprise application: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field
+	INFO - Auto-deploying ejb cdi-produces-field.Comp: EjbDeployment(deployment-id=cdi-produces-field.Comp)
+	INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+	INFO - Auto-creating a container for bean cdi-produces-field.Comp: Container(type=MANAGED, id=Default Managed Container)
+	INFO - Creating Container(id=Default Managed Container)
+	INFO - Using directory /tmp for stateful session passivation
+	INFO - Enterprise application "/home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field" loaded.
+	INFO - Assembling app: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field
+	INFO - ignoreXmlConfiguration == true
+	INFO - ignoreXmlConfiguration == true
+	INFO - existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@a81b1fb
+	INFO - OpenWebBeans Container is starting...
+	INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+	INFO - All injection points were validated successfully.
+	INFO - OpenWebBeans Container has started, it took [69] ms.
+	INFO - Deployed Application(path=/home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field)
+	##### Handler: @Produces created DatabaseHandler!, Writing to the database!
+	INFO - Undeploying app: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field
+	Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.79 sec
+	
+	Results :
+	
+	Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+
+
diff --git a/src/main/jbake/content/examples/cdi-realm.adoc b/src/main/jbake/content/examples/cdi-realm.adoc
new file mode 100755
index 0000000..169d538
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-realm.adoc
@@ -0,0 +1,9 @@
+= cdi-realm
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-realm can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-realm
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/cdi-request-scope.adoc b/src/main/jbake/content/examples/cdi-request-scope.adoc
new file mode 100755
index 0000000..2075109
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-request-scope.adoc
@@ -0,0 +1,182 @@
+= CDI @RequestScoped
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-request-scope can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-request-scope
+
+
+This example show the use of `@RequestScoped` annotation for injected objects. An object
+which is defined as `@RequestScoped` is created once for every request and is shared by all the
+bean that inject it throughout a request.
+
+=  Example
+
+This example depicts a similar scenario to cdi-application-scope. A restaurant guest orders
+a soup from the waiter. The order is passed to the chef who prepares it and passes it back
+the waiter who in turn delivers it to the guest.
+
+==  Waiter
+
+The `Waiter` session bean receives a request from the test class via the `orderSoup()` method.
+A `Soup` insance will be created in this method and will be shared throughout the request with
+the `Chef` bean. The method passes the request to the `Chef` bean. It then returns the name of
+the soup to the test class. 
+
+
+[source,java]
+----
+@Stateless
+public class Waiter {
+
+    @Inject
+    private Soup soup;
+
+    @EJB
+    private Chef chef;
+
+    public String orderSoup(String name){
+        soup.setName(name);
+        return chef.prepareSoup().getName();
+    }
+}
+----
+
+
+==  Soup
+
+The `Soup` class is an injectable POJO, defined as `@RequestScoped`. This means that an instance
+will be created only once for every request and will be shared by all the beans injecting it.
+
+
+[source,java]
+----
+@RequestScoped
+public class Soup {
+
+    private String name = "Soup of the day";
+
+    @PostConstruct
+    public void afterCreate() {
+        System.out.println("Soup created");
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name){
+        this.name = name;
+    }
+}
+----
+
+
+==  Chef
+
+The `Chef` class is a simple session bean with an injected `Soup` field. Normally, the soup
+parameter would be passed as a `prepareSoup()` argument, but for the need of this example
+it's passed by the request context. 
+
+
+[source,java]
+----
+@Stateless
+public class Chef {
+
+    @Inject
+    private Soup soup;
+
+    public Soup prepareSoup() {
+        return soup;
+    }
+}
+----
+
+
+=  Test Case
+
+This is the entry class for this example.
+
+
+[source,java]
+----
+public class RestaurantTest {
+
+    private static String TOMATO_SOUP = "Tomato Soup";
+    private EJBContainer container;
+
+    @EJB
+    private Waiter joe;
+
+    @Before
+    public void startContainer() throws Exception {
+        container = EJBContainer.createEJBContainer();
+        container.getContext().bind("inject", this);
+    }
+
+    @Test
+    public void orderSoup(){
+        String soup = joe.orderSoup(TOMATO_SOUP);
+        assertEquals(TOMATO_SOUP, soup);
+        soup = joe.orderSoup(POTATO_SOUP);
+        assertEquals(POTATO_SOUP, soup);
+    }
+
+    @After
+    public void closeContainer() throws Exception {
+        container.close();
+    }
+}
+----
+
+
+=  Running
+
+In the output you can see that there were two `Soup` instances created - one for
+each request.
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.cdi.requestscope.RestaurantTest
+Apache OpenEJB 7.0.0-SNAPSHOT    build: 20111224-11:09
+http://tomee.apache.org/
+INFO - openejb.home = C:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope
+INFO - openejb.base = C:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope\target\classes
+INFO - Beginning load: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope\target\classes
+INFO - Configuring enterprise application: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean cdi-request-scope.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Chef: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope" loaded.
+INFO - Assembling app: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope
+INFO - Jndi(name="java:global/cdi-request-scope/Chef!org.superbiz.cdi.requestscope.Chef")
+INFO - Jndi(name="java:global/cdi-request-scope/Chef")
+INFO - Jndi(name="java:global/cdi-request-scope/Waiter!org.superbiz.cdi.requestscope.Waiter")
+INFO - Jndi(name="java:global/cdi-request-scope/Waiter")
+INFO - Created Ejb(deployment-id=Chef, ejb-name=Chef, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=Waiter, ejb-name=Waiter, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=Chef, ejb-name=Chef, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=Waiter, ejb-name=Waiter, container=Default Stateless Container)
+INFO - Deployed Application(path=c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope)
+Soup created
+Soup created
+INFO - Undeploying app: c:\Users\Daniel\workspaces\openejb\openejb\examples\cdi-request-scope
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.412 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
diff --git a/src/main/jbake/content/examples/cdi-session-scope.adoc b/src/main/jbake/content/examples/cdi-session-scope.adoc
new file mode 100755
index 0000000..e783b50
--- /dev/null
+++ b/src/main/jbake/content/examples/cdi-session-scope.adoc
@@ -0,0 +1,9 @@
+= cdi-session-scope
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cdi-session-scope can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-session-scope
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/change-jaxws-url.adoc b/src/main/jbake/content/examples/change-jaxws-url.adoc
new file mode 100755
index 0000000..cc44be8
--- /dev/null
+++ b/src/main/jbake/content/examples/change-jaxws-url.adoc
@@ -0,0 +1,116 @@
+= Change JAXWS URL
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example change-jaxws-url can be browsed at https://github.com/apache/tomee/tree/master/examples/change-jaxws-url
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+To change a webservice deployment URI one solution is to use openejb-jar.xml.
+
+In this sample we have a webservice though the class Rot13:
+
+
+[source,java]
+----
+package org.superbiz.jaxws;
+
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import javax.jws.WebService;
+
+@Lock(LockType.READ)
+@Singleton
+@WebService
+public class Rot13 {
+    public String rot13(final String in) {
+        final StringBuilder builder = new StringBuilder(in.length());
+        for (int b : in.toCharArray()) {
+            int cap = b & 32;
+            b &= ~cap;
+            if (Character.isUpperCase(b)) {
+                b = (b - 'A' + 13) % 26 + 'A';
+            } else {
+                b = cap;
+            }
+            b |= cap;
+            builder.append((char) b);
+        }
+        return builder.toString();
+    }
+}
+----
+
+
+We decide to deploy to /tool/rot13 url.
+
+To do so we first define it in openejb-jar.xml:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
+  <enterprise-beans>
+    <session>
+      <ejb-name>Rot13</ejb-name>
+      <web-service-address>/tool/rot13</web-service-address>
+    </session>
+  </enterprise-beans>
+</openejb-jar>
+----
+
+
+
+It is not enough since by default TomEE deploys the webservices in a subcontext called webservices. To skip it
+simply set the system property tomee.jaxws.subcontext to / (done in arquillian.xml for our test).
+
+Then now our Rot13 webservice is deployed as expected to /tool/rot13 and we check it with arquillian and tomee embedded:
+
+     package org.superbiz.jaxws;
+
+     import org.apache.ziplock.IO;
+     import org.jboss.arquillian.container.test.api.Deployment;
+     import org.jboss.arquillian.junit.Arquillian;
+     import org.jboss.arquillian.test.api.ArquillianResource;
+     import org.jboss.shrinkwrap.api.ArchivePaths;
+     import org.jboss.shrinkwrap.api.ShrinkWrap;
+     import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;
+     import org.jboss.shrinkwrap.api.spec.WebArchive;
+     import org.junit.AfterClass;
+     import org.junit.BeforeClass;
+     import org.junit.Test;
+     import org.junit.runner.RunWith;
+
+     import java.net.URL;
+
+     import static org.junit.Assert.assertThat;
+     import static org.junit.internal.matchers.StringContains.containsString;
+
+     @RunWith(Arquillian.class)
+     public class Rot13Test {
+         @ArquillianResource
+         private URL url;
+
+         @Deployment(testable = false)
+         public static WebArchive war() {
+             return ShrinkWrap.create(WebArchive.class)
+                         .addClass(Rot13.class)
+                         .addAsWebInfResource(new ClassLoaderAsset("META-INF/openejb-jar.xml"), ArchivePaths.create("openejb-jar.xml"));
+         }
+
+         @Test
+         public void checkWSDLIsDeployedWhereItIsConfigured() throws Exception {
+             final String wsdl = IO.slurp(new URL(url.toExternalForm() + "tool/rot13?wsdl"));
+             assertThat(wsdl, containsString("Rot13"));
+         }
+     }
+
+
+
+
+
diff --git a/src/main/jbake/content/examples/client-resource-lookup-preview.adoc b/src/main/jbake/content/examples/client-resource-lookup-preview.adoc
new file mode 100755
index 0000000..a264a49
--- /dev/null
+++ b/src/main/jbake/content/examples/client-resource-lookup-preview.adoc
@@ -0,0 +1,9 @@
+= client-resource-lookup-preview
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example client-resource-lookup-preview can be browsed at https://github.com/apache/tomee/tree/master/examples/client-resource-lookup-preview
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/component-interfaces.adoc b/src/main/jbake/content/examples/component-interfaces.adoc
new file mode 100755
index 0000000..accdf64
--- /dev/null
+++ b/src/main/jbake/content/examples/component-interfaces.adoc
@@ -0,0 +1,497 @@
+= Component Interfaces
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example component-interfaces can be browsed at https://github.com/apache/tomee/tree/master/examples/component-interfaces
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  FriendlyPerson
+
+
+[source,java]
+----
+package org.superbiz;
+
+import javax.ejb.Init;
+import javax.ejb.Local;
+import javax.ejb.LocalHome;
+import javax.ejb.Remote;
+import javax.ejb.RemoteHome;
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Properties;
+
+/**
+ * This is an EJB 3 style pojo stateful session bean
+ * it does not need to implement javax.ejb.SessionBean
+ *
+ */
+//START SNIPPET: code
+
+// EJB 3.0 Style business interfaces
+// Each of these interfaces are already annotated in the classes
+// themselves with @Remote and @Local, so annotating them here
+// in the bean class again is not really required.
+@Remote({FriendlyPersonRemote.class})
+@Local({FriendlyPersonLocal.class})
+
+// EJB 2.1 Style component interfaces
+// These interfaces, however, must be annotated here in the bean class.
+// Use of @RemoteHome in the FriendlyPersonEjbHome class itself is not allowed.
+// Use of @LocalHome in the FriendlyPersonEjbLocalHome class itself is also not allowed.
+@RemoteHome(FriendlyPersonEjbHome.class)
+@LocalHome(FriendlyPersonEjbLocalHome.class)
+
+@Stateful
+public class FriendlyPerson implements FriendlyPersonLocal, FriendlyPersonRemote {
+
+    private final HashMap<String, MessageFormat> greetings;
+    private final Properties languagePreferences;
+
+    private String defaultLanguage;
+
+    public FriendlyPerson() {
+        greetings = new HashMap();
+        languagePreferences = new Properties();
+        defaultLanguage = Locale.getDefault().getLanguage();
+
+        addGreeting("en", "Hello {0}!");
+        addGreeting("es", "Hola {0}!");
+        addGreeting("fr", "Bonjour {0}!");
+        addGreeting("pl", "Witaj {0}!");
+    }
+
+    /**
+     * This method corresponds to the FriendlyPersonEjbHome.create() method
+     * and the FriendlyPersonEjbLocalHome.create()
+     * <p/>
+     * If you do not have an EJBHome or EJBLocalHome interface, this method
+     * can be deleted.
+     */
+    @Init
+    public void create() {
+    }
+
+    /**
+     * This method corresponds to the following methods:
+     * - EJBObject.remove()
+     * - EJBHome.remove(ejbObject)
+     * - EJBLocalObject.remove()
+     * - EJBLocalHome.remove(ejbObject)
+     * <p/>
+     * If you do not have an EJBHome or EJBLocalHome interface, this method
+     * can be deleted.
+     */
+    @Remove
+    public void remove() {
+    }
+
+    public String greet(String friend) {
+        String language = languagePreferences.getProperty(friend, defaultLanguage);
+        return greet(language, friend);
+    }
+
+    public String greet(String language, String friend) {
+        MessageFormat greeting = greetings.get(language);
+        if (greeting == null) {
+            Locale locale = new Locale(language);
+            return "Sorry, I don't speak " + locale.getDisplayLanguage() + ".";
+        }
+
+        return greeting.format(new Object[]{friend});
+    }
+
+    public void addGreeting(String language, String message) {
+        greetings.put(language, new MessageFormat(message));
+    }
+
+    public void setLanguagePreferences(String friend, String language) {
+        languagePreferences.put(friend, language);
+    }
+
+    public String getDefaultLanguage() {
+        return defaultLanguage;
+    }
+
+    public void setDefaultLanguage(String defaultLanguage) {
+        this.defaultLanguage = defaultLanguage;
+    }
+}
+----
+
+
+==  FriendlyPersonEjbHome
+
+
+[source,java]
+----
+package org.superbiz;
+
+//START SNIPPET: code
+
+import javax.ejb.CreateException;
+import javax.ejb.EJBHome;
+import java.rmi.RemoteException;
+
+public interface FriendlyPersonEjbHome extends EJBHome {
+    FriendlyPersonEjbObject create() throws CreateException, RemoteException;
+}
+----
+
+
+==  FriendlyPersonEjbLocalHome
+
+
+[source,java]
+----
+package org.superbiz;
+
+//START SNIPPET: code
+
+import javax.ejb.CreateException;
+import javax.ejb.EJBLocalHome;
+import java.rmi.RemoteException;
+
+public interface FriendlyPersonEjbLocalHome extends EJBLocalHome {
+    FriendlyPersonEjbLocalObject create() throws CreateException, RemoteException;
+}
+----
+
+
+==  FriendlyPersonEjbLocalObject
+
+
+[source,java]
+----
+package org.superbiz;
+
+import javax.ejb.EJBLocalObject;
+
+public interface FriendlyPersonEjbLocalObject extends EJBLocalObject {
+    String greet(String friend);
+
+    String greet(String language, String friend);
+
+    void addGreeting(String language, String message);
+
+    void setLanguagePreferences(String friend, String language);
+
+    String getDefaultLanguage();
+
+    void setDefaultLanguage(String defaultLanguage);
+}
+----
+
+
+==  FriendlyPersonEjbObject
+
+
+[source,java]
+----
+package org.superbiz;
+
+//START SNIPPET: code
+
+import javax.ejb.EJBObject;
+import java.rmi.RemoteException;
+
+public interface FriendlyPersonEjbObject extends EJBObject {
+    String greet(String friend) throws RemoteException;
+
+    String greet(String language, String friend) throws RemoteException;
+
+    void addGreeting(String language, String message) throws RemoteException;
+
+    void setLanguagePreferences(String friend, String language) throws RemoteException;
+
+    String getDefaultLanguage() throws RemoteException;
+
+    void setDefaultLanguage(String defaultLanguage) throws RemoteException;
+}
+----
+
+
+==  FriendlyPersonLocal
+
+
+[source,java]
+----
+package org.superbiz;
+
+//START SNIPPET: code
+
+import javax.ejb.Local;
+
+@Local
+public interface FriendlyPersonLocal {
+    String greet(String friend);
+
+    String greet(String language, String friend);
+
+    void addGreeting(String language, String message);
+
+    void setLanguagePreferences(String friend, String language);
+
+    String getDefaultLanguage();
+
+    void setDefaultLanguage(String defaultLanguage);
+}
+----
+
+
+==  FriendlyPersonRemote
+
+
+[source,java]
+----
+package org.superbiz;
+
+import javax.ejb.Remote;
+
+//START SNIPPET: code
+@Remote
+public interface FriendlyPersonRemote {
+    String greet(String friend);
+
+    String greet(String language, String friend);
+
+    void addGreeting(String language, String message);
+
+    void setLanguagePreferences(String friend, String language);
+
+    String getDefaultLanguage();
+
+    void setDefaultLanguage(String defaultLanguage);
+}
+----
+
+
+==  FriendlyPersonTest
+
+
+[source,java]
+----
+package org.superbiz;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.Locale;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class FriendlyPersonTest extends TestCase {
+
+    private Context context;
+
+    protected void setUp() throws Exception {
+        context = EJBContainer.createEJBContainer().getContext();
+    }
+
+    /**
+     * Here we lookup and test the FriendlyPerson bean via its EJB 2.1 EJBHome and EJBObject interfaces
+     *
+     * @throws Exception
+     */
+    //START SNIPPET: remotehome
+    public void testEjbHomeAndEjbObject() throws Exception {
+        Object object = context.lookup("java:global/component-interfaces/FriendlyPerson!org.superbiz.FriendlyPersonEjbHome");
+        FriendlyPersonEjbHome home = (FriendlyPersonEjbHome) object;
+        FriendlyPersonEjbObject friendlyPerson = home.create();
+
+        friendlyPerson.setDefaultLanguage("en");
+
+        assertEquals("Hello David!", friendlyPerson.greet("David"));
+        assertEquals("Hello Amelia!", friendlyPerson.greet("Amelia"));
+
+        friendlyPerson.setLanguagePreferences("Amelia", "es");
+
+        assertEquals("Hello David!", friendlyPerson.greet("David"));
+        assertEquals("Hola Amelia!", friendlyPerson.greet("Amelia"));
+
+        // Amelia took some French, let's see if she remembers
+        assertEquals("Bonjour Amelia!", friendlyPerson.greet("fr", "Amelia"));
+
+        // Dave should take some Polish and if he had, he could say Hi in Polish
+        assertEquals("Witaj Dave!", friendlyPerson.greet("pl", "Dave"));
+
+        // Let's see if I speak Portuguese
+        assertEquals("Sorry, I don't speak " + new Locale("pt").getDisplayLanguage() + ".", friendlyPerson.greet("pt", "David"));
+
+        // Ok, well I've been meaning to learn, so...
+        friendlyPerson.addGreeting("pt", "Ola {0}!");
+
+        assertEquals("Ola David!", friendlyPerson.greet("pt", "David"));
+    }
+    //END SNIPPET: remotehome
+
+
+    /**
+     * Here we lookup and test the FriendlyPerson bean via its EJB 2.1 EJBLocalHome and EJBLocalObject interfaces
+     *
+     * @throws Exception
+     */
+    public void testEjbLocalHomeAndEjbLocalObject() throws Exception {
+        Object object = context.lookup("java:global/component-interfaces/FriendlyPerson!org.superbiz.FriendlyPersonEjbLocalHome");
+        FriendlyPersonEjbLocalHome home = (FriendlyPersonEjbLocalHome) object;
+        FriendlyPersonEjbLocalObject friendlyPerson = home.create();
+
+        friendlyPerson.setDefaultLanguage("en");
+
+        assertEquals("Hello David!", friendlyPerson.greet("David"));
+        assertEquals("Hello Amelia!", friendlyPerson.greet("Amelia"));
+
+        friendlyPerson.setLanguagePreferences("Amelia", "es");
+
+        assertEquals("Hello David!", friendlyPerson.greet("David"));
+        assertEquals("Hola Amelia!", friendlyPerson.greet("Amelia"));
+
+        // Amelia took some French, let's see if she remembers
+        assertEquals("Bonjour Amelia!", friendlyPerson.greet("fr", "Amelia"));
+
+        // Dave should take some Polish and if he had, he could say Hi in Polish
+        assertEquals("Witaj Dave!", friendlyPerson.greet("pl", "Dave"));
+
+        // Let's see if I speak Portuguese
+        assertEquals("Sorry, I don't speak " + new Locale("pt").getDisplayLanguage() + ".", friendlyPerson.greet("pt", "David"));
+
+        // Ok, well I've been meaning to learn, so...
+        friendlyPerson.addGreeting("pt", "Ola {0}!");
+
+        assertEquals("Ola David!", friendlyPerson.greet("pt", "David"));
+    }
+
+    /**
+     * Here we lookup and test the FriendlyPerson bean via its EJB 3.0 business remote interface
+     *
+     * @throws Exception
+     */
+    //START SNIPPET: remote
+    public void testBusinessRemote() throws Exception {
+        Object object = context.lookup("java:global/component-interfaces/FriendlyPerson!org.superbiz.FriendlyPersonRemote");
+
+        FriendlyPersonRemote friendlyPerson = (FriendlyPersonRemote) object;
+
+        friendlyPerson.setDefaultLanguage("en");
+
+        assertEquals("Hello David!", friendlyPerson.greet("David"));
+        assertEquals("Hello Amelia!", friendlyPerson.greet("Amelia"));
+
+        friendlyPerson.setLanguagePreferences("Amelia", "es");
+
+        assertEquals("Hello David!", friendlyPerson.greet("David"));
+        assertEquals("Hola Amelia!", friendlyPerson.greet("Amelia"));
+
+        // Amelia took some French, let's see if she remembers
+        assertEquals("Bonjour Amelia!", friendlyPerson.greet("fr", "Amelia"));
+
+        // Dave should take some Polish and if he had, he could say Hi in Polish
+        assertEquals("Witaj Dave!", friendlyPerson.greet("pl", "Dave"));
+
+        // Let's see if I speak Portuguese
+        assertEquals("Sorry, I don't speak " + new Locale("pt").getDisplayLanguage() + ".", friendlyPerson.greet("pt", "David"));
+
+        // Ok, well I've been meaning to learn, so...
+        friendlyPerson.addGreeting("pt", "Ola {0}!");
+
+        assertEquals("Ola David!", friendlyPerson.greet("pt", "David"));
+    }
+    //START SNIPPET: remote
+
+    /**
+     * Here we lookup and test the FriendlyPerson bean via its EJB 3.0 business local interface
+     *
+     * @throws Exception
+     */
+    public void testBusinessLocal() throws Exception {
+        Object object = context.lookup("java:global/component-interfaces/FriendlyPerson!org.superbiz.FriendlyPersonLocal");
+
+        FriendlyPersonLocal friendlyPerson = (FriendlyPersonLocal) object;
+
+        friendlyPerson.setDefaultLanguage("en");
+
+        assertEquals("Hello David!", friendlyPerson.greet("David"));
+        assertEquals("Hello Amelia!", friendlyPerson.greet("Amelia"));
+
+        friendlyPerson.setLanguagePreferences("Amelia", "es");
+
+        assertEquals("Hello David!", friendlyPerson.greet("David"));
+        assertEquals("Hola Amelia!", friendlyPerson.greet("Amelia"));
+
+        // Amelia took some French, let's see if she remembers
+        assertEquals("Bonjour Amelia!", friendlyPerson.greet("fr", "Amelia"));
+
+        // Dave should take some Polish and if he had, he could say Hi in Polish
+        assertEquals("Witaj Dave!", friendlyPerson.greet("pl", "Dave"));
+
+        // Let's see if I speak Portuguese
+        assertEquals("Sorry, I don't speak " + new Locale("pt").getDisplayLanguage() + ".", friendlyPerson.greet("pt", "David"));
+
+        // Ok, well I've been meaning to learn, so...
+        friendlyPerson.addGreeting("pt", "Ola {0}!");
+
+        assertEquals("Ola David!", friendlyPerson.greet("pt", "David"));
+    }
+
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.FriendlyPersonTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/component-interfaces
+INFO - openejb.base = /Users/dblevins/examples/component-interfaces
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/component-interfaces/target/classes
+INFO - Beginning load: /Users/dblevins/examples/component-interfaces/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/component-interfaces
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean FriendlyPerson: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.FriendlyPersonTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/component-interfaces" loaded.
+INFO - Assembling app: /Users/dblevins/examples/component-interfaces
+INFO - Jndi(name="java:global/component-interfaces/FriendlyPerson!org.superbiz.FriendlyPersonLocal")
+INFO - Jndi(name="java:global/component-interfaces/FriendlyPerson!org.superbiz.FriendlyPersonRemote")
+INFO - Jndi(name="java:global/component-interfaces/FriendlyPerson!org.superbiz.FriendlyPersonEjbLocalHome")
+INFO - Jndi(name="java:global/component-interfaces/FriendlyPerson!org.superbiz.FriendlyPersonEjbHome")
+INFO - Jndi(name="java:global/component-interfaces/FriendlyPerson")
+INFO - Jndi(name="java:global/EjbModule803660549/org.superbiz.FriendlyPersonTest!org.superbiz.FriendlyPersonTest")
+INFO - Jndi(name="java:global/EjbModule803660549/org.superbiz.FriendlyPersonTest")
+INFO - Created Ejb(deployment-id=FriendlyPerson, ejb-name=FriendlyPerson, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.FriendlyPersonTest, ejb-name=org.superbiz.FriendlyPersonTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=FriendlyPerson, ejb-name=FriendlyPerson, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.FriendlyPersonTest, ejb-name=org.superbiz.FriendlyPersonTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/component-interfaces)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.444 sec
+
+Results :
+
+Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/cucumber-jvm.adoc b/src/main/jbake/content/examples/cucumber-jvm.adoc
new file mode 100755
index 0000000..69da1df
--- /dev/null
+++ b/src/main/jbake/content/examples/cucumber-jvm.adoc
@@ -0,0 +1,9 @@
+= cucumber-jvm
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example cucumber-jvm can be browsed at https://github.com/apache/tomee/tree/master/examples/cucumber-jvm
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/custom-injection.adoc b/src/main/jbake/content/examples/custom-injection.adoc
new file mode 100755
index 0000000..7edf520
--- /dev/null
+++ b/src/main/jbake/content/examples/custom-injection.adoc
@@ -0,0 +1,256 @@
+= Custom Injection
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example custom-injection can be browsed at https://github.com/apache/tomee/tree/master/examples/custom-injection
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Pickup
+
+
+[source,java]
+----
+package org.superbiz.enventries;
+
+
+//START SNIPPET: code
+
+import java.beans.PropertyEditorManager;
+
+public enum Pickup {
+
+    HUMBUCKER,
+    SINGLE_COIL;
+
+    // Here's the little magic where we register the PickupEditor
+    // which knows how to create this object from a string.
+    // You can add any of your own Property Editors in the same way.
+    static {
+        PropertyEditorManager.registerEditor(Pickup.class, PickupEditor.class);
+    }
+}
+----
+
+
+==  PickupEditor
+
+
+[source,java]
+----
+package org.superbiz.enventries;
+
+/**
+ * With a java.beans.PropertyEditor, you can go way beyond the built-in
+ * types that OpenEJB supports and can extend dependency injection to
+ * just about anywhere.
+ * <p/>
+ * In the world of electric guitars, two types of pickups are used: humbucking, and single-coil.
+ * Guitarists often refer to their guitars as HSS, meaning a guitar with 1 humbucker and
+ * 2 single coil pickups, and so on.  This little PropertyEditor supports that shorthand notation.
+ *
+ * @version $Revision$ $Date$
+ */
+//START SNIPPET: code
+public class PickupEditor extends java.beans.PropertyEditorSupport {
+
+    public void setAsText(String text) throws IllegalArgumentException {
+        text = text.trim();
+
+        if (text.equalsIgnoreCase("H")) setValue(Pickup.HUMBUCKER);
+        else if (text.equalsIgnoreCase("S")) setValue(Pickup.SINGLE_COIL);
+        else throw new IllegalStateException("H and S are the only supported Pickup aliases");
+    }
+}
+----
+
+
+==  Stratocaster
+
+
+[source,java]
+----
+package org.superbiz.enventries;
+
+import javax.annotation.Resource;
+import javax.ejb.Stateless;
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * In addition to the standard env-entry types (String, Integer, Long, Short, Byte, Boolean, Double, Float, Character)
+ * OpenEJB supports many other types.
+ */
+//START SNIPPET: code
+@Stateless
+public class Stratocaster {
+
+
+    @Resource(name = "pickups")
+    private List<Pickup> pickups;
+
+    @Resource(name = "style")
+    private Style style;
+
+    @Resource(name = "dateCreated")
+    private Date dateCreated;
+
+    @Resource(name = "guitarStringGuages")
+    private Map<String, Float> guitarStringGuages;
+
+    @Resource(name = "certificateOfAuthenticity")
+    private File certificateOfAuthenticity;
+
+    public Date getDateCreated() {
+        return dateCreated;
+    }
+
+    /**
+     * Gets the guage of the electric guitar strings
+     * used in this guitar.
+     *
+     * @param string
+     * @return
+     */
+    public float getStringGuage(String string) {
+        return guitarStringGuages.get(string);
+    }
+
+    public List<Pickup> getPickups() {
+        return pickups;
+    }
+
+    public Style getStyle() {
+        return style;
+    }
+
+    public File getCertificateOfAuthenticity() {
+        return certificateOfAuthenticity;
+    }
+}
+----
+
+
+==  Style
+
+
+[source,java]
+----
+package org.superbiz.enventries;
+
+/**
+ * @version $Revision$ $Date$
+ */
+//START SNIPPET: code
+public enum Style {
+
+    STANDARD,
+    DELUX,
+    VINTAGE;
+}
+----
+
+
+==  StratocasterTest
+
+
+[source,java]
+----
+package org.superbiz.enventries;
+
+import junit.framework.TestCase;
+
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+import java.io.File;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import static java.util.Arrays.asList;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+//START SNIPPET: code
+public class StratocasterTest extends TestCase {
+
+    @EJB
+    private Stratocaster strat;
+
+    public void test() throws Exception {
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+
+        Date date = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).parse("Mar 1, 1962");
+        assertEquals("Strat.getDateCreated()", date, strat.getDateCreated());
+
+        List<Pickup> pickups = asList(Pickup.SINGLE_COIL, Pickup.SINGLE_COIL, Pickup.SINGLE_COIL);
+        assertEquals("Strat.getPickups()", pickups, strat.getPickups());
+
+        assertEquals("Strat.getStyle()", Style.VINTAGE, strat.getStyle());
+
+        assertEquals("Strat.getStringGuage(\"E1\")", 0.052F, strat.getStringGuage("E1"));
+        assertEquals("Strat.getStringGuage(\"A\")", 0.042F, strat.getStringGuage("A"));
+        assertEquals("Strat.getStringGuage(\"D\")", 0.030F, strat.getStringGuage("D"));
+        assertEquals("Strat.getStringGuage(\"G\")", 0.017F, strat.getStringGuage("G"));
+        assertEquals("Strat.getStringGuage(\"B\")", 0.013F, strat.getStringGuage("B"));
+        assertEquals("Strat.getStringGuage(\"E\")", 0.010F, strat.getStringGuage("E"));
+
+        File file = new File("/tmp/strat-certificate.txt");
+        assertEquals("Strat.getCertificateOfAuthenticity()", file, strat.getCertificateOfAuthenticity());
+
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.enventries.StratocasterTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/custom-injection
+INFO - openejb.base = /Users/dblevins/examples/custom-injection
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/custom-injection/target/classes
+INFO - Beginning load: /Users/dblevins/examples/custom-injection/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/custom-injection
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Stratocaster: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.enventries.StratocasterTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/custom-injection" loaded.
+INFO - Assembling app: /Users/dblevins/examples/custom-injection
+INFO - Jndi(name="java:global/custom-injection/Stratocaster!org.superbiz.enventries.Stratocaster")
+INFO - Jndi(name="java:global/custom-injection/Stratocaster")
+INFO - Jndi(name="java:global/EjbModule1663626738/org.superbiz.enventries.StratocasterTest!org.superbiz.enventries.StratocasterTest")
+INFO - Jndi(name="java:global/EjbModule1663626738/org.superbiz.enventries.StratocasterTest")
+INFO - Created Ejb(deployment-id=Stratocaster, ejb-name=Stratocaster, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.enventries.StratocasterTest, ejb-name=org.superbiz.enventries.StratocasterTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Stratocaster, ejb-name=Stratocaster, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.enventries.StratocasterTest, ejb-name=org.superbiz.enventries.StratocasterTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/custom-injection)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.11 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/datasource-ciphered-password.adoc b/src/main/jbake/content/examples/datasource-ciphered-password.adoc
new file mode 100755
index 0000000..f5584e2
--- /dev/null
+++ b/src/main/jbake/content/examples/datasource-ciphered-password.adoc
@@ -0,0 +1,228 @@
+= DataSource Ciphered Password
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example datasource-ciphered-password can be browsed at https://github.com/apache/tomee/tree/master/examples/datasource-ciphered-password
+
+
+=  Datasource Ciphered Password example
+
+This example shows how to use a ciphered password with an OpenEJB datasource.
+
+It shows how to implement its own encryption too.
+
+=  Configuration
+
+The configuration is simply a datasource configuration with an additionnal parameter
+"PasswordCipher" to specify the encryption to use.
+
+Example using Static3DES encryption:
+
+        properties.setProperty("ProtectedDatasource", "new://Resource?type=DataSource");
+        properties.setProperty("ProtectedDatasource.JdbcDriver", "org.hsqldb.jdbcDriver");
+        properties.setProperty("ProtectedDatasource.JdbcUrl", "jdbc:hsqldb:mem:protected");
+        properties.setProperty("ProtectedDatasource.UserName", "user");
+        // the plain text password is "YouLLN3v3rFindM3"
+        properties.setProperty("ProtectedDatasource.Password", "fEroTNXjaL5SOTyRQ92x3DNVS/ksbtgs");
+        properties.setProperty("ProtectedDatasource.PasswordCipher", "Static3DES");
+        properties.setProperty("ProtectedDatasource.JtaManaged", "true");
+
+
+=  Using its own implementation
+
+The example implement a reverse encryption which simply reverse the password to encrypt/decrypt.
+
+The implementation is done with commons-lang library:
+
+
+[source,java]
+----
+public static class ReverseEncryption implements PasswordCipher {
+    @Override public char[] encrypt(String plainPassword) {
+        return StringUtils.reverse(plainPassword).toCharArray();
+    }
+
+    @Override public String decrypt(char[] encryptedPassword) {
+        return new String(encrypt(new String(encryptedPassword)));
+    }
+}
+----
+
+
+
+To be functional it needs the file `META-INF/org.apache.openejb.resource.jdbc.PasswordCipher/reverse`.
+
+The file name (reverse) define  the encryption name to use for the PasswordCipher parameter.
+
+This file simply contains the implementation class of the encryption.
+
+Then you simply declare this encryption for your datasource:
+
+        properties.setProperty("ProtectedDatasource", "new://Resource?type=DataSource");
+        properties.setProperty("ProtectedDatasource.JdbcDriver", "org.hsqldb.jdbcDriver");
+        properties.setProperty("ProtectedDatasource.JdbcUrl", "jdbc:hsqldb:mem:protected");
+        properties.setProperty("ProtectedDatasource.UserName", USER);
+        properties.setProperty("ProtectedDatasource.Password", "3MdniFr3v3NLLuoY");
+        properties.setProperty("ProtectedDatasource.PasswordCipher", "reverse");
+        properties.setProperty("ProtectedDatasource.JtaManaged", "true");
+
+=  Documentation
+
+For more information please see the link:http://tomee.apache.org/3.0/datasource-password-encryption.html[documentation]
+
+=  Full Test Source
+
+
+[source,java]
+----
+package org.superbiz;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.openejb.resource.jdbc.PasswordCipher;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.annotation.Resource;
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.util.Properties;
+
+import static junit.framework.Assert.assertNotNull;
+
+public class DataSourceCipheredExampleTest {
+    private static final String USER = DataSourceCipheredExampleTest.class.getSimpleName().toUpperCase();
+    private static final String PASSWORD = "YouLLN3v3rFindM3";
+    private static final String DATASOURCE_URL = "jdbc:hsqldb:mem:protected";
+
+    @Resource
+    private DataSource dataSource;
+
+    @BeforeClass
+    public static void addDatabaseUserWithPassword() throws Exception {
+        Class.forName("org.hsqldb.jdbcDriver");
+        Connection conn = DriverManager.getConnection(DATASOURCE_URL, "sa", "");
+        conn.setAutoCommit(true);
+        Statement st = conn.createStatement();
+        st.executeUpdate("CREATE USER " + USER + " PASSWORD '" + PASSWORD + "';");
+        st.close();
+        conn.commit();
+        conn.close();
+    }
+
+    @Test
+    public void accessDatasource() throws Exception {
+        // define the datasource
+        Properties properties = new Properties();
+        properties.setProperty("ProtectedDatasource", "new://Resource?type=DataSource");
+        properties.setProperty("ProtectedDatasource.JdbcDriver", "org.hsqldb.jdbcDriver");
+        properties.setProperty("ProtectedDatasource.JdbcUrl", DATASOURCE_URL);
+        properties.setProperty("ProtectedDatasource.UserName", USER);
+        properties.setProperty("ProtectedDatasource.Password", "fEroTNXjaL5SOTyRQ92x3DNVS/ksbtgs");
+        properties.setProperty("ProtectedDatasource.PasswordCipher", "Static3DES");
+        properties.setProperty("ProtectedDatasource.JtaManaged", "true");
+
+        // start the context and makes junit test injections
+        EJBContainer container = EJBContainer.createEJBContainer(properties);
+        Context context = container.getContext();
+        context.bind("inject", this);
+
+        // test the datasource
+        assertNotNull(dataSource);
+        assertNotNull(dataSource.getConnection());
+
+        // closing the context
+        container.close();
+    }
+
+    @Test
+    public void accessDatasourceWithMyImplementation() throws Exception {
+        // define the datasource
+        Properties properties = new Properties();
+        properties.setProperty("ProtectedDatasource", "new://Resource?type=DataSource");
+        properties.setProperty("ProtectedDatasource.JdbcDriver", "org.hsqldb.jdbcDriver");
+        properties.setProperty("ProtectedDatasource.JdbcUrl", "jdbc:hsqldb:mem:protected");
+        properties.setProperty("ProtectedDatasource.UserName", USER);
+        properties.setProperty("ProtectedDatasource.Password", "3MdniFr3v3NLLuoY");
+        properties.setProperty("ProtectedDatasource.PasswordCipher", "reverse");
+        properties.setProperty("ProtectedDatasource.JtaManaged", "true");
+
+        // start the context and makes junit test injections
+        EJBContainer container = EJBContainer.createEJBContainer(properties);
+        Context context = container.getContext();
+        context.bind("inject", this);
+
+        // test the datasource
+        assertNotNull(dataSource);
+        assertNotNull(dataSource.getConnection());
+
+        // closing the context
+        container.close();
+    }
+
+    public static class ReverseEncryption implements PasswordCipher {
+        @Override
+        public char[] encrypt(String plainPassword) {
+            return StringUtils.reverse(plainPassword).toCharArray();
+        }
+
+        @Override
+        public String decrypt(char[] encryptedPassword) {
+            return new String(encrypt(new String(encryptedPassword)));
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.DataSourceCipheredExampleTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/datasource-ciphered-password
+INFO - openejb.base = /Users/dblevins/examples/datasource-ciphered-password
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=ProtectedDatasource, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/datasource-ciphered-password/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/datasource-ciphered-password/target/test-classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/datasource-ciphered-password
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean datasource-ciphered-password.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.DataSourceCipheredExampleTest/dataSource' in bean datasource-ciphered-password.Comp to Resource(id=ProtectedDatasource)
+INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.DataSourceCipheredExampleTest/dataSource' in bean org.superbiz.DataSourceCipheredExampleTest to Resource(id=ProtectedDatasource)
+INFO - Enterprise application "/Users/dblevins/examples/datasource-ciphered-password" loaded.
+INFO - Assembling app: /Users/dblevins/examples/datasource-ciphered-password
+INFO - Jndi(name="java:global/datasource-ciphered-password/datasource-ciphered-password.Comp!org.apache.openejb.BeanContext$Comp")
+INFO - Jndi(name="java:global/datasource-ciphered-password/datasource-ciphered-password.Comp")
+INFO - Jndi(name="java:global/EjbModule86823325/org.superbiz.DataSourceCipheredExampleTest!org.superbiz.DataSourceCipheredExampleTest")
+INFO - Jndi(name="java:global/EjbModule86823325/org.superbiz.DataSourceCipheredExampleTest")
+INFO - Created Ejb(deployment-id=datasource-ciphered-password.Comp, ejb-name=datasource-ciphered-password.Comp, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=org.superbiz.DataSourceCipheredExampleTest, ejb-name=org.superbiz.DataSourceCipheredExampleTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=datasource-ciphered-password.Comp, ejb-name=datasource-ciphered-password.Comp, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=org.superbiz.DataSourceCipheredExampleTest, ejb-name=org.superbiz.DataSourceCipheredExampleTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/datasource-ciphered-password)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.331 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/datasource-definition.adoc b/src/main/jbake/content/examples/datasource-definition.adoc
new file mode 100755
index 0000000..3931880
--- /dev/null
+++ b/src/main/jbake/content/examples/datasource-definition.adoc
@@ -0,0 +1,9 @@
+= datasource-definition
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example datasource-definition can be browsed at https://github.com/apache/tomee/tree/master/examples/datasource-definition
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/datasource-versioning.adoc b/src/main/jbake/content/examples/datasource-versioning.adoc
new file mode 100755
index 0000000..51b80d8
--- /dev/null
+++ b/src/main/jbake/content/examples/datasource-versioning.adoc
@@ -0,0 +1,412 @@
+= DataSource Versioning
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example datasource-versioning can be browsed at https://github.com/apache/tomee/tree/master/examples/datasource-versioning
+
+
+This example shows you how to use versioned DataSources of the same provider using the classpath attribute.
+
+=  Configuration
+
+The DataSource configuration can be made several ways and here we layout two common methods in the form of unit tests.
+Before we start, if you take a peek in the project pom.xml and look for the maven-dependency-plugin usage you will see that we pull in
+two completely different driver files for this example.
+
+=  AlternateDataSourceTest.java
+This test utilizes the Arquillian testing framework. See link:http://tomee.apache.org/arquillian-available-adapters.html[here] for more details.
+
+The example uses src/test/resources/arquillian.xml and src/test/conf/tomee.xml to define the DataSources.
+Note the differing driver version paths, yet still using the same provider (org.apache.derby.jdbc.EmbeddedDriver):
+
+
+[source,xml]
+----
+<tomee>
+
+  <Resource id="DatabaseOne" type="DataSource" classpath="${catalina.base}/../../drivers/derby-10.10.1.1.jar">
+    JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
+    JdbcUrl jdbc:derby:databaseOne;create=true
+    UserName SA
+  </Resource>
+
+  <Resource id="DatabaseTwo" type="DataSource" classpath="${catalina.base}/../../drivers/derby-10.9.1.0.jar">
+    JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
+    JdbcUrl jdbc:derby:databaseTwo;create=true
+    UserName SA
+  </Resource>
+
+</tomee>
+----
+
+	
+=  Developer Information
+When testing within a Maven environment it is also possible to use direct maven coordinates rather than a file link, like so:
+
+    ....
+	<Resource id="DatabaseOne" type="DataSource" classpath="mvn:org.apache.derby:derby:10.10.1.1">
+	....
+	
+
+=  AlternateDriverJarTest.java
+
+This test takes an embedded approach and as you can see the driver paths are specified as a DataSource parameter.
+Both examples demonstrate the same, in that two driver versions can be loaded and used within the same application.
+
+
+[source,java]
+----
+@Configuration
+public Properties config() {
+
+    final File drivers = new File(new File("target"), "drivers").getAbsoluteFile();
+
+    final Properties p = new Properties();
+    p.put("openejb.jdbc.datasource-creator", "dbcp-alternative");
+
+    File file = new File(drivers, "derby-10.10.1.1.jar");
+    Assert.assertTrue("Failed to find: " + file, file.exists());
+
+    p.put("JdbcOne", "new://Resource?type=DataSource&classpath="
+            + file.getAbsolutePath().replace("\\", "/"));
+    p.put("JdbcOne.JdbcDriver", "org.apache.derby.jdbc.EmbeddedDriver");
+    p.put("JdbcOne.JdbcUrl", "jdbc:derby:memory:JdbcOne;create=true");
+    p.put("JdbcOne.UserName", USER);
+    p.put("JdbcOne.Password", PASSWORD);
+    p.put("JdbcOne.JtaManaged", "false");
+
+    file = new File(drivers, "derby-10.9.1.0.jar");
+    Assert.assertTrue("Failed to find: " + file, file.exists());
+
+    p.put("JdbcTwo", "new://Resource?type=DataSource&classpath="
+            + file.getAbsolutePath().replace("\\", "/"));
+    p.put("JdbcTwo.JdbcDriver", "org.apache.derby.jdbc.EmbeddedDriver");
+    p.put("JdbcTwo.JdbcUrl", "jdbc:derby:memory:JdbcTwo;create=true");
+    p.put("JdbcTwo.UserName", USER);
+    p.put("JdbcTwo.Password", PASSWORD);
+    p.put("JdbcTwo.JtaManaged", "false");
+    return p;
+}
+----
+
+
+=  Full Test Source for AlternateDataSourceTest.java
+
+
+[source,java]
+----
+package org.superbiz;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+
+@RunWith(Arquillian.class)
+public class AlternateDataSourceTest {
+
+    @Deployment
+    public static WebArchive createDeployment() {
+
+        return ShrinkWrap.create(WebArchive.class, "test.war")
+            .addClasses(DataSourceTester.class)
+            .addAsResource(new ClassLoaderAsset("META-INF/ejb-jar.xml"), "META-INF/ejb-jar.xml");
+        //We are using src/test/conf/tomee.xml, but this also works - .addAsResource(new ClassLoaderAsset("META-INF/resources.xml"), "META-INF/resources.xml");
+        //Or even using a persistence context - .addAsResource(new ClassLoaderAsset("META-INF/persistence.xml"), "META-INF/persistence.xml");
+    }
+
+    @EJB
+    private DataSourceTester tester;
+
+    @Test
+    public void testDataSourceOne() throws Exception {
+        Assert.assertEquals("Should be using 10.10.1.1 - (1458268)", "10.10.1.1 - (1458268)", tester.getOne());
+    }
+
+    @Test
+    public void testDataSourceTwo() throws Exception {
+        Assert.assertEquals("Should be using 10.9.1.0 - (1344872)", "10.9.1.0 - (1344872)", tester.getTwo());
+    }
+
+    @Test
+    public void testDataSourceBoth() throws Exception {
+        Assert.assertEquals("Should be using 10.10.1.1 - (1458268)|10.9.1.0 - (1344872)", "10.10.1.1 - (1458268)|10.9.1.0 - (1344872)", tester.getBoth());
+    }
+
+    @Stateless
+    public static class DataSourceTester {
+
+        @Resource(name = "DatabaseOne")
+        DataSource dataSourceOne;
+
+        @Resource(name = "DatabaseTwo")
+        DataSource dataSourceTwo;
+
+        public String getOne() throws Exception {
+            return getVersion(dataSourceOne);
+        }
+
+        public String getTwo() throws Exception {
+            return getVersion(dataSourceTwo);
+        }
+
+        public String getBoth() throws Exception {
+            return getOne() + "|" + getTwo();
+        }
+
+        private static String getVersion(final DataSource ds) throws SQLException {
+            Connection con = null;
+            try {
+                con = ds.getConnection();
+                final DatabaseMetaData md = con.getMetaData();
+                return md.getDriverVersion();
+            } finally {
+                if (con != null) {
+                    con.close();
+                }
+            }
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.AlternateDataSourceTest
+Apr 17, 2014 2:19:45 PM org.apache.openejb.arquillian.common.Setup findHome
+INFO: Unable to find home in: C:\dev\svn\tomee\examples\datasource-versioning\target\apache-tomee-remote
+Apr 17, 2014 2:19:45 PM org.apache.openejb.arquillian.common.MavenCache getArtifact
+INFO: Downloading org.apache.openejb:apache-tomee:1.6.1-SNAPSHOT:zip:webprofile please wait...
+Apr 17, 2014 2:19:45 PM org.apache.openejb.arquillian.common.Zips unzip
+INFO: Extracting 'C:\Users\Andy\.m2\repository\org\apache\openejb\apache-tomee\1.6.1-SNAPSHOT\apache-tomee-1.6.1-SNAPSHOT-webprofile.zip' to 'C:\dev\svn\tomee\examples\datasource-versioning\target\apache-tomee-remote'
+Apr 17, 2014 2:19:47 PM org.apache.tomee.arquillian.remote.RemoteTomEEContainer configure
+INFO: Downloaded container to: C:\dev\svn\tomee\examples\datasource-versioning\target\apache-tomee-remote\apache-tomee-webprofile-1.6.1-SNAPSHOT
+INFO - The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.7.0_45\jre\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\SlikSvn\bin;C:\dev\apache-maven-3.2.1\bin;C:\dev\apache-ant-1.9.3\bin;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Git\bin;C:\Program Files\TortoiseGit\bin;C:\Program Files\TortoiseSVN\bin;.
+INFO - Initializing ProtocolHandler ["http-bio-55243"]
+INFO - Initializing ProtocolHandler ["ajp-bio-55245"]
+INFO - Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
+INFO - Optional service not installed: org.apache.tomee.webservices.TomeeJaxRsService
+INFO - Optional service not installed: org.apache.tomee.webservices.TomeeJaxWsService
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Thu Apr 17 14:19:55 CEST 2014
+INFO - Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 7.0.0-SNAPSHOT
+INFO - Build date: 20140417
+INFO - Build time: 01:37
+INFO - ********************************************************************************
+INFO - openejb.home = C:\dev\svn\tomee\examples\datasource-versioning\target\apache-tomee-remote\apache-tomee-webprofile-1.6.1-SNAPSHOT
+INFO - openejb.base = C:\dev\svn\tomee\examples\datasource-versioning\target\apache-tomee-remote\apache-tomee-webprofile-1.6.1-SNAPSHOT
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@22c2e2dd
+INFO - Succeeded in installing singleton service
+INFO - openejb configuration file is 'C:\dev\svn\tomee\examples\datasource-versioning\target\apache-tomee-remote\apache-tomee-webprofile-1.6.1-SNAPSHOT\conf\tomee.xml'
+INFO - Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=DatabaseOne, type=Resource, provider-id=Default JDBC Database)
+INFO - Configuring Service(id=DatabaseTwo, type=Resource, provider-id=Default JDBC Database)
+INFO - Using 'openejb.system.apps=true'
+INFO - Configuring enterprise application: openejb
+INFO - Using openejb.deploymentId.format '{ejbName}'
+INFO - Auto-deploying ejb openejb/Deployer: EjbDeployment(deployment-id=openejb/Deployer)
+INFO - Auto-deploying ejb openejb/ConfigurationInfo: EjbDeployment(deployment-id=openejb/ConfigurationInfo)
+INFO - Auto-deploying ejb MEJB: EjbDeployment(deployment-id=MEJB)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean openejb/Deployer: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "openejb" loaded.
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Tomcat Security Service)
+INFO - Creating Resource(id=DatabaseOne)
+INFO - Disabling testOnBorrow since no validation query is provided
+INFO - Creating Resource(id=DatabaseTwo)
+INFO - Disabling testOnBorrow since no validation query is provided
+INFO - Creating Container(id=Default Stateless Container)
+INFO - Assembling app: openejb
+INFO - Using 'openejb.jndiname.format={deploymentId}{interfaceType.openejbLegacyName}'
+INFO - Jndi(name=openejb/DeployerBusinessRemote) --> Ejb(deployment-id=openejb/Deployer)
+INFO - Jndi(name=global/openejb/openejb/Deployer!org.apache.openejb.assembler.Deployer) --> Ejb(deployment-id=openejb/Deployer)
+INFO - Jndi(name=global/openejb/openejb/Deployer) --> Ejb(deployment-id=openejb/Deployer)
+INFO - Jndi(name=openejb/ConfigurationInfoBusinessRemote) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+INFO - Jndi(name=global/openejb/openejb/ConfigurationInfo!org.apache.openejb.assembler.classic.cmd.ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+INFO - Jndi(name=global/openejb/openejb/ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+INFO - Jndi(name=MEJB) --> Ejb(deployment-id=MEJB)
+INFO - Jndi(name=global/openejb/MEJB!javax.management.j2ee.ManagementHome) --> Ejb(deployment-id=MEJB)
+INFO - Jndi(name=global/openejb/MEJB) --> Ejb(deployment-id=MEJB)
+INFO - Created Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
+INFO - Deployed MBean(openejb.user.mbeans:application=openejb,group=org.apache.openejb.assembler.monitoring,name=JMXDeployer)
+INFO - Deployed Application(path=openejb)
+INFO -   ** Bound Services **
+INFO -   NAME                 IP              PORT
+INFO - -------
+INFO - Ready!
+INFO - Initialization processed in 7959 ms
+INFO - Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
+INFO - Creating Resource(id=UserDatabase)
+INFO - Starting service Catalina
+INFO - Starting Servlet Engine: Apache Tomcat (TomEE)/7.0.53 (1.6.1-SNAPSHOT)
+INFO - Starting ProtocolHandler ["http-bio-55243"]
+INFO - Starting ProtocolHandler ["ajp-bio-55245"]
+INFO - Server startup in 288 ms
+WARNING - StandardServer.await: Invalid command '' received
+Apr 17, 2014 2:20:04 PM org.apache.openejb.client.EventLogger log
+INFO: RemoteInitialContextCreated{providerUri=http://localhost:55243/tomee/ejb}
+INFO - Extracting jar: C:\dev\svn\tomee\examples\datasource-versioning\target\arquillian-test-working-dir\0\test.war
+INFO - Extracted path: C:\dev\svn\tomee\examples\datasource-versioning\target\arquillian-test-working-dir\0\test
+INFO - using default host: localhost
+INFO - ------------------------- localhost -> /test
+INFO - Using 'openejb.session.manager=org.apache.tomee.catalina.session.QuickSessionManager'
+INFO - Configuring enterprise application: C:\dev\svn\tomee\examples\datasource-versioning\target\arquillian-test-working-dir\0\test
+INFO - Auto-deploying ejb DataSourceTester: EjbDeployment(deployment-id=DataSourceTester)
+INFO - Auto-linking resource-ref 'java:comp/env/DatabaseTwo' in bean DataSourceTester to Resource(id=DatabaseTwo)
+INFO - Auto-linking resource-ref 'java:comp/env/DatabaseOne' in bean DataSourceTester to Resource(id=DatabaseOne)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.AlternateDataSourceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory C:\dev\svn\tomee\examples\datasource-versioning\target\apache-tomee-remote\apache-tomee-webprofile-1.6.1-SNAPSHOT\temp for stateful session passivation
+INFO - Enterprise application "C:\dev\svn\tomee\examples\datasource-versioning\target\arquillian-test-working-dir\0\test" loaded.
+INFO - Assembling app: C:\dev\svn\tomee\examples\datasource-versioning\target\arquillian-test-working-dir\0\test
+INFO - Jndi(name=DataSourceTesterLocalBean) --> Ejb(deployment-id=DataSourceTester)
+INFO - Jndi(name=global/test/DataSourceTester!org.superbiz.AlternateDataSourceTest$DataSourceTester) --> Ejb(deployment-id=DataSourceTester)
+INFO - Jndi(name=global/test/DataSourceTester) --> Ejb(deployment-id=DataSourceTester)
+INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@22c2e2dd
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took 203 ms.
+INFO - Created Ejb(deployment-id=DataSourceTester, ejb-name=DataSourceTester, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=DataSourceTester, ejb-name=DataSourceTester, container=Default Stateless Container)
+INFO - Deployed Application(path=C:\dev\svn\tomee\examples\datasource-versioning\target\arquillian-test-working-dir\0\test)
+Apr 17, 2014 2:20:11 PM org.apache.openejb.client.EventLogger log
+INFO: RemoteInitialContextCreated{providerUri=http://localhost:55243/tomee/ejb}
+INFO - Undeploying app: C:\dev\svn\tomee\examples\datasource-versioning\target\arquillian-test-working-dir\0\test
+Apr 17, 2014 2:20:13 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
+INFO: cleaning C:\dev\svn\tomee\examples\datasource-versioning\target\arquillian-test-working-dir\0
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 30.155 sec
+Running org.superbiz.AlternateDriverJarTest
+Apr 17, 2014 2:20:13 PM org.apache.openejb.config.ConfigUtils searchForConfiguration
+INFO: Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+Apr 17, 2014 2:20:13 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+Apr 17, 2014 2:20:13 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+Apr 17, 2014 2:20:13 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=JdbcTwo, type=Resource, provider-id=Default JDBC Database)
+Apr 17, 2014 2:20:13 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=JdbcOne, type=Resource, provider-id=Default JDBC Database)
+Apr 17, 2014 2:20:13 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating TransactionManager(id=Default Transaction Manager)
+Apr 17, 2014 2:20:14 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating SecurityService(id=Default Security Service)
+Apr 17, 2014 2:20:14 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Resource(id=JdbcTwo)
+Apr 17, 2014 2:20:15 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Resource(id=JdbcOne)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.config.ConfigurationFactory configureApplication
+INFO: Configuring enterprise application: C:\dev\svn\tomee\examples\datasource-versioning\AlternateDriverJarTest
+Apr 17, 2014 2:20:16 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.config.AutoConfig createContainer
+INFO: Auto-creating a container for bean org.superbiz.AlternateDriverJarTest: Container(type=MANAGED, id=Default Managed Container)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Container(id=Default Managed Container)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.core.managed.SimplePassivater init
+INFO: Using directory C:\Users\Andy\AppData\Local\Temp for stateful session passivation
+Apr 17, 2014 2:20:16 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.config.AutoConfig createContainer
+INFO: Auto-creating a container for bean JdbcOne: Container(type=SINGLETON, id=Default Singleton Container)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Container(id=Default Singleton Container)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'java:comp/env/JdbcOne' in bean JdbcOne to Resource(id=JdbcOne)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'java:comp/env/JdbcTwo' in bean JdbcTwo to Resource(id=JdbcTwo)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.config.AppInfoBuilder build
+INFO: Enterprise application "C:\dev\svn\tomee\examples\datasource-versioning\AlternateDriverJarTest" loaded.
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.Assembler createApplication
+INFO: Assembling app: C:\dev\svn\tomee\examples\datasource-versioning\AlternateDriverJarTest
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=JdbcOneLocalBean) --> Ejb(deployment-id=JdbcOne)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/AlternateDriverJarTest/app/JdbcOne!org.superbiz.AlternateDriverJarTest$JdbcOne) --> Ejb(deployment-id=JdbcOne)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/AlternateDriverJarTest/app/JdbcOne) --> Ejb(deployment-id=JdbcOne)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=JdbcTwoLocalBean) --> Ejb(deployment-id=JdbcTwo)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/AlternateDriverJarTest/app/JdbcTwo!org.superbiz.AlternateDriverJarTest$JdbcTwo) --> Ejb(deployment-id=JdbcTwo)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/AlternateDriverJarTest/app/JdbcTwo) --> Ejb(deployment-id=JdbcTwo)
+Apr 17, 2014 2:20:16 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
+INFO: Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@5ddd4e70
+Apr 17, 2014 2:20:16 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
+INFO: Succeeded in installing singleton service
+Apr 17, 2014 2:20:17 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+INFO: OpenWebBeans Container is starting...
+Apr 17, 2014 2:20:17 PM org.apache.webbeans.plugins.PluginLoader startUp
+INFO: Adding OpenWebBeansPlugin : [CdiPlugin]
+Apr 17, 2014 2:20:17 PM org.apache.webbeans.config.BeansDeployer validateInjectionPoints
+INFO: All injection points were validated successfully.
+Apr 17, 2014 2:20:17 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+INFO: OpenWebBeans Container has started, it took 223 ms.
+Apr 17, 2014 2:20:17 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Created Ejb(deployment-id=JdbcTwo, ejb-name=JdbcTwo, container=Default Singleton Container)
+Apr 17, 2014 2:20:17 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Created Ejb(deployment-id=JdbcOne, ejb-name=JdbcOne, container=Default Singleton Container)
+Apr 17, 2014 2:20:17 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Started Ejb(deployment-id=JdbcTwo, ejb-name=JdbcTwo, container=Default Singleton Container)
+Apr 17, 2014 2:20:17 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Started Ejb(deployment-id=JdbcOne, ejb-name=JdbcOne, container=Default Singleton Container)
+Apr 17, 2014 2:20:17 PM org.apache.openejb.assembler.classic.Assembler createApplication
+INFO: Deployed Application(path=C:\dev\svn\tomee\examples\datasource-versioning\AlternateDriverJarTest)
+Apr 17, 2014 2:20:20 PM org.apache.openejb.assembler.classic.Assembler destroyApplication
+INFO: Undeploying app: C:\dev\svn\tomee\examples\datasource-versioning\AlternateDriverJarTest
+Apr 17, 2014 2:20:20 PM org.apache.openejb.assembler.classic.Assembler destroyResource
+INFO: Closing DataSource: JdbcTwo
+Apr 17, 2014 2:20:20 PM org.apache.openejb.assembler.classic.Assembler destroyResource
+INFO: Closing DataSource: JdbcOne
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.857 sec
+INFO - A valid shutdown command was received via the shutdown port. Stopping the Server instance.
+INFO - Pausing ProtocolHandler ["http-bio-55243"]
+INFO - Pausing ProtocolHandler ["ajp-bio-55245"]
+INFO - Stopping service Catalina
+INFO - Stopping ProtocolHandler ["http-bio-55243"]
+INFO - Stopping ProtocolHandler ["ajp-bio-55245"]
+INFO - Stopping server services
+INFO - Undeploying app: openejb
+INFO - Closing DataSource: DatabaseOne
+INFO - Closing DataSource: DatabaseTwo
+INFO - Destroying ProtocolHandler ["http-bio-55243"]
+INFO - Destroying ProtocolHandler ["ajp-bio-55245"]
+
+Results :
+
+Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/decorators.adoc b/src/main/jbake/content/examples/decorators.adoc
new file mode 100755
index 0000000..9181e92
--- /dev/null
+++ b/src/main/jbake/content/examples/decorators.adoc
@@ -0,0 +1,436 @@
+= Decorators
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example decorators can be browsed at https://github.com/apache/tomee/tree/master/examples/decorators
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  AccessDeniedException
+
+
+[source,java]
+----
+package org.superbiz.cdi.decorators;
+
+import javax.ejb.ApplicationException;
+
+/**
+ * @version $Revision$ $Date$
+ */
+@ApplicationException
+public class AccessDeniedException extends RuntimeException {
+    public AccessDeniedException(String s) {
+        super(s);
+    }
+}
+----
+
+
+==  Calculator
+
+
+[source,java]
+----
+package org.superbiz.cdi.decorators;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public interface Calculator {
+
+    public int add(int a, int b);
+
+    public int subtract(int a, int b);
+
+    public int multiply(int a, int b);
+
+    public int divide(int a, int b);
+
+    public int remainder(int a, int b);
+}
+----
+
+
+==  CalculatorBean
+
+
+[source,java]
+----
+package org.superbiz.cdi.decorators;
+
+import javax.annotation.Resource;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateless;
+import javax.enterprise.inject.Produces;
+
+@Stateless
+public class CalculatorBean implements Calculator {
+
+    @Produces
+    @Resource
+    private SessionContext sessionContext;
+
+    public int add(int a, int b) {
+        return a + b;
+    }
+
+    public int subtract(int a, int b) {
+        return a - b;
+    }
+
+    public int multiply(int a, int b) {
+        return a * b;
+    }
+
+    public int divide(int a, int b) {
+        return a / b;
+    }
+
+    public int remainder(int a, int b) {
+        return a % b;
+    }
+}
+----
+
+
+==  CalculatorLogging
+
+
+[source,java]
+----
+package org.superbiz.cdi.decorators;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+import java.util.logging.Logger;
+
+@Decorator
+public class CalculatorLogging implements Calculator {
+
+    private Logger logger = Logger.getLogger("Calculator");
+
+    @Inject
+    @Delegate
+    private Calculator calculator;
+
+    @Override
+    public int add(int a, int b) {
+        logger.fine(String.format("add(%s, %s)", a, b));
+        return calculator.add(a, b);
+    }
+
+    @Override
+    public int subtract(int a, int b) {
+        return calculator.subtract(a, b);
+    }
+
+    @Override
+    public int multiply(int a, int b) {
+        logger.finest(String.format("multiply(%s, %s)", a, b));
+        return calculator.multiply(a, b);
+    }
+
+    @Override
+    public int divide(int a, int b) {
+        return calculator.divide(a, b);
+    }
+
+    @Override
+    public int remainder(int a, int b) {
+        logger.info(String.format("remainder(%s, %s)", a, b));
+        return calculator.remainder(a, b);
+    }
+}
+----
+
+
+==  CalculatorSecurity
+
+
+[source,java]
+----
+package org.superbiz.cdi.decorators;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.ejb.SessionContext;
+import javax.inject.Inject;
+
+@Decorator
+public class CalculatorSecurity implements Calculator {
+
+    @Inject
+    @Delegate
+    private Calculator calculator;
+
+    @Inject
+    private SessionContext sessionContext;
+
+    @Override
+    public int add(int a, int b) {
+        return calculator.add(a, b);
+    }
+
+    @Override
+    public int subtract(int a, int b) {
+        // Caller must pass a security check to call subtract
+        if (!sessionContext.isCallerInRole("Manager")) throw new AccessDeniedException(sessionContext.getCallerPrincipal().getName());
+
+        return calculator.subtract(a, b);
+    }
+
+    @Override
+    public int multiply(int a, int b) {
+        return calculator.multiply(a, b);
+    }
+
+    @Override
+    public int divide(int a, int b) {
+        return calculator.divide(a, b);
+    }
+
+    @Override
+    public int remainder(int a, int b) {
+        return calculator.remainder(a, b);
+    }
+}
+----
+
+
+==  beans.xml
+
+
+[source,xml]
+----
+<beans>
+  <!--
+  Explicitly declaring decorators is required by the CDI specification.
+  The order decorators are listed in the xml is the order in which they are invoked.
+  -->
+  <decorators>
+    <class>org.superbiz.cdi.decorators.CalculatorSecurity</class>
+    <class>org.superbiz.cdi.decorators.CalculatorLogging</class>
+  </decorators>
+</beans>
+----
+
+    
+
+==  CalculatorTest
+
+
+[source,java]
+----
+package org.superbiz.cdi.decorators;
+
+import junit.framework.TestCase;
+
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.concurrent.Callable;
+
+public class CalculatorTest extends TestCase {
+
+    @EJB
+    private Calculator calculator;
+
+    @EJB
+    private ManagerBean manager;
+
+    /**
+     * Bootstrap the Embedded EJB Container
+     *
+     * @throws Exception
+     */
+    protected void setUp() throws Exception {
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+    }
+
+    /**
+     * Test Add method
+     */
+    public void testAdd() {
+
+        assertEquals(10, calculator.add(4, 6));
+    }
+
+    /**
+     * Test Subtract method
+     */
+    public void testSubtract() {
+
+        try {
+            calculator.subtract(4, 6);
+
+            fail("AccessDeniedException should have been thrown for unauthenticated access");
+        } catch (AccessDeniedException expected) {
+            // pass
+        }
+
+        final int result = manager.call(new Callable<Integer>() {
+            public Integer call() {
+                return calculator.subtract(4, 6);
+            }
+        });
+
+        assertEquals(-2, result);
+    }
+
+    /**
+     * Test Multiply method
+     */
+    public void testMultiply() {
+
+        assertEquals(24, calculator.multiply(4, 6));
+    }
+
+    /**
+     * Test Divide method
+     */
+    public void testDivide() {
+
+        assertEquals(2, calculator.divide(12, 6));
+    }
+
+    /**
+     * Test Remainder method
+     */
+    public void testRemainder() {
+
+        assertEquals(4, calculator.remainder(46, 6));
+    }
+
+    @Stateless
+    @RunAs("Manager")
+    public static class ManagerBean {
+
+        public <V> V call(Callable<V> callable) {
+            try {
+                return callable.call();
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.cdi.decorators.CalculatorTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/decorators
+INFO - openejb.base = /Users/dblevins/examples/decorators
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/decorators/target/classes
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/decorators/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/decorators/target/classes
+INFO - Beginning load: /Users/dblevins/examples/decorators/target/test-classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/decorators
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean decorators.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean CalculatorBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/decorators" loaded.
+INFO - Assembling app: /Users/dblevins/examples/decorators
+INFO - Jndi(name="java:global/decorators/decorators.Comp!org.apache.openejb.BeanContext$Comp")
+INFO - Jndi(name="java:global/decorators/decorators.Comp")
+INFO - Jndi(name="java:global/decorators/CalculatorBean!org.superbiz.cdi.decorators.Calculator")
+INFO - Jndi(name="java:global/decorators/CalculatorBean")
+INFO - Jndi(name="java:global/decorators/ManagerBean!org.superbiz.cdi.decorators.CalculatorTest$ManagerBean")
+INFO - Jndi(name="java:global/decorators/ManagerBean")
+INFO - Jndi(name="java:global/EjbModule628834558/org.superbiz.cdi.decorators.CalculatorTest!org.superbiz.cdi.decorators.CalculatorTest")
+INFO - Jndi(name="java:global/EjbModule628834558/org.superbiz.cdi.decorators.CalculatorTest")
+INFO - Created Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=decorators.Comp, ejb-name=decorators.Comp, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.cdi.decorators.CalculatorTest, ejb-name=org.superbiz.cdi.decorators.CalculatorTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=decorators.Comp, ejb-name=decorators.Comp, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.cdi.decorators.CalculatorTest, ejb-name=org.superbiz.cdi.decorators.CalculatorTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/decorators)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Oct 29, 2011 11:41:04 AM org.apache.webbeans.decorator.DelegateHandler invoke
+SEVERE: Exception in calling method : [subtract] in decorator class : [org.superbiz.cdi.decorators.CalculatorSecurity]. Look in the log for target checked exception.
+org.superbiz.cdi.decorators.AccessDeniedException: guest
+	at org.superbiz.cdi.decorators.CalculatorSecurity.subtract(CalculatorSecurity.java:43)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.apache.webbeans.decorator.DelegateHandler.invoke(DelegateHandler.java:98)
+	at org.apache.openejb.cdi.CdiInterceptor.invoke(CdiInterceptor.java:127)
+	at org.apache.openejb.cdi.CdiInterceptor.access$000(CdiInterceptor.java:45)
+	at org.apache.openejb.cdi.CdiInterceptor$1.call(CdiInterceptor.java:66)
+	at org.apache.openejb.cdi.CdiInterceptor.aroundInvoke(CdiInterceptor.java:72)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
+	at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
+	at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:130)
+	at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:226)
+	at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:178)
+	at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:255)
+	at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:235)
+	at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92)
+	at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:284)
+	at $Proxy44.subtract(Unknown Source)
+	at org.superbiz.cdi.decorators.CalculatorTest.testSubtract(CalculatorTest.java:59)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at junit.framework.TestCase.runTest(TestCase.java:168)
+	at junit.framework.TestCase.runBare(TestCase.java:134)
+	at junit.framework.TestResult$1.protect(TestResult.java:110)
+	at junit.framework.TestResult.runProtected(TestResult.java:128)
+	at junit.framework.TestResult.run(TestResult.java:113)
+	at junit.framework.TestCase.run(TestCase.java:124)
+	at junit.framework.TestSuite.runTest(TestSuite.java:232)
+	at junit.framework.TestSuite.run(TestSuite.java:227)
+	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
+	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
+	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
+	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
+	at $Proxy0.invoke(Unknown Source)
+	at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
+	at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.338 sec
+
+Results :
+
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/deltaspike-configproperty.adoc b/src/main/jbake/content/examples/deltaspike-configproperty.adoc
new file mode 100755
index 0000000..eead15e
--- /dev/null
+++ b/src/main/jbake/content/examples/deltaspike-configproperty.adoc
@@ -0,0 +1,9 @@
+= deltaspike-configproperty
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example deltaspike-configproperty can be browsed at https://github.com/apache/tomee/tree/master/examples/deltaspike-configproperty
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/deltaspike-exception-handling.adoc b/src/main/jbake/content/examples/deltaspike-exception-handling.adoc
new file mode 100755
index 0000000..be450bf
--- /dev/null
+++ b/src/main/jbake/content/examples/deltaspike-exception-handling.adoc
@@ -0,0 +1,9 @@
+= deltaspike-exception-handling
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example deltaspike-exception-handling can be browsed at https://github.com/apache/tomee/tree/master/examples/deltaspike-exception-handling
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/deltaspike-fullstack.adoc b/src/main/jbake/content/examples/deltaspike-fullstack.adoc
new file mode 100755
index 0000000..ebcbca6
--- /dev/null
+++ b/src/main/jbake/content/examples/deltaspike-fullstack.adoc
@@ -0,0 +1,75 @@
+= Apache DeltaSpike Demo
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example deltaspike-fullstack can be browsed at https://github.com/apache/tomee/tree/master/examples/deltaspike-fullstack
+
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+<h2>Steps to run the example</h2>
+
+Build and start the demo:
+
+    mvn clean package tomee:run
+
+Open:
+
+    http://localhost:8080/
+
+This example shows how to improve JSF2/CDI/BV/JPA applications with features provided by Apache DeltaSpike and MyFaces ExtVal.
+
+<h2>Intro of Apache DeltaSpike and MyFaces ExtVal</h2>
+
+The Apache DeltaSpike project hosts portable extensions for Contexts and Dependency Injection (CDI - JSR 299). DeltaSpike is a toolbox for your CDI application. Like CDI itself DeltaSpike is focused on type-safety. It is a modularized and extensible framework. So it's easy to choose the needed parts to facilitate the daily work in your project.
+
+MyFaces Extensions Validator (aka ExtVal) is a JSF centric validation framework which is compatible with JSF 1.x and JSF 2.x.
+This example shows how it improves the default integration of Bean-Validation (JSR-303) with JSF2 as well as meta-data based cross-field validation.
+
+
+<h2>Illustrated Features</h2>
+
+<h3>Apache DeltaSpike</h3>
+
+<ul>
+
+[source,xml]
+----
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/config/Pages.java" target="_blank">Type-safe view-config</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/InfoPage.java" target="_blank">Type-safe (custom) view-meta-data</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/MenuBean.java" target="_blank">Type-safe navigation</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/CustomProjectStage.java" target="_blank">Type-safe custom project-stage</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/UserHolder.java" target="_blank">@WindowScoped</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/MenuBean.java" target="_blank">Controlling DeltaSpike grouped-conversations with GroupedConversationManager</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/FeedbackPage.java" target="_blank">@GroupedConversationScoped</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/FeedbackPage.java" target="_blank">Manual conversation handling</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/security/LoginAccessDecisionVoter.java" target="_blank">Secured pages (AccessDecisionVoter)</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/repository/Repository.java" target="_blank">@Transactional</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/view/RegistrationPage.java" target="_blank">I18n (type-safe messages)</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/domain/validation/UniqueUserNameValidator.java" target="_blank">Dependency-Injection for JSR303 (BV) constraint-validators</a></li>
+<li><a href="./src/main/java/org/superbiz/deltaspike/DebugPhaseListener.java" target="_blank">Dependency-Injection for JSF phase-listeners</a></li>
+</ul>
+
+<h3>Apache MyFaces ExtVal</h3>
+
+<ul>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">Cross-Field validation (@Equals)</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">Type-safe group-validation (@BeanValidation) for JSF action-methods</a></li>
+</ul>
+
diff --git a/src/main/jbake/content/examples/deltaspike-i18n.adoc b/src/main/jbake/content/examples/deltaspike-i18n.adoc
new file mode 100755
index 0000000..18c6dbf
--- /dev/null
+++ b/src/main/jbake/content/examples/deltaspike-i18n.adoc
@@ -0,0 +1,9 @@
+= deltaspike-i18n
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example deltaspike-i18n can be browsed at https://github.com/apache/tomee/tree/master/examples/deltaspike-i18n
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/dynamic-dao-implementation.adoc b/src/main/jbake/content/examples/dynamic-dao-implementation.adoc
new file mode 100755
index 0000000..40b7a96
--- /dev/null
+++ b/src/main/jbake/content/examples/dynamic-dao-implementation.adoc
@@ -0,0 +1,384 @@
+= Dynamic DAO Implementation
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example dynamic-dao-implementation can be browsed at https://github.com/apache/tomee/tree/master/examples/dynamic-dao-implementation
+
+
+Many aspects of Data Access Objects (DAOs) are very repetitive and boiler plate.  As a fun and experimental feature, TomEE supports dynamically implementing an interface
+that is seen to have standard DAO-style methods.
+
+The interface has to be annotated with @PersistenceContext to define which EntityManager to use.
+
+Methods should respect these conventions:
+
+  * void save(Foo foo): persist foo
+  * Foo update(Foo foo): merge foo
+  * void delete(Foo foo): remove foo, if foo is detached it tries to attach it
+  * Collection<Foo>|Foo namedQuery(String name[, Map<String, ?> params, int first, int max]): run the named query called name, params contains bindings, first and max are used for magination. Last three parameters are optionnals
+  * Collection<Foo>|Foo nativeQuery(String name[, Map<String, ?> params, int first, int max]): run the native query called name, params contains bindings, first and max are used for magination. Last three parameters are optionnals
+  * Collection<Foo>|Foo query(String value [, Map<String, ?> params, int first, int max]): run the query put as first parameter, params contains bindings, first and max are used for magination. Last three parameters are optionnals
+  * Collection<Foo> findAll([int first, int max]): find all Foo, parameters are used for pagination
+  * Collection<Foo> findByBar1AndBar2AndBar3(<bar 1 type> bar1, <bar 2 type> bar2, <bar3 type> bar3 [, int first, int max]): find all Foo with specified field values for bar1, bar2, bar3.
+
+Dynamic finder can have as much as you want field constraints. For String like is used and for other type equals is used.
+
+=  Example
+
+==  User
+
+
+[source,java]
+----
+package org.superbiz.dynamic;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+
+@Entity
+@NamedQueries({
+        @NamedQuery(name = "dynamic-ejb-impl-test.query", query = "SELECT u FROM User AS u WHERE u.name LIKE :name"),
+        @NamedQuery(name = "dynamic-ejb-impl-test.all", query = "SELECT u FROM User AS u")
+})
+public class User {
+    @Id
+    @GeneratedValue
+    private long id;
+    private String name;
+    private int age;
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getAge() {
+        return age;
+    }
+
+    public void setAge(int age) {
+        this.age = age;
+    }
+}
+----
+
+
+==  UserDao
+
+
+[source,java]
+----
+package org.superbiz.dynamic;
+
+
+import javax.ejb.Stateless;
+import javax.persistence.PersistenceContext;
+import java.util.Collection;
+import java.util.Map;
+
+@Stateless
+@PersistenceContext(name = "dynamic")
+public interface UserDao {
+    User findById(long id);
+
+    Collection<User> findByName(String name);
+
+    Collection<User> findByNameAndAge(String name, int age);
+
+    Collection<User> findAll();
+
+    Collection<User> findAll(int first, int max);
+
+    Collection<User> namedQuery(String name, Map<String, ?> params, int first, int max);
+
+    Collection<User> namedQuery(String name, int first, int max, Map<String, ?> params);
+
+    Collection<User> namedQuery(String name, Map<String, ?> params);
+
+    Collection<User> namedQuery(String name);
+
+    Collection<User> query(String value, Map<String, ?> params);
+
+    void save(User u);
+
+    void delete(User u);
+
+    User update(User u);
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence version="2.0"
+             xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="
+      http://java.sun.com/xml/ns/persistence
+      http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+  <persistence-unit name="dynamic" transaction-type="JTA">
+    <jta-data-source>jdbc/dynamicDB</jta-data-source>
+    <class>org.superbiz.dynamic.User</class>
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+    
+
+==  DynamicUserDaoTest
+
+
+[source,java]
+----
+package org.superbiz.dynamic;
+
+import junit.framework.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.EJBException;
+import javax.ejb.Stateless;
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+
+public class DynamicUserDaoTest {
+    private static UserDao dao;
+    private static Util util;
+
+    @BeforeClass
+    public static void init() throws Exception {
+        final Properties p = new Properties();
+        p.put("jdbc/dynamicDB", "new://Resource?type=DataSource");
+        p.put("jdbc/dynamicDB.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("jdbc/dynamicDB.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+        p.put("jdbc/dynamicDB.UserName", "sa");
+        p.put("jdbc/dynamicDB.Password", "");
+
+        final Context context = EJBContainer.createEJBContainer(p).getContext();
+        dao = (UserDao) context.lookup("java:global/dynamic-dao-implementation/UserDao");
+        util = (Util) context.lookup("java:global/dynamic-dao-implementation/Util");
+
+        util.init(); // init database
+    }
+
+    @Test
+    public void simple() {
+        User user = dao.findById(1);
+        assertNotNull(user);
+        assertEquals(1, user.getId());
+    }
+
+    @Test
+    public void findAll() {
+        Collection<User> users = dao.findAll();
+        assertEquals(10, users.size());
+    }
+
+    @Test
+    public void pagination() {
+        Collection<User> users = dao.findAll(0, 5);
+        assertEquals(5, users.size());
+
+        users = dao.findAll(6, 1);
+        assertEquals(1, users.size());
+        assertEquals(7, users.iterator().next().getId());
+    }
+
+    @Test
+    public void persist() {
+        User u = new User();
+        dao.save(u);
+        assertNotNull(u.getId());
+        util.remove(u);
+    }
+
+    @Test
+    public void remove() {
+        User u = new User();
+        dao.save(u);
+        assertNotNull(u.getId());
+        dao.delete(u);
+        try {
+            dao.findById(u.getId());
+            Assert.fail();
+        } catch (EJBException ee) {
+            assertTrue(ee.getCause() instanceof NoResultException);
+        }
+    }
+
+    @Test
+    public void merge() {
+        User u = new User();
+        u.setAge(1);
+        dao.save(u);
+        assertEquals(1, u.getAge());
+        assertNotNull(u.getId());
+
+        u.setAge(2);
+        dao.update(u);
+        assertEquals(2, u.getAge());
+
+        dao.delete(u);
+    }
+
+    @Test
+    public void oneCriteria() {
+        Collection<User> users = dao.findByName("foo");
+        assertEquals(4, users.size());
+        for (User user : users) {
+            assertEquals("foo", user.getName());
+        }
+    }
+
+    @Test
+    public void twoCriteria() {
+        Collection<User> users = dao.findByNameAndAge("bar-1", 1);
+        assertEquals(1, users.size());
+
+        User user = users.iterator().next();
+        assertEquals("bar-1", user.getName());
+        assertEquals(1, user.getAge());
+    }
+
+    @Test
+    public void query() {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("name", "foo");
+
+        Collection<User> users = dao.namedQuery("dynamic-ejb-impl-test.query", params, 0, 100);
+        assertEquals(4, users.size());
+
+        users = dao.namedQuery("dynamic-ejb-impl-test.query", params);
+        assertEquals(4, users.size());
+
+        users = dao.namedQuery("dynamic-ejb-impl-test.query", params, 0, 2);
+        assertEquals(2, users.size());
+
+        users = dao.namedQuery("dynamic-ejb-impl-test.query", 0, 2, params);
+        assertEquals(2, users.size());
+
+        users = dao.namedQuery("dynamic-ejb-impl-test.all");
+        assertEquals(10, users.size());
+
+        params.remove("name");
+        params.put("age", 1);
+        users = dao.query("SELECT u FROM User AS u WHERE u.age = :age", params);
+        assertEquals(3, users.size());
+    }
+
+    @Stateless
+    public static class Util {
+        @PersistenceContext
+        private EntityManager em;
+
+        public void remove(User o) {
+            em.remove(em.find(User.class, o.getId()));
+        }
+
+        public void init() {
+            for (int i = 0; i < 10; i++) {
+                User u = new User();
+                u.setAge(i % 4);
+                if (i % 3 == 0) {
+                    u.setName("foo");
+                } else {
+                    u.setName("bar-" + i);
+                }
+                em.persist(u);
+            }
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.dynamic.DynamicUserDaoTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/dynamic-dao-implementation
+INFO - openejb.base = /Users/dblevins/examples/dynamic-dao-implementation
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=jdbc/dynamicDB, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-dao-implementation/target/classes
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-dao-implementation/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/dynamic-dao-implementation/target/classes
+INFO - Beginning load: /Users/dblevins/examples/dynamic-dao-implementation/target/test-classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-dao-implementation
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean UserDao: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.dynamic.DynamicUserDaoTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=dynamic)
+INFO - Auto-creating a Resource with id 'jdbc/dynamicDBNonJta' of type 'DataSource for 'dynamic'.
+INFO - Configuring Service(id=jdbc/dynamicDBNonJta, type=Resource, provider-id=jdbc/dynamicDB)
+INFO - Adjusting PersistenceUnit dynamic <non-jta-data-source> to Resource ID 'jdbc/dynamicDBNonJta' from 'null'
+INFO - Enterprise application "/Users/dblevins/examples/dynamic-dao-implementation" loaded.
+INFO - Assembling app: /Users/dblevins/examples/dynamic-dao-implementation
+INFO - PersistenceUnit(name=dynamic, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 417ms
+INFO - Jndi(name="java:global/dynamic-dao-implementation/UserDao!org.superbiz.dynamic.UserDao")
+INFO - Jndi(name="java:global/dynamic-dao-implementation/UserDao")
+INFO - Jndi(name="java:global/dynamic-dao-implementation/Util!org.superbiz.dynamic.DynamicUserDaoTest$Util")
+INFO - Jndi(name="java:global/dynamic-dao-implementation/Util")
+INFO - Jndi(name="java:global/EjbModule346613126/org.superbiz.dynamic.DynamicUserDaoTest!org.superbiz.dynamic.DynamicUserDaoTest")
+INFO - Jndi(name="java:global/EjbModule346613126/org.superbiz.dynamic.DynamicUserDaoTest")
+INFO - Created Ejb(deployment-id=UserDao, ejb-name=UserDao, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=Util, ejb-name=Util, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.dynamic.DynamicUserDaoTest, ejb-name=org.superbiz.dynamic.DynamicUserDaoTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=UserDao, ejb-name=UserDao, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=Util, ejb-name=Util, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.dynamic.DynamicUserDaoTest, ejb-name=org.superbiz.dynamic.DynamicUserDaoTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-dao-implementation)
+WARN - Meta class "org.superbiz.dynamic.User_" for entity class org.superbiz.dynamic.User can not be registered with following exception "java.security.PrivilegedActionException: java.lang.ClassNotFoundException: org.superbiz.dynamic.User_"
+WARN - Query "SELECT u FROM User AS u WHERE u.name LIKE :name" is removed from cache  excluded permanently. Query "SELECT u FROM User AS u WHERE u.name LIKE :name" is not cached because it uses pagination..
+Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.471 sec
+
+Results :
+
+Tests run: 9, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/dynamic-datasource-routing.adoc b/src/main/jbake/content/examples/dynamic-datasource-routing.adoc
new file mode 100755
index 0000000..8b7a76e
--- /dev/null
+++ b/src/main/jbake/content/examples/dynamic-datasource-routing.adoc
@@ -0,0 +1,473 @@
+= Dynamic Datasource Routing
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example dynamic-datasource-routing can be browsed at https://github.com/apache/tomee/tree/master/examples/dynamic-datasource-routing
+
+
+The TomEE dynamic datasource api aims to allow to use multiple data sources as one from an application point of view.
+
+It can be useful for technical reasons (load balancing for example) or more generally
+functionnal reasons (filtering, aggregation, enriching...). However please note you can choose
+only one datasource by transaction. It means the goal of this feature is not to switch more than
+once of datasource in a transaction. The following code will not work:
+
+
+[source,java]
+----
+@Stateless
+public class MyEJB {
+    @Resource private MyRouter router;
+    @PersistenceContext private EntityManager em;
+
+    public void workWithDataSources() {
+        router.setDataSource("ds1");
+        em.persist(new MyEntity());
+
+        router.setDataSource("ds2"); // same transaction -> this invocation doesn't work
+        em.persist(new MyEntity());
+    }
+}
+----
+
+
+In this example the implementation simply use a datasource from its name and needs to be set before using any JPA
+operation in the transaction (to keep the logic simple in the example).
+
+=  The implementation of the Router
+
+Our router has two configuration parameters:
+* a list of jndi names representing datasources to use
+* a default datasource to use
+
+==  Router implementation
+
+The interface Router (`org.apache.openejb.resource.jdbc.Router`) has only one method to implement, `public DataSource getDataSource()`
+
+Our `DeterminedRouter` implementation uses a ThreadLocal to manage the currently used datasource. Keep in mind JPA used more than once the getDatasource() method
+for one operation. To change the datasource in one transaction is dangerous and should be avoid.
+
+
+[source,java]
+----
+package org.superbiz.dynamicdatasourcerouting;
+
+import org.apache.openejb.resource.jdbc.AbstractRouter;
+
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class DeterminedRouter extends AbstractRouter {
+    private String dataSourceNames;
+    private String defaultDataSourceName;
+    private Map<String, DataSource> dataSources = null;
+    private ThreadLocal<DataSource> currentDataSource = new ThreadLocal<DataSource>();
+
+    /**
+     * @param datasourceList datasource resource name, separator is a space
+     */
+    public void setDataSourceNames(String datasourceList) {
+        dataSourceNames = datasourceList;
+    }
+
+    /**
+     * lookup datasource in openejb resources
+     */
+    private void init() {
+        dataSources = new ConcurrentHashMap<String, DataSource>();
+        for (String ds : dataSourceNames.split(" ")) {
+            try {
+                Object o = getOpenEJBResource(ds);
+                if (o instanceof DataSource) {
+                    dataSources.put(ds, DataSource.class.cast(o));
+                }
+            } catch (NamingException e) {
+                // ignored
+            }
+        }
+    }
+
+    /**
+     * @return the user selected data source if it is set
+     *         or the default one
+     *  @throws IllegalArgumentException if the data source is not found
+     */
+    @Override
+    public DataSource getDataSource() {
+        // lazy init of routed datasources
+        if (dataSources == null) {
+            init();
+        }
+
+        // if no datasource is selected use the default one
+        if (currentDataSource.get() == null) {
+            if (dataSources.containsKey(defaultDataSourceName)) {
+                return dataSources.get(defaultDataSourceName);
+
+            } else {
+                throw new IllegalArgumentException("you have to specify at least one datasource");
+            }
+        }
+
+        // the developper set the datasource to use
+        return currentDataSource.get();
+    }
+
+    /**
+     *
+     * @param datasourceName data source name
+     */
+    public void setDataSource(String datasourceName) {
+        if (dataSources == null) {
+            init();
+        }
+        if (!dataSources.containsKey(datasourceName)) {
+            throw new IllegalArgumentException("data source called " + datasourceName + " can't be found.");
+        }
+        DataSource ds = dataSources.get(datasourceName);
+        currentDataSource.set(ds);
+    }
+
+    /**
+     * reset the data source
+     */
+    public void clear() {
+        currentDataSource.remove();
+    }
+
+    public void setDefaultDataSourceName(String name) {
+        this.defaultDataSourceName = name;
+    }
+}
+----
+
+
+==  Declaring the implementation
+
+To be able to use your router as a resource you need to provide a service configuration. It is done in a file
+you can find in META-INF/org.router/ and called service-jar.xml
+(for your implementation you can of course change the package name).
+
+It contains the following code:
+
+
+[source,xml]
+----
+<ServiceJar>
+  <ServiceProvider id="DeterminedRouter" <!-- the name you want to use -->
+      service="Resource"
+      type="org.apache.openejb.resource.jdbc.Router"
+      class-name="org.superbiz.dynamicdatasourcerouting.DeterminedRouter"> <!-- implementation class -->
+
+    # the parameters
+
+    DataSourceNames
+    DefaultDataSourceName
+  </ServiceProvider>
+</ServiceJar>
+----
+
+
+
+=  Using the Router
+
+Here we have a `RoutedPersister` stateless bean which uses our `DeterminedRouter`
+
+
+[source,java]
+----
+package org.superbiz.dynamicdatasourcerouting;
+
+import javax.annotation.Resource;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+@Stateless
+public class RoutedPersister {
+    @PersistenceContext(unitName = "router")
+    private EntityManager em;
+
+    @Resource(name = "My Router", type = DeterminedRouter.class)
+    private DeterminedRouter router;
+
+    public void persist(int id, String name, String ds) {
+        router.setDataSource(ds);
+        em.persist(new Person(id, name));
+    }
+}
+----
+
+
+=  The test
+
+In test mode and using property style configuration the foolowing configuration is used:
+
+
+[source,java]
+----
+public class DynamicDataSourceTest {
+    @Test
+    public void route() throws Exception {
+        String[] databases = new String[]{"database1", "database2", "database3"};
+
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
+
+        // resources
+        // datasources
+        for (int i = 1; i <= databases.length; i++) {
+            String dbName = databases[i - 1];
+            properties.setProperty(dbName, "new://Resource?type=DataSource");
+            dbName += ".";
+            properties.setProperty(dbName + "JdbcDriver", "org.hsqldb.jdbcDriver");
+            properties.setProperty(dbName + "JdbcUrl", "jdbc:hsqldb:mem:db" + i);
+            properties.setProperty(dbName + "UserName", "sa");
+            properties.setProperty(dbName + "Password", "");
+            properties.setProperty(dbName + "JtaManaged", "true");
+        }
+
+        // router
+        properties.setProperty("My Router", "new://Resource?provider=org.router:DeterminedRouter&type=" + DeterminedRouter.class.getName());
+        properties.setProperty("My Router.DatasourceNames", "database1 database2 database3");
+        properties.setProperty("My Router.DefaultDataSourceName", "database1");
+
+        // routed datasource
+        properties.setProperty("Routed Datasource", "new://Resource?provider=RoutedDataSource&type=" + Router.class.getName());
+        properties.setProperty("Routed Datasource.Router", "My Router");
+
+        Context ctx = EJBContainer.createEJBContainer(properties).getContext();
+        RoutedPersister ejb = (RoutedPersister) ctx.lookup("java:global/dynamic-datasource-routing/RoutedPersister");
+        for (int i = 0; i < 18; i++) {
+            // persisting a person on database db -> kind of manual round robin
+            String name = "record " + i;
+            String db = databases[i % 3];
+            ejb.persist(i, name, db);
+        }
+
+        // assert database records number using jdbc
+        for (int i = 1; i <= databases.length; i++) {
+            Connection connection = DriverManager.getConnection("jdbc:hsqldb:mem:db" + i, "sa", "");
+            Statement st = connection.createStatement();
+            ResultSet rs = st.executeQuery("select count(*) from PERSON");
+            rs.next();
+            assertEquals(6, rs.getInt(1));
+            st.close();
+            connection.close();
+        }
+
+        ctx.close();
+    }
+}
+----
+
+
+=  Configuration via openejb.xml
+
+The testcase above uses properties for configuration.  The identical way to do it via the `conf/openejb.xml` is as follows:
+
+
+[source,xml]
+----
+<!-- Router and datasource -->
+<Resource id="My Router" type="org.apache.openejb.router.test.DynamicDataSourceTest$DeterminedRouter" provider="org.routertest:DeterminedRouter">
+    DatasourceNames = database1 database2 database3
+    DefaultDataSourceName = database1
+</Resource>
+----
+
+
+[source,xml]
+----
+<Resource id="Routed Datasource" type="org.apache.openejb.resource.jdbc.Router" provider="RoutedDataSource">
+    Router = My Router
+</Resource>
+----
+
+
+
+[source,xml]
+----
+<!-- real datasources -->
+<Resource id="database1" type="DataSource">
+    JdbcDriver = org.hsqldb.jdbcDriver
+    JdbcUrl = jdbc:hsqldb:mem:db1
+    UserName = sa
+    Password
+    JtaManaged = true
+</Resource>
+----
+
+
+[source,xml]
+----
+<Resource id="database2" type="DataSource">
+    JdbcDriver = org.hsqldb.jdbcDriver
+    JdbcUrl = jdbc:hsqldb:mem:db2
+    UserName = sa
+    Password
+    JtaManaged = true
+</Resource>
+----
+
+
+[source,xml]
+----
+<Resource id="database3" type="DataSource">
+    JdbcDriver = org.hsqldb.jdbcDriver
+    JdbcUrl = jdbc:hsqldb:mem:db3
+    UserName = sa
+    Password
+    JtaManaged = true
+</Resource>
+----
+
+
+
+
+
+==  Some hack for OpenJPA
+
+Using more than one datasource behind one EntityManager means the databases are already created. If it is not the case,
+the JPA provider has to create the datasource at boot time.
+
+Hibernate do it so if you declare your databases it will work. However with OpenJPA
+(the default JPA provider for OpenEJB), the creation is lazy and it happens only once so when you'll switch of database
+it will no more work.
+
+Of course OpenEJB provides @Singleton and @Startup features of Java EE 6 and we can do a bean just making a simple find,
+even on none existing entities, just to force the database creation:
+
+
+[source,java]
+----
+@Startup
+@Singleton
+public class BoostrapUtility {
+    // inject all real databases
+
+    @PersistenceContext(unitName = "db1")
+    private EntityManager em1;
+
+    @PersistenceContext(unitName = "db2")
+    private EntityManager em2;
+
+    @PersistenceContext(unitName = "db3")
+    private EntityManager em3;
+
+    // force database creation
+
+    @PostConstruct
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public void initDatabase() {
+        em1.find(Person.class, 0);
+        em2.find(Person.class, 0);
+        em3.find(Person.class, 0);
+    }
+}
+----
+
+
+==  Using the routed datasource
+
+Now you configured the way you want to route your JPA operation, you registered the resources and you initialized
+your databases you can use it and see how it is simple:
+
+
+[source,java]
+----
+@Stateless
+public class RoutedPersister {
+    // injection of the "proxied" datasource
+    @PersistenceContext(unitName = "router")
+    private EntityManager em;
+
+    // injection of the router you need it to configured the database
+    @Resource(name = "My Router", type = DeterminedRouter.class)
+    private DeterminedRouter router;
+
+    public void persist(int id, String name, String ds) {
+        router.setDataSource(ds); // configuring the database for the current transaction
+        em.persist(new Person(id, name)); // will use ds database automatically
+    }
+}
+----
+
+
+=  Running
+
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/dynamic-datasource-routing
+INFO - openejb.base = /Users/dblevins/examples/dynamic-datasource-routing
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=My Router, type=Resource, provider-id=DeterminedRouter)
+INFO - Configuring Service(id=database3, type=Resource, provider-id=Default JDBC Database)
+INFO - Configuring Service(id=database2, type=Resource, provider-id=Default JDBC Database)
+INFO - Configuring Service(id=Routed Datasource, type=Resource, provider-id=RoutedDataSource)
+INFO - Configuring Service(id=database1, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-datasource-routing/target/classes
+INFO - Beginning load: /Users/dblevins/examples/dynamic-datasource-routing/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-datasource-routing
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean BoostrapUtility: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean RoutedPersister: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Auto-linking resource-ref 'java:comp/env/My Router' in bean RoutedPersister to Resource(id=My Router)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=router)
+INFO - Configuring PersistenceUnit(name=db1)
+INFO - Auto-creating a Resource with id 'database1NonJta' of type 'DataSource for 'db1'.
+INFO - Configuring Service(id=database1NonJta, type=Resource, provider-id=database1)
+INFO - Adjusting PersistenceUnit db1 <non-jta-data-source> to Resource ID 'database1NonJta' from 'null'
+INFO - Configuring PersistenceUnit(name=db2)
+INFO - Auto-creating a Resource with id 'database2NonJta' of type 'DataSource for 'db2'.
+INFO - Configuring Service(id=database2NonJta, type=Resource, provider-id=database2)
+INFO - Adjusting PersistenceUnit db2 <non-jta-data-source> to Resource ID 'database2NonJta' from 'null'
+INFO - Configuring PersistenceUnit(name=db3)
+INFO - Auto-creating a Resource with id 'database3NonJta' of type 'DataSource for 'db3'.
+INFO - Configuring Service(id=database3NonJta, type=Resource, provider-id=database3)
+INFO - Adjusting PersistenceUnit db3 <non-jta-data-source> to Resource ID 'database3NonJta' from 'null'
+INFO - Enterprise application "/Users/dblevins/examples/dynamic-datasource-routing" loaded.
+INFO - Assembling app: /Users/dblevins/examples/dynamic-datasource-routing
+INFO - PersistenceUnit(name=router, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 504ms
+INFO - PersistenceUnit(name=db1, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 11ms
+INFO - PersistenceUnit(name=db2, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 7ms
+INFO - PersistenceUnit(name=db3, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 6ms
+INFO - Jndi(name="java:global/dynamic-datasource-routing/BoostrapUtility!org.superbiz.dynamicdatasourcerouting.BoostrapUtility")
+INFO - Jndi(name="java:global/dynamic-datasource-routing/BoostrapUtility")
+INFO - Jndi(name="java:global/dynamic-datasource-routing/RoutedPersister!org.superbiz.dynamicdatasourcerouting.RoutedPersister")
+INFO - Jndi(name="java:global/dynamic-datasource-routing/RoutedPersister")
+INFO - Jndi(name="java:global/EjbModule1519652738/org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest!org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest")
+INFO - Jndi(name="java:global/EjbModule1519652738/org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest")
+INFO - Created Ejb(deployment-id=RoutedPersister, ejb-name=RoutedPersister, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, ejb-name=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=BoostrapUtility, ejb-name=BoostrapUtility, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=RoutedPersister, ejb-name=RoutedPersister, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, ejb-name=org.superbiz.dynamicdatasourcerouting.DynamicDataSourceTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=BoostrapUtility, ejb-name=BoostrapUtility, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-datasource-routing)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.504 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
diff --git a/src/main/jbake/content/examples/dynamic-implementation.adoc b/src/main/jbake/content/examples/dynamic-implementation.adoc
new file mode 100755
index 0000000..0ffff9c
--- /dev/null
+++ b/src/main/jbake/content/examples/dynamic-implementation.adoc
@@ -0,0 +1,155 @@
+= Dynamic Implementation
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example dynamic-implementation can be browsed at https://github.com/apache/tomee/tree/master/examples/dynamic-implementation
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  SocialBean
+
+
+[source,java]
+----
+package org.superbiz.dynamic;
+
+import org.apache.openejb.api.Proxy;
+
+import javax.ejb.Singleton;
+import javax.interceptor.Interceptors;
+
+@Singleton
+@Proxy(SocialHandler.class)
+@Interceptors(SocialInterceptor.class)
+public interface SocialBean {
+    public String facebookStatus();
+
+    public String twitterStatus();
+
+    public String status();
+}
+----
+
+
+==  SocialHandler
+
+
+[source,java]
+----
+package org.superbiz.dynamic;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+public class SocialHandler implements InvocationHandler {
+    @Override
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        String mtd = method.getName();
+        if (mtd.toLowerCase().contains("facebook")) {
+            return "You think you have a life!";
+        } else if (mtd.toLowerCase().contains("twitter")) {
+            return "Wow, you eat pop corn!";
+        }
+        return "Hey, you have no virtual friend!";
+    }
+}
+----
+
+
+==  SocialInterceptor
+
+
+[source,java]
+----
+packagenull
+}
+----
+
+
+==  SocialTest
+
+
+[source,java]
+----
+package org.superbiz.dynamic;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+
+import static junit.framework.Assert.assertTrue;
+
+public class SocialTest {
+    private static SocialBean social;
+    private static EJBContainer container;
+
+    @BeforeClass
+    public static void init() throws Exception {
+        container = EJBContainer.createEJBContainer();
+        social = (SocialBean) container.getContext().lookup("java:global/dynamic-implementation/SocialBean");
+    }
+
+    @AfterClass
+    public static void close() {
+        container.close();
+    }
+
+    @Test
+    public void simple() {
+        assertTrue(social.facebookStatus().contains("think"));
+        assertTrue(social.twitterStatus().contains("eat"));
+        assertTrue(social.status().contains("virtual"));
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.dynamic.SocialTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/dynamic-implementation
+INFO - openejb.base = /Users/dblevins/examples/dynamic-implementation
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/dynamic-implementation/target/classes
+INFO - Beginning load: /Users/dblevins/examples/dynamic-implementation/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/dynamic-implementation
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean SocialBean: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.dynamic.SocialTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/dynamic-implementation" loaded.
+INFO - Assembling app: /Users/dblevins/examples/dynamic-implementation
+INFO - Jndi(name="java:global/dynamic-implementation/SocialBean!org.superbiz.dynamic.SocialBean")
+INFO - Jndi(name="java:global/dynamic-implementation/SocialBean")
+INFO - Jndi(name="java:global/EjbModule236706648/org.superbiz.dynamic.SocialTest!org.superbiz.dynamic.SocialTest")
+INFO - Jndi(name="java:global/EjbModule236706648/org.superbiz.dynamic.SocialTest")
+INFO - Created Ejb(deployment-id=org.superbiz.dynamic.SocialTest, ejb-name=org.superbiz.dynamic.SocialTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=SocialBean, ejb-name=SocialBean, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.dynamic.SocialTest, ejb-name=org.superbiz.dynamic.SocialTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=SocialBean, ejb-name=SocialBean, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/dynamic-implementation)
+INFO - Undeploying app: /Users/dblevins/examples/dynamic-implementation
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.107 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/dynamic-proxy-to-access-mbean.adoc b/src/main/jbake/content/examples/dynamic-proxy-to-access-mbean.adoc
new file mode 100755
index 0000000..ae03587
--- /dev/null
+++ b/src/main/jbake/content/examples/dynamic-proxy-to-access-mbean.adoc
@@ -0,0 +1,460 @@
+= dynamic-proxy-to-access-mbean
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example dynamic-proxy-to-access-mbean can be browsed at https://github.com/apache/tomee/tree/master/examples/dynamic-proxy-to-access-mbean
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Example
+
+Acessing MBean is something simple through the JMX API but it is often technical and not very interesting.
+
+This example simplify this work simply doing it generically in a proxy.
+
+So from an user side you simple declare an interface to access your MBeans.
+
+Note: the example implementation uses a local MBeanServer but enhancing the example API
+it is easy to imagine a remote connection with user/password if needed.
+
+==  ObjectName API (annotation)
+
+Simply an annotation to get the object
+
+
+[source,java]
+----
+package org.superbiz.dynamic.mbean;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Target({TYPE, METHOD})
+@Retention(RUNTIME)
+public @interface ObjectName {
+    String value();
+
+    // for remote usage only
+    String url() default "";
+    String user() default "";
+    String password() default "";
+}
+----
+
+
+==  DynamicMBeanHandler (thr proxy implementation)
+
+
+[source,java]
+----
+package org.superbiz.dynamic.mbean;
+
+import javax.annotation.PreDestroy;
+import javax.management.Attribute;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Need a @PreDestroy method to disconnect the remote host when used in remote mode.
+ */
+public class DynamicMBeanHandler implements InvocationHandler {
+    private final Map<Method, ConnectionInfo> infos = new ConcurrentHashMap<Method, ConnectionInfo>();
+
+    @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        final String methodName = method.getName();
+        if (method.getDeclaringClass().equals(Object.class) && "toString".equals(methodName)) {
+            return getClass().getSimpleName() + " Proxy";
+        }
+        if (method.getAnnotation(PreDestroy.class) != null) {
+            return destroy();
+        }
+
+        final ConnectionInfo info = getConnectionInfo(method);
+        final MBeanInfo infos = info.getMBeanInfo();
+        if (methodName.startsWith("set") && methodName.length() > 3 && args != null && args.length == 1
+            && (Void.TYPE.equals(method.getReturnType()) || Void.class.equals(method.getReturnType()))) {
+            final String attributeName = attributeName(infos, methodName, method.getParameterTypes()[0]);
+            info.setAttribute(new Attribute(attributeName, args[0]));
+            return null;
+        } else if (methodName.startsWith("get") && (args == null || args.length == 0) && methodName.length() > 3) {
+            final String attributeName = attributeName(infos, methodName, method.getReturnType());
+            return info.getAttribute(attributeName);
+        }
+        // operation
+        return info.invoke(methodName, args, getSignature(method));
+    }
+
+    public Object destroy() {
+        for (ConnectionInfo info : infos.values()) {
+            info.clean();
+        }
+        infos.clear();
+        return null;
+    }
+
+    private String[] getSignature(Method method) {
+        String[] args = new String[method.getParameterTypes().length];
+        for (int i = 0; i < method.getParameterTypes().length; i++) {
+            args[i] = method.getParameterTypes()[i].getName();
+        }
+        return args; // note: null should often work...
+    }
+
+    private String attributeName(MBeanInfo infos, String methodName, Class<?> type) {
+        String found = null;
+        String foundBackUp = null; // without checking the type
+        final String attributeName = methodName.substring(3, methodName.length());
+        final String lowerName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4, methodName.length());
+
+        for (MBeanAttributeInfo attribute : infos.getAttributes()) {
+            final String name = attribute.getName();
+            if (attributeName.equals(name)) {
+                foundBackUp = attributeName;
+                if (attribute.getType().equals(type.getName())) {
+                    found = name;
+                }
+            } else if (found == null && ((lowerName.equals(name) && !attributeName.equals(name))
+                || lowerName.equalsIgnoreCase(name))) {
+                foundBackUp = name;
+                if (attribute.getType().equals(type.getName())) {
+                    found = name;
+                }
+            }
+        }
+
+        if (found == null && foundBackUp == null) {
+            throw new UnsupportedOperationException("cannot find attribute " + attributeName);
+        }
+
+        if (found != null) {
+            return found;
+        }
+        return foundBackUp;
+    }
+
+    private synchronized ConnectionInfo getConnectionInfo(Method method) throws Exception {
+        if (!infos.containsKey(method)) {
+            synchronized (infos) {
+                if (!infos.containsKey(method)) { // double check for synchro
+                    org.superbiz.dynamic.mbean.ObjectName on = method.getAnnotation(org.superbiz.dynamic.mbean.ObjectName.class);
+                    if (on == null) {
+                        Class<?> current = method.getDeclaringClass();
+                        do {
+                            on = method.getDeclaringClass().getAnnotation(org.superbiz.dynamic.mbean.ObjectName.class);
+                            current = current.getSuperclass();
+                        } while (on == null && current != null);
+                        if (on == null) {
+                            throw new UnsupportedOperationException("class or method should define the objectName to use for invocation: " + method.toGenericString());
+                        }
+                    }
+                    final ConnectionInfo info;
+                    if (on.url().isEmpty()) {
+                        info = new LocalConnectionInfo();
+                        ((LocalConnectionInfo) info).server = ManagementFactory.getPlatformMBeanServer(); // could use an id...
+                    } else {
+                        info = new RemoteConnectionInfo();
+                        final Map<String, String[]> environment = new HashMap<String, String[]>();
+                        if (!on.user().isEmpty()) {
+                            environment.put(JMXConnector.CREDENTIALS, new String[]{ on.user(), on.password() });
+                        }
+                        // ((RemoteConnectionInfo) info).connector = JMXConnectorFactory.newJMXConnector(new JMXServiceURL(on.url()), environment);
+                        ((RemoteConnectionInfo) info).connector = JMXConnectorFactory.connect(new JMXServiceURL(on.url()), environment);
+
+                    }
+                    info.objectName = new ObjectName(on.value());
+
+                    infos.put(method, info);
+                }
+            }
+        }
+        return infos.get(method);
+    }
+
+    private abstract static class ConnectionInfo {
+        protected ObjectName objectName;
+
+        public abstract void setAttribute(Attribute attribute) throws Exception;
+        public abstract Object getAttribute(String attribute) throws Exception;
+        public abstract Object invoke(String operationName, Object params[], String signature[]) throws Exception;
+        public abstract MBeanInfo getMBeanInfo() throws Exception;
+        public abstract void clean();
+    }
+
+    private static class LocalConnectionInfo extends ConnectionInfo {
+        private MBeanServer server;
+
+        @Override public void setAttribute(Attribute attribute) throws Exception {
+            server.setAttribute(objectName, attribute);
+        }
+
+        @Override public Object getAttribute(String attribute) throws Exception {
+            return server.getAttribute(objectName, attribute);
+        }
+
+        @Override
+        public Object invoke(String operationName, Object[] params, String[] signature) throws Exception {
+            return server.invoke(objectName, operationName, params, signature);
+        }
+
+        @Override public MBeanInfo getMBeanInfo() throws Exception {
+            return server.getMBeanInfo(objectName);
+        }
+
+        @Override public void clean() {
+            // no-op
+        }
+    }
+
+    private static class RemoteConnectionInfo extends ConnectionInfo {
+        private JMXConnector connector;
+        private MBeanServerConnection connection;
+
+        private void before() throws IOException {
+            connection = connector.getMBeanServerConnection();
+        }
+
+        private void after() throws IOException {
+            // no-op
+        }
+
+        @Override public void setAttribute(Attribute attribute) throws Exception {
+            before();
+            connection.setAttribute(objectName, attribute);
+            after();
+        }
+
+        @Override public Object getAttribute(String attribute) throws Exception {
+            before();
+            try {
+                return connection.getAttribute(objectName, attribute);
+            } finally {
+                after();
+            }
+        }
+
+        @Override
+        public Object invoke(String operationName, Object[] params, String[] signature) throws Exception {
+            before();
+            try {
+                return connection.invoke(objectName, operationName, params, signature);
+            } finally {
+                after();
+            }
+        }
+
+        @Override public MBeanInfo getMBeanInfo() throws Exception {
+            before();
+            try {
+                return connection.getMBeanInfo(objectName);
+            } finally {
+                after();
+            }
+        }
+
+        @Override public void clean() {
+            try {
+                connector.close();
+            } catch (IOException e) {
+                // no-op
+            }
+        }
+    }
+}
+----
+
+
+==  Dynamic Proxies    
+
+===  DynamicMBeanClient (the dynamic JMX client)
+
+	package org.superbiz.dynamic.mbean;
+
+	import org.apache.openejb.api.Proxy;
+	import org.superbiz.dynamic.mbean.DynamicMBeanHandler;
+	import org.superbiz.dynamic.mbean.ObjectName;
+
+	import javax.ejb.Singleton;
+
+	/**
+	 * @author rmannibucau
+	 */
+	@Singleton
+	@Proxy(DynamicMBeanHandler.class)
+	@ObjectName(DynamicMBeanClient.OBJECT_NAME)
+	public interface DynamicMBeanClient {
+		static final String OBJECT_NAME = "test:group=DynamicMBeanClientTest";
+
+		int getCounter();
+		void setCounter(int i);
+		int length(String aString);
+	}
+
+===  DynamicMBeanClient (the dynamic JMX client)
+
+[source,java]
+----
+package org.superbiz.dynamic.mbean;
+
+import org.apache.openejb.api.Proxy;
+
+import javax.annotation.PreDestroy;
+import javax.ejb.Singleton;
+
+
+@Singleton
+@Proxy(DynamicMBeanHandler.class)
+@ObjectName(value = DynamicRemoteMBeanClient.OBJECT_NAME, url = "service:jmx:rmi:///jndi/rmi://localhost:8243/jmxrmi")
+public interface DynamicRemoteMBeanClient {
+    static final String OBJECT_NAME = "test:group=DynamicMBeanClientTest";
+
+    int getCounter();
+    void setCounter(int i);
+    int length(String aString);
+
+    @PreDestroy void clean();
+}
+----
+
+
+==  The MBean used for the test
+
+===  SimpleMBean
+
+	package org.superbiz.dynamic.mbean.simple;
+
+	public interface SimpleMBean {
+		int length(String s);
+
+		int getCounter();
+		void setCounter(int c);
+	}
+
+==  Simple
+
+	package org.superbiz.dynamic.mbean.simple;
+
+	public class Simple implements SimpleMBean {
+		private int counter = 0;
+
+		@Override public int length(String s) {
+		    if (s == null) {
+		        return 0;
+		    }
+		    return s.length();
+		}
+
+		@Override public int getCounter() {
+		    return counter;
+		}
+
+		@Override public void setCounter(int c) {
+		    counter = c;
+		}
+	}
+
+==  DynamicMBeanClientTest (The test)
+
+
+[source,java]
+----
+package org.superbiz.dynamic.mbean;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.superbiz.dynamic.mbean.simple.Simple;
+
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+import javax.management.Attribute;
+import javax.management.ObjectName;
+import java.lang.management.ManagementFactory;
+
+import static junit.framework.Assert.assertEquals;
+
+public class DynamicMBeanClientTest {
+    private static ObjectName objectName;
+    private static EJBContainer container;
+
+    @EJB private DynamicMBeanClient localClient;
+    @EJB private DynamicRemoteMBeanClient remoteClient;
+
+    @BeforeClass public static void start() {
+        container = EJBContainer.createEJBContainer();
+    }
+
+    @Before public void injectAndRegisterMBean() throws Exception {
+        container.getContext().bind("inject", this);
+        objectName = new ObjectName(DynamicMBeanClient.OBJECT_NAME);
+        ManagementFactory.getPlatformMBeanServer().registerMBean(new Simple(), objectName);
+    }
+
+    @After public void unregisterMBean() throws Exception {
+        if (objectName != null) {
+            ManagementFactory.getPlatformMBeanServer().unregisterMBean(objectName);
+        }
+    }
+
+    @Test public void localGet() throws Exception {
+        assertEquals(0, localClient.getCounter());
+        ManagementFactory.getPlatformMBeanServer().setAttribute(objectName, new Attribute("Counter", 5));
+        assertEquals(5, localClient.getCounter());
+    }
+
+    @Test public void localSet() throws Exception {
+        assertEquals(0, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, "Counter")).intValue());
+        localClient.setCounter(8);
+        assertEquals(8, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, "Counter")).intValue());
+    }
+
+    @Test public void localOperation() {
+        assertEquals(7, localClient.length("openejb"));
+    }
+
+    @Test public void remoteGet() throws Exception {
+        assertEquals(0, remoteClient.getCounter());
+        ManagementFactory.getPlatformMBeanServer().setAttribute(objectName, new Attribute("Counter", 5));
+        assertEquals(5, remoteClient.getCounter());
+    }
+
+    @Test public void remoteSet() throws Exception {
+        assertEquals(0, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, "Counter")).intValue());
+        remoteClient.setCounter(8);
+        assertEquals(8, ((Integer) ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, "Counter")).intValue());
+    }
+
+    @Test public void remoteOperation() {
+        assertEquals(7, remoteClient.length("openejb"));
+    }
+
+    @AfterClass public static void close() {
+        if (container != null) {
+            container.close();
+        }
+    }
+}
+----
+
+
diff --git a/src/main/jbake/content/examples/ear-testing.adoc b/src/main/jbake/content/examples/ear-testing.adoc
new file mode 100755
index 0000000..eac0b6d
--- /dev/null
+++ b/src/main/jbake/content/examples/ear-testing.adoc
@@ -0,0 +1,244 @@
+= EAR Testing
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example ear-testing can be browsed at https://github.com/apache/tomee/tree/master/examples/ear-testing
+
+
+The goal of this example is to demonstrate how maven projects might be organized in a more real world style and how testing with OpenEJB can fit into that structure.
+
+This example takes the basic moviefun code we us in many of examples and splits it into two modules:
+
+ - `business-logic`
+ - `business-model`
+
+As the names imply, we keep our `@Entity` beans in the `business-model` module and our session beans in the `business-logic` model.  The tests located and run from the business logic module.
+
+    ear-testing
+    ear-testing/business-logic
+    ear-testing/business-logic/pom.xml
+    ear-testing/business-logic/src/main/java/org/superbiz/logic/Movies.java
+    ear-testing/business-logic/src/main/java/org/superbiz/logic/MoviesImpl.java
+    ear-testing/business-logic/src/main/resources
+    ear-testing/business-logic/src/main/resources/META-INF
+    ear-testing/business-logic/src/main/resources/META-INF/ejb-jar.xml
+    ear-testing/business-logic/src/test/java/org/superbiz/logic/MoviesTest.java
+    ear-testing/business-model
+    ear-testing/business-model/pom.xml
+    ear-testing/business-model/src/main/java/org/superbiz/model/Movie.java
+    ear-testing/business-model/src/main/resources/META-INF/persistence.xml
+    ear-testing/pom.xml
+
+=  Project configuration
+
+The parent pom, trimmed to the minimum, looks like so:
+
+
+[source,xml]
+----
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.superbiz</groupId>
+  <artifactId>myear</artifactId>
+  <version>1.1.0-SNAPSHOT</version>
+
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>business-model</module>
+    <module>business-logic</module>
+  </modules>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.openejb</groupId>
+        <artifactId>javaee-api</artifactId>
+        <version>6.0-2</version>
+      </dependency>
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>4.8.1</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>
+----
+
+
+The `business-model/pom.xml` as follows:
+
+
+[source,xml]
+----
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.superbiz</groupId>
+    <artifactId>myear</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>business-model</artifactId>
+  <packaging>jar</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>javaee-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+
+</project>
+----
+
+
+And finally, the `business-logic/pom.xml` which is setup to support embedded testing with OpenEJB:
+
+
+[source,xml]
+----
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.superbiz</groupId>
+    <artifactId>myear</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>business-logic</artifactId>
+  <packaging>jar</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.superbiz</groupId>
+      <artifactId>business-model</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>javaee-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <!--
+    The <scope>test</scope> guarantees that non of your runtime
+    code is dependent on any OpenEJB classes.
+    -->
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-core</artifactId>
+      <version>7.0.0-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
+----
+
+
+=  TestCode
+
+The test code is the same as always:
+
+
+[source,java]
+----
+public class MoviesTest extends TestCase {
+
+    public void test() throws Exception {
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+
+        p.put("openejb.deployments.classpath.ear", "true");
+
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        p.put("movieDatabaseUnmanaged", "new://Resource?type=DataSource");
+        p.put("movieDatabaseUnmanaged.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabaseUnmanaged.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+        p.put("movieDatabaseUnmanaged.JtaManaged", "false");
+
+        Context context = new InitialContext(p);
+
+        Movies movies = (Movies) context.lookup("MoviesLocal");
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+}
+----
+
+
+
+=  Running
+
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.logic.MoviesTest
+Apache OpenEJB 7.0.0-SNAPSHOT    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/ear-testing/business-logic
+INFO - openejb.base = /Users/dblevins/examples/ear-testing/business-logic
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found PersistenceModule in classpath: /Users/dblevins/examples/ear-testing/business-model/target/business-model-1.0.jar
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/ear-testing/business-logic/target/classes
+INFO - Using 'openejb.deployments.classpath.ear=true'
+INFO - Beginning load: /Users/dblevins/examples/ear-testing/business-model/target/business-model-1.0.jar
+INFO - Beginning load: /Users/dblevins/examples/ear-testing/business-logic/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/ear-testing/business-logic/classpath.ear
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Enterprise application "/Users/dblevins/examples/ear-testing/business-logic/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/ear-testing/business-logic/classpath.ear
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 415ms
+INFO - Jndi(name=MoviesLocal) --> Ejb(deployment-id=Movies)
+INFO - Jndi(name=global/classpath.ear/business-logic/Movies!org.superbiz.logic.Movies) --> Ejb(deployment-id=Movies)
+INFO - Jndi(name=global/classpath.ear/business-logic/Movies) --> Ejb(deployment-id=Movies)
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/ear-testing/business-logic/classpath.ear)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.393 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/ejb-examples.adoc b/src/main/jbake/content/examples/ejb-examples.adoc
new file mode 100755
index 0000000..64262f1
--- /dev/null
+++ b/src/main/jbake/content/examples/ejb-examples.adoc
@@ -0,0 +1,1188 @@
+= EJB Examples
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example ejb-examples can be browsed at https://github.com/apache/tomee/tree/master/examples/ejb-examples
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  AnnotatedEJB
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.annotation.Resource;
+import javax.ejb.LocalBean;
+import javax.ejb.Stateless;
+import javax.sql.DataSource;
+
+@Stateless
+@LocalBean
+public class AnnotatedEJB implements AnnotatedEJBLocal, AnnotatedEJBRemote {
+    @Resource
+    private DataSource ds;
+
+    private String name = "foo";
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public DataSource getDs() {
+        return ds;
+    }
+
+    public void setDs(DataSource ds) {
+        this.ds = ds;
+    }
+
+    public String toString() {
+        return "AnnotatedEJB[name=" + name + "]";
+    }
+}
+----
+
+
+==  AnnotatedEJBLocal
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.ejb.Local;
+import javax.sql.DataSource;
+
+@Local
+public interface AnnotatedEJBLocal {
+    String getName();
+
+    void setName(String name);
+
+    DataSource getDs();
+
+    void setDs(DataSource ds);
+}
+----
+
+
+==  AnnotatedEJBRemote
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface AnnotatedEJBRemote {
+    String getName();
+
+    void setName(String name);
+}
+----
+
+
+==  AnnotatedServlet
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.sql.DataSource;
+import java.io.IOException;
+
+public class AnnotatedServlet extends HttpServlet {
+    @EJB
+    private AnnotatedEJBLocal localEJB;
+
+    @EJB
+    private AnnotatedEJBRemote remoteEJB;
+
+    @EJB
+    private AnnotatedEJB localbeanEJB;
+
+    @Resource
+    private DataSource ds;
+
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("text/plain");
+        ServletOutputStream out = response.getOutputStream();
+
+        out.println("LocalBean EJB");
+        out.println("@EJB=" + localbeanEJB);
+        if (localbeanEJB != null) {
+            out.println("@EJB.getName()=" + localbeanEJB.getName());
+            out.println("@EJB.getDs()=" + localbeanEJB.getDs());
+        }
+        out.println("JNDI=" + lookupField("localbeanEJB"));
+        out.println();
+
+        out.println("Local EJB");
+        out.println("@EJB=" + localEJB);
+        if (localEJB != null) {
+            out.println("@EJB.getName()=" + localEJB.getName());
+            out.println("@EJB.getDs()=" + localEJB.getDs());
+        }
+        out.println("JNDI=" + lookupField("localEJB"));
+        out.println();
+
+        out.println("Remote EJB");
+        out.println("@EJB=" + remoteEJB);
+        if (localEJB != null) {
+            out.println("@EJB.getName()=" + remoteEJB.getName());
+        }
+        out.println("JNDI=" + lookupField("remoteEJB"));
+        out.println();
+
+
+        out.println("DataSource");
+        out.println("@Resource=" + ds);
+        out.println("JNDI=" + lookupField("ds"));
+    }
+
+    private Object lookupField(String name) {
+        try {
+            return new InitialContext().lookup("java:comp/env/" + getClass().getName() + "/" + name);
+        } catch (NamingException e) {
+            return null;
+        }
+    }
+}
+----
+
+
+==  ClientHandler
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.xml.ws.handler.Handler;
+import javax.xml.ws.handler.MessageContext;
+
+public class ClientHandler implements Handler {
+    public boolean handleMessage(MessageContext messageContext) {
+        WebserviceServlet.write("    ClientHandler handleMessage");
+        return true;
+    }
+
+    public void close(MessageContext messageContext) {
+        WebserviceServlet.write("    ClientHandler close");
+    }
+
+    public boolean handleFault(MessageContext messageContext) {
+        WebserviceServlet.write("    ClientHandler handleFault");
+        return true;
+    }
+}
+----
+
+
+==  HelloEjb
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.jws.WebService;
+
+@WebService(targetNamespace = "http://examples.org/wsdl")
+public interface HelloEjb {
+    String hello(String name);
+}
+----
+
+
+==  HelloEjbService
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.ejb.Stateless;
+import javax.jws.HandlerChain;
+import javax.jws.WebService;
+
+@WebService(
+        portName = "HelloEjbPort",
+        serviceName = "HelloEjbService",
+        targetNamespace = "http://examples.org/wsdl",
+        endpointInterface = "org.superbiz.servlet.HelloEjb"
+)
+@HandlerChain(file = "server-handlers.xml")
+@Stateless
+public class HelloEjbService implements HelloEjb {
+    public String hello(String name) {
+        WebserviceServlet.write("                HelloEjbService hello(" + name + ")");
+        if (name == null) name = "World";
+        return "Hello " + name + " from EJB Webservice!";
+    }
+}
+----
+
+
+==  HelloPojo
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.jws.WebService;
+
+@WebService(targetNamespace = "http://examples.org/wsdl")
+public interface HelloPojo {
+    String hello(String name);
+}
+----
+
+
+==  HelloPojoService
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.jws.HandlerChain;
+import javax.jws.WebService;
+
+@WebService(
+        portName = "HelloPojoPort",
+        serviceName = "HelloPojoService",
+        targetNamespace = "http://examples.org/wsdl",
+        endpointInterface = "org.superbiz.servlet.HelloPojo"
+)
+@HandlerChain(file = "server-handlers.xml")
+public class HelloPojoService implements HelloPojo {
+    public String hello(String name) {
+        WebserviceServlet.write("                HelloPojoService hello(" + name + ")");
+        if (name == null) name = "World";
+        return "Hello " + name + " from Pojo Webservice!";
+    }
+}
+----
+
+
+==  JndiServlet
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameClassPair;
+import javax.naming.NamingException;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
+import java.util.TreeMap;
+
+public class JndiServlet extends HttpServlet {
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("text/plain");
+        ServletOutputStream out = response.getOutputStream();
+
+        Map<String, Object> bindings = new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER);
+        try {
+            Context context = (Context) new InitialContext().lookup("java:comp/");
+            addBindings("", bindings, context);
+        } catch (NamingException e) {
+            throw new ServletException(e);
+        }
+
+        out.println("JNDI Context:");
+        for (Map.Entry<String, Object> entry : bindings.entrySet()) {
+            if (entry.getValue() != null) {
+                out.println("  " + entry.getKey() + "=" + entry.getValue());
+            } else {
+                out.println("  " + entry.getKey());
+            }
+        }
+    }
+
+    private void addBindings(String path, Map<String, Object> bindings, Context context) {
+        try {
+            for (NameClassPair pair : Collections.list(context.list(""))) {
+                String name = pair.getName();
+                String className = pair.getClassName();
+                if ("org.apache.naming.resources.FileDirContext$FileResource".equals(className)) {
+                    bindings.put(path + name, "<file>");
+                } else {
+                    try {
+                        Object value = context.lookup(name);
+                        if (value instanceof Context) {
+                            Context nextedContext = (Context) value;
+                            bindings.put(path + name, "");
+                            addBindings(path + name + "/", bindings, nextedContext);
+                        } else {
+                            bindings.put(path + name, value);
+                        }
+                    } catch (NamingException e) {
+                        // lookup failed
+                        bindings.put(path + name, "ERROR: " + e.getMessage());
+                    }
+                }
+            }
+        } catch (NamingException e) {
+            bindings.put(path, "ERROR: list bindings threw an exception: " + e.getMessage());
+        }
+    }
+}
+----
+
+
+==  JpaBean
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class JpaBean {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private int id;
+
+    @Column(name = "name")
+    private String name;
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+
+    public String toString() {
+        return "[JpaBean id=" + id + ", name=" + name + "]";
+    }
+}
+----
+
+
+==  JpaServlet
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.Query;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class JpaServlet extends HttpServlet {
+    @PersistenceUnit(name = "jpa-example")
+    private EntityManagerFactory emf;
+
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("text/plain");
+        ServletOutputStream out = response.getOutputStream();
+
+        out.println("@PersistenceUnit=" + emf);
+
+        EntityManager em = emf.createEntityManager();
+        EntityTransaction transaction = em.getTransaction();
+        transaction.begin();
+
+        JpaBean jpaBean = new JpaBean();
+        jpaBean.setName("JpaBean");
+        em.persist(jpaBean);
+
+        transaction.commit();
+        transaction.begin();
+
+        Query query = em.createQuery("SELECT j FROM JpaBean j WHERE j.name='JpaBean'");
+        jpaBean = (JpaBean) query.getSingleResult();
+        out.println("Loaded " + jpaBean);
+
+        em.remove(jpaBean);
+
+        transaction.commit();
+        transaction.begin();
+
+        query = em.createQuery("SELECT count(j) FROM JpaBean j WHERE j.name='JpaBean'");
+        int count = ((Number) query.getSingleResult()).intValue();
+        if (count == 0) {
+            out.println("Removed " + jpaBean);
+        } else {
+            out.println("ERROR: unable to remove" + jpaBean);
+        }
+
+        transaction.commit();
+    }
+}
+----
+
+
+==  ResourceBean
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+public class ResourceBean {
+    private String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String toString() {
+        return "[ResourceBean " + value + "]";
+    }
+}
+----
+
+
+==  RunAsServlet
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.security.Principal;
+
+public class RunAsServlet extends HttpServlet {
+    @EJB
+    private SecureEJBLocal secureEJBLocal;
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("text/plain");
+        ServletOutputStream out = response.getOutputStream();
+
+        out.println("Servlet");
+        Principal principal = request.getUserPrincipal();
+        if (principal != null) {
+            out.println("Servlet.getUserPrincipal()=" + principal + " [" + principal.getName() + "]");
+        } else {
+            out.println("Servlet.getUserPrincipal()=<null>");
+        }
+        out.println("Servlet.isCallerInRole(\"user\")=" + request.isUserInRole("user"));
+        out.println("Servlet.isCallerInRole(\"manager\")=" + request.isUserInRole("manager"));
+        out.println("Servlet.isCallerInRole(\"fake\")=" + request.isUserInRole("fake"));
+        out.println();
+
+        out.println("@EJB=" + secureEJBLocal);
+        if (secureEJBLocal != null) {
+            principal = secureEJBLocal.getCallerPrincipal();
+            if (principal != null) {
+                out.println("@EJB.getCallerPrincipal()=" + principal + " [" + principal.getName() + "]");
+            } else {
+                out.println("@EJB.getCallerPrincipal()=<null>");
+            }
+            out.println("@EJB.isCallerInRole(\"user\")=" + secureEJBLocal.isCallerInRole("user"));
+            out.println("@EJB.isCallerInRole(\"manager\")=" + secureEJBLocal.isCallerInRole("manager"));
+            out.println("@EJB.isCallerInRole(\"fake\")=" + secureEJBLocal.isCallerInRole("fake"));
+
+            try {
+                secureEJBLocal.allowUserMethod();
+                out.println("@EJB.allowUserMethod() ALLOWED");
+            } catch (EJBAccessException e) {
+                out.println("@EJB.allowUserMethod() DENIED");
+            }
+
+            try {
+                secureEJBLocal.allowManagerMethod();
+                out.println("@EJB.allowManagerMethod() ALLOWED");
+            } catch (EJBAccessException e) {
+                out.println("@EJB.allowManagerMethod() DENIED");
+            }
+
+            try {
+                secureEJBLocal.allowFakeMethod();
+                out.println("@EJB.allowFakeMethod() ALLOWED");
+            } catch (EJBAccessException e) {
+                out.println("@EJB.allowFakeMethod() DENIED");
+            }
+
+            try {
+                secureEJBLocal.denyAllMethod();
+                out.println("@EJB.denyAllMethod() ALLOWED");
+            } catch (EJBAccessException e) {
+                out.println("@EJB.denyAllMethod() DENIED");
+            }
+        }
+        out.println();
+    }
+}
+----
+
+
+==  SecureEJB
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.annotation.Resource;
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.DenyAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateless;
+import java.security.Principal;
+
+@Stateless
+@DeclareRoles({"user", "manager", "fake"})
+public class SecureEJB implements SecureEJBLocal {
+    @Resource
+    private SessionContext context;
+
+    public Principal getCallerPrincipal() {
+        return context.getCallerPrincipal();
+    }
+
+    public boolean isCallerInRole(String role) {
+        return context.isCallerInRole(role);
+    }
+
+    @RolesAllowed("user")
+    public void allowUserMethod() {
+    }
+
+    @RolesAllowed("manager")
+    public void allowManagerMethod() {
+    }
+
+    @RolesAllowed("fake")
+    public void allowFakeMethod() {
+    }
+
+    @DenyAll
+    public void denyAllMethod() {
+    }
+
+    public String toString() {
+        return "SecureEJB[userName=" + getCallerPrincipal() + "]";
+    }
+}
+----
+
+
+==  SecureEJBLocal
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.ejb.Local;
+import java.security.Principal;
+
+@Local
+public interface SecureEJBLocal {
+    Principal getCallerPrincipal();
+
+    boolean isCallerInRole(String role);
+
+    void allowUserMethod();
+
+    void allowManagerMethod();
+
+    void allowFakeMethod();
+
+    void denyAllMethod();
+}
+----
+
+
+==  SecureServlet
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.security.Principal;
+
+public class SecureServlet extends HttpServlet {
+    @EJB
+    private SecureEJBLocal secureEJBLocal;
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("text/plain");
+        ServletOutputStream out = response.getOutputStream();
+
+        out.println("Servlet");
+        Principal principal = request.getUserPrincipal();
+        if (principal != null) {
+            out.println("Servlet.getUserPrincipal()=" + principal + " [" + principal.getName() + "]");
+        } else {
+            out.println("Servlet.getUserPrincipal()=<null>");
+        }
+        out.println("Servlet.isCallerInRole(\"user\")=" + request.isUserInRole("user"));
+        out.println("Servlet.isCallerInRole(\"manager\")=" + request.isUserInRole("manager"));
+        out.println("Servlet.isCallerInRole(\"fake\")=" + request.isUserInRole("fake"));
+        out.println();
+
+        out.println("@EJB=" + secureEJBLocal);
+        if (secureEJBLocal != null) {
+            principal = secureEJBLocal.getCallerPrincipal();
+            if (principal != null) {
+                out.println("@EJB.getCallerPrincipal()=" + principal + " [" + principal.getName() + "]");
+            } else {
+                out.println("@EJB.getCallerPrincipal()=<null>");
+            }
+            out.println("@EJB.isCallerInRole(\"user\")=" + secureEJBLocal.isCallerInRole("user"));
+            out.println("@EJB.isCallerInRole(\"manager\")=" + secureEJBLocal.isCallerInRole("manager"));
+            out.println("@EJB.isCallerInRole(\"fake\")=" + secureEJBLocal.isCallerInRole("fake"));
+
+            try {
+                secureEJBLocal.allowUserMethod();
+                out.println("@EJB.allowUserMethod() ALLOWED");
+            } catch (EJBAccessException e) {
+                out.println("@EJB.allowUserMethod() DENIED");
+            }
+
+            try {
+                secureEJBLocal.allowManagerMethod();
+                out.println("@EJB.allowManagerMethod() ALLOWED");
+            } catch (EJBAccessException e) {
+                out.println("@EJB.allowManagerMethod() DENIED");
+            }
+
+            try {
+                secureEJBLocal.allowFakeMethod();
+                out.println("@EJB.allowFakeMethod() ALLOWED");
+            } catch (EJBAccessException e) {
+                out.println("@EJB.allowFakeMethod() DENIED");
+            }
+
+            try {
+                secureEJBLocal.denyAllMethod();
+                out.println("@EJB.denyAllMethod() ALLOWED");
+            } catch (EJBAccessException e) {
+                out.println("@EJB.denyAllMethod() DENIED");
+            }
+        }
+        out.println();
+    }
+}
+----
+
+
+==  ServerHandler
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.xml.ws.handler.Handler;
+import javax.xml.ws.handler.MessageContext;
+
+public class ServerHandler implements Handler {
+    public boolean handleMessage(MessageContext messageContext) {
+        WebserviceServlet.write("        ServerHandler handleMessage");
+        return true;
+    }
+
+    public void close(MessageContext messageContext) {
+        WebserviceServlet.write("        ServerHandler close");
+    }
+
+    public boolean handleFault(MessageContext messageContext) {
+        WebserviceServlet.write("        ServerHandler handleFault");
+        return true;
+    }
+}
+----
+
+
+==  WebserviceClient
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.xml.ws.Service;
+import java.io.PrintStream;
+import java.net.URL;
+
+public class WebserviceClient {
+    /**
+     * Unfortunately, to run this example with CXF you need to have a HUGE class path.  This
+     * is just what is required to run CXF:
+     * <p/>
+     * jaxb-api-2.0.jar
+     * jaxb-impl-2.0.3.jar
+     * <p/>
+     * saaj-api-1.3.jar
+     * saaj-impl-1.3.jar
+     * <p/>
+     * <p/>
+     * cxf-api-2.0.2-incubator.jar
+     * cxf-common-utilities-2.0.2-incubator.jar
+     * cxf-rt-bindings-soap-2.0.2-incubator.jar
+     * cxf-rt-core-2.0.2-incubator.jar
+     * cxf-rt-databinding-jaxb-2.0.2-incubator.jar
+     * cxf-rt-frontend-jaxws-2.0.2-incubator.jar
+     * cxf-rt-frontend-simple-2.0.2-incubator.jar
+     * cxf-rt-transports-http-jetty-2.0.2-incubator.jar
+     * cxf-rt-transports-http-2.0.2-incubator.jar
+     * cxf-tools-common-2.0.2-incubator.jar
+     * <p/>
+     * geronimo-activation_1.1_spec-1.0.jar
+     * geronimo-annotation_1.0_spec-1.1.jar
+     * geronimo-ejb_3.0_spec-1.0.jar
+     * geronimo-jpa_3.0_spec-1.1.jar
+     * geronimo-servlet_2.5_spec-1.1.jar
+     * geronimo-stax-api_1.0_spec-1.0.jar
+     * jaxws-api-2.0.jar
+     * axis2-jws-api-1.3.jar
+     * <p/>
+     * wsdl4j-1.6.1.jar
+     * xml-resolver-1.2.jar
+     * XmlSchema-1.3.1.jar
+     */
+    public static void main(String[] args) throws Exception {
+        PrintStream out = System.out;
+
+        Service helloPojoService = Service.create(new URL("http://localhost:8080/ejb-examples/hello?wsdl"), null);
+        HelloPojo helloPojo = helloPojoService.getPort(HelloPojo.class);
+        out.println();
+        out.println("Pojo Webservice");
+        out.println("    helloPojo.hello(\"Bob\")=" + helloPojo.hello("Bob"));
+        out.println("    helloPojo.hello(null)=" + helloPojo.hello(null));
+        out.println();
+
+        Service helloEjbService = Service.create(new URL("http://localhost:8080/HelloEjbService?wsdl"), null);
+        HelloEjb helloEjb = helloEjbService.getPort(HelloEjb.class);
+        out.println();
+        out.println("EJB Webservice");
+        out.println("    helloEjb.hello(\"Bob\")=" + helloEjb.hello("Bob"));
+        out.println("    helloEjb.hello(null)=" + helloEjb.hello(null));
+        out.println();
+    }
+}
+----
+
+
+==  WebserviceServlet
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import javax.jws.HandlerChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.ws.WebServiceRef;
+import java.io.IOException;
+
+public class WebserviceServlet extends HttpServlet {
+
+    @WebServiceRef
+    @HandlerChain(file = "client-handlers.xml")
+    private HelloPojo helloPojo;
+
+    @WebServiceRef
+    @HandlerChain(file = "client-handlers.xml")
+    private HelloEjb helloEjb;
+
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        response.setContentType("text/plain");
+        ServletOutputStream out = response.getOutputStream();
+
+        OUT = out;
+        try {
+            out.println("Pojo Webservice");
+            out.println("    helloPojo.hello(\"Bob\")=" + helloPojo.hello("Bob"));
+            out.println();
+            out.println("    helloPojo.hello(null)=" + helloPojo.hello(null));
+            out.println();
+            out.println("EJB Webservice");
+            out.println("    helloEjb.hello(\"Bob\")=" + helloEjb.hello("Bob"));
+            out.println();
+            out.println("    helloEjb.hello(null)=" + helloEjb.hello(null));
+            out.println();
+        } finally {
+            OUT = out;
+        }
+    }
+
+    private static ServletOutputStream OUT;
+
+    public static void write(String message) {
+        try {
+            ServletOutputStream out = OUT;
+            out.println(message);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
+----
+
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+  <persistence-unit transaction-type="RESOURCE_LOCAL" name="jpa-example">
+    <jta-data-source>java:openejb/Connector/Default JDBC Database</jta-data-source>
+    <non-jta-data-source>java:openejb/Connector/Default Unmanaged JDBC Database</non-jta-data-source>
+    <class>org.superbiz.servlet.JpaBean</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  client-handlers.xml
+
+
+[source,xml]
+----
+<jws:handler-chains xmlns:jws="http://java.sun.com/xml/ns/javaee">
+  <jws:handler-chain>
+    <jws:handler>
+      <jws:handler-name>ClientHandler</jws:handler-name>
+      <jws:handler-class>org.superbiz.servlet.ClientHandler</jws:handler-class>
+    </jws:handler>
+  </jws:handler-chain>
+</jws:handler-chains>
+----
+
+    
+
+==  server-handlers.xml
+
+
+[source,xml]
+----
+<jws:handler-chains xmlns:jws="http://java.sun.com/xml/ns/javaee">
+  <jws:handler-chain>
+    <jws:handler>
+      <jws:handler-name>ServerHandler</jws:handler-name>
+      <jws:handler-class>org.superbiz.servlet.ServerHandler</jws:handler-class>
+    </jws:handler>
+  </jws:handler-chain>
+</jws:handler-chains>
+----
+
+    
+
+==  context.xml
+
+
+[source,xml]
+----
+<Context>
+  <!-- This only works if the context is installed under the correct name -->
+  <Realm className="org.apache.catalina.realm.MemoryRealm"
+         pathname="webapps/ejb-examples-1.0-SNAPSHOT/WEB-INF/tomcat-users.xml"/>
+
+  <Environment
+      name="context.xml/environment"
+      value="ContextString"
+      type="java.lang.String"/>
+  <Resource
+      name="context.xml/resource"
+      auth="Container"
+      type="org.superbiz.servlet.ResourceBean"
+      factory="org.apache.naming.factory.BeanFactory"
+      value="ContextResource"/>
+  <ResourceLink
+      name="context.xml/resource-link"
+      global="server.xml/environment"
+      type="java.lang.String"/>
+
+  <!-- web.xml resources -->
+  <Resource
+      name="web.xml/resource-env-ref"
+      auth="Container"
+      type="org.superbiz.servlet.ResourceBean"
+      factory="org.apache.naming.factory.BeanFactory"
+      value="ContextResourceEnvRef"/>
+  <Resource
+      name="web.xml/resource-ref"
+      auth="Container"
+      type="org.superbiz.servlet.ResourceBean"
+      factory="org.apache.naming.factory.BeanFactory"
+      value="ContextResourceRef"/>
+  <ResourceLink
+      name="web.xml/resource-link"
+      global="server.xml/environment"
+      type="java.lang.String"/>
+</Context>
+----
+
+    
+
+==  jetty-web.xml
+
+
+[source,xml]
+----
+<Configure class="org.eclipse.jetty.webapp.WebAppContext">
+  <Get name="securityHandler">
+    <Set name="loginService">
+      <New class="org.eclipse.jetty.security.HashLoginService">
+        <Set name="name">Test Realm</Set>
+        <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties
+        </Set>
+      </New>
+    </Set>
+  </Get>
+</Configure>
+----
+
+
+==  tomcat-users.xml
+
+
+[source,xml]
+----
+<tomcat-users>
+  <user name="manager" password="manager" roles="manager,user"/>
+  <user name="user" password="user" roles="user"/>
+</tomcat-users>
+----
+
+    
+
+==  web.xml
+
+
+[source,xml]
+----
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         metadata-complete="false"
+         version="2.5">
+
+  <display-name>OpenEJB Servlet Examples</display-name>
+
+  <servlet>
+    <servlet-name>AnnotatedServlet</servlet-name>
+    <servlet-class>org.superbiz.servlet.AnnotatedServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>AnnotatedServlet</servlet-name>
+    <url-pattern>/annotated/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>JpaServlet</servlet-name>
+    <servlet-class>org.superbiz.servlet.JpaServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>JpaServlet</servlet-name>
+    <url-pattern>/jpa/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>JndiServlet</servlet-name>
+    <servlet-class>org.superbiz.servlet.JndiServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>JndiServlet</servlet-name>
+    <url-pattern>/jndi/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>RunAsServlet</servlet-name>
+    <servlet-class>org.superbiz.servlet.RunAsServlet</servlet-class>
+    <run-as>
+      <role-name>fake</role-name>
+    </run-as>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>RunAsServlet</servlet-name>
+    <url-pattern>/runas/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>SecureServlet</servlet-name>
+    <servlet-class>org.superbiz.servlet.SecureServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>SecureServlet</servlet-name>
+    <url-pattern>/secure/*</url-pattern>
+  </servlet-mapping>
+
+  <security-constraint>
+    <web-resource-collection>
+      <web-resource-name>Secure Area</web-resource-name>
+      <url-pattern>/secure/*</url-pattern>
+      <url-pattern>/runas/*</url-pattern>
+    </web-resource-collection>
+    <auth-constraint>
+      <role-name>user</role-name>
+    </auth-constraint>
+  </security-constraint>
+
+  <servlet>
+    <servlet-name>WebserviceServlet</servlet-name>
+    <servlet-class>org.superbiz.servlet.WebserviceServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>WebserviceServlet</servlet-name>
+    <url-pattern>/webservice/*</url-pattern>
+  </servlet-mapping>
+
+
+  <servlet>
+    <servlet-name>HelloPojoService</servlet-name>
+    <servlet-class>org.superbiz.servlet.HelloPojoService</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>HelloPojoService</servlet-name>
+    <url-pattern>/hello</url-pattern>
+  </servlet-mapping>
+
+  <login-config>
+    <auth-method>BASIC</auth-method>
+  </login-config>
+
+  <security-role>
+    <role-name>manager</role-name>
+  </security-role>
+
+  <security-role>
+    <role-name>user</role-name>
+  </security-role>
+
+  <env-entry>
+    <env-entry-name>web.xml/env-entry</env-entry-name>
+    <env-entry-type>java.lang.String</env-entry-type>
+    <env-entry-value>WebValue</env-entry-value>
+  </env-entry>
+
+  <resource-ref>
+    <res-ref-name>web.xml/Data Source</res-ref-name>
+    <res-type>javax.sql.DataSource</res-type>
+    <res-auth>Container</res-auth>
+  </resource-ref>
+
+  <resource-env-ref>
+    <resource-env-ref-name>web.xml/Queue</resource-env-ref-name>
+    <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
+  </resource-env-ref>
+
+  <ejb-ref>
+    <ejb-ref-name>web.xml/EjbRemote</ejb-ref-name>
+    <ejb-ref-type>Session</ejb-ref-type>
+    <remote>org.superbiz.servlet.AnnotatedEJBRemote</remote>
+  </ejb-ref>
+
+  <ejb-local-ref>
+    <ejb-ref-name>web.xml/EjLocal</ejb-ref-name>
+    <ejb-ref-type>Session</ejb-ref-type>
+    <local>org.superbiz.servlet.AnnotatedEJBLocal</local>
+  </ejb-local-ref>
+
+  <persistence-unit-ref>
+    <persistence-unit-ref-name>web.xml/PersistenceUnit</persistence-unit-ref-name>
+    <persistence-unit-name>jpa-example</persistence-unit-name>
+  </persistence-unit-ref>
+
+  <persistence-context-ref>
+    <persistence-context-ref-name>web.xml/PersistenceContext</persistence-context-ref-name>
+    <persistence-unit-name>jpa-example</persistence-unit-name>
+    <persistence-context-type>Transactional</persistence-context-type>
+  </persistence-context-ref>
+</web-app>
+----
+
+    
diff --git a/src/main/jbake/content/examples/ejb-webservice.adoc b/src/main/jbake/content/examples/ejb-webservice.adoc
new file mode 100755
index 0000000..0d21d16
--- /dev/null
+++ b/src/main/jbake/content/examples/ejb-webservice.adoc
@@ -0,0 +1,52 @@
+= EJB Webservice
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example ejb-webservice can be browsed at https://github.com/apache/tomee/tree/master/examples/ejb-webservice
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Calculator
+
+
+[source,java]
+----
+package org.superbiz.ws;
+
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+
+@Stateless
+@WebService(portName = "CalculatorPort",
+        serviceName = "CalculatorWebService",
+        targetNamespace = "http://superbiz.org/wsdl")
+public class Calculator {
+    public int sum(int add1, int add2) {
+        return add1 + add2;
+    }
+
+    public int multiply(int mul1, int mul2) {
+        return mul1 * mul2;
+    }
+}
+----
+
+
+==  web.xml
+
+
+[source,xml]
+----
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         metadata-complete="false"
+         version="2.5">
+
+</web-app>
+----
+
+    
diff --git a/src/main/jbake/content/examples/groovy-cdi.adoc b/src/main/jbake/content/examples/groovy-cdi.adoc
new file mode 100755
index 0000000..0e0a6a0
--- /dev/null
+++ b/src/main/jbake/content/examples/groovy-cdi.adoc
@@ -0,0 +1,9 @@
+= groovy-cdi
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example groovy-cdi can be browsed at https://github.com/apache/tomee/tree/master/examples/groovy-cdi
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/groovy-jpa.adoc b/src/main/jbake/content/examples/groovy-jpa.adoc
new file mode 100755
index 0000000..91f9218
--- /dev/null
+++ b/src/main/jbake/content/examples/groovy-jpa.adoc
@@ -0,0 +1,9 @@
+= groovy-jpa
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example groovy-jpa can be browsed at https://github.com/apache/tomee/tree/master/examples/groovy-jpa
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/groovy-spock.adoc b/src/main/jbake/content/examples/groovy-spock.adoc
new file mode 100755
index 0000000..203cddc
--- /dev/null
+++ b/src/main/jbake/content/examples/groovy-spock.adoc
@@ -0,0 +1,9 @@
+= groovy-spock
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example groovy-spock can be browsed at https://github.com/apache/tomee/tree/master/examples/groovy-spock
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/helloworld-weblogic.adoc b/src/main/jbake/content/examples/helloworld-weblogic.adoc
new file mode 100755
index 0000000..dd8279e
--- /dev/null
+++ b/src/main/jbake/content/examples/helloworld-weblogic.adoc
@@ -0,0 +1,169 @@
+= Helloworld Weblogic
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example helloworld-weblogic can be browsed at https://github.com/apache/tomee/tree/master/examples/helloworld-weblogic
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  HelloBean
+
+
+[source,java]
+----
+package org.superbiz.hello;
+
+import javax.ejb.LocalHome;
+import javax.ejb.Stateless;
+
+/**
+ * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+@Stateless
+@LocalHome(HelloEjbLocalHome.class)
+public class HelloBean {
+
+    public String sayHello() {
+        return "Hello, World!";
+    }
+}
+----
+
+
+==  HelloEjbLocal
+
+
+[source,java]
+----
+package org.superbiz.hello;
+
+import javax.ejb.EJBLocalObject;
+
+/**
+ * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public interface HelloEjbLocal extends EJBLocalObject {
+
+    String sayHello();
+}
+----
+
+
+==  HelloEjbLocalHome
+
+
+[source,java]
+----
+package org.superbiz.hello;
+
+import javax.ejb.CreateException;
+import javax.ejb.EJBLocalHome;
+
+/**
+ * @version $Revision: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public interface HelloEjbLocalHome extends EJBLocalHome {
+    HelloEjbLocal create() throws CreateException;
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar/>
+----
+
+
+==  weblogic-ejb-jar.xml
+
+
+[source,xml]
+----
+<weblogic-ejb-jar>
+  <weblogic-enterprise-bean>
+    <ejb-name>HelloBean</ejb-name>
+    <local-jndi-name>MyHello</local-jndi-name>
+  </weblogic-enterprise-bean>
+</weblogic-ejb-jar>
+----
+
+    
+    
+
+==  HelloTest
+
+
+[source,java]
+----
+package org.superbiz.hello;
+
+import junit.framework.TestCase;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+/**
+ * @version $Revision: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class HelloTest extends TestCase {
+
+    public void test() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        InitialContext initialContext = new InitialContext(properties);
+
+        HelloEjbLocalHome localHome = (HelloEjbLocalHome) initialContext.lookup("MyHello");
+        HelloEjbLocal helloEjb = localHome.create();
+
+        String message = helloEjb.sayHello();
+
+        assertEquals(message, "Hello, World!");
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.hello.HelloTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/helloworld-weblogic
+INFO - openejb.base = /Users/dblevins/examples/helloworld-weblogic
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/helloworld-weblogic/target/classes
+INFO - Beginning load: /Users/dblevins/examples/helloworld-weblogic/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/helloworld-weblogic/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean HelloBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/helloworld-weblogic/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/helloworld-weblogic/classpath.ear
+INFO - Jndi(name=MyHello) --> Ejb(deployment-id=HelloBean)
+INFO - Jndi(name=global/classpath.ear/helloworld-weblogic/HelloBean!org.superbiz.hello.HelloEjbLocalHome) --> Ejb(deployment-id=HelloBean)
+INFO - Jndi(name=global/classpath.ear/helloworld-weblogic/HelloBean) --> Ejb(deployment-id=HelloBean)
+INFO - Created Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/helloworld-weblogic/classpath.ear)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.414 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/index-ng.adoc b/src/main/jbake/content/examples/index-ng.adoc
new file mode 100755
index 0000000..822efdd
--- /dev/null
+++ b/src/main/jbake/content/examples/index-ng.adoc
@@ -0,0 +1,5 @@
+= Examples
+:jbake-date: 2016-08-30
+:jbake-type: examples
+:jbake-status: published
+:jbake-tomeepdf:
diff --git a/src/main/jbake/content/examples/index.adoc b/src/main/jbake/content/examples/index.adoc
new file mode 100755
index 0000000..822efdd
--- /dev/null
+++ b/src/main/jbake/content/examples/index.adoc
@@ -0,0 +1,5 @@
+= Examples
+:jbake-date: 2016-08-30
+:jbake-type: examples
+:jbake-status: published
+:jbake-tomeepdf:
diff --git a/src/main/jbake/content/examples/injection-of-connectionfactory.adoc b/src/main/jbake/content/examples/injection-of-connectionfactory.adoc
new file mode 100755
index 0000000..c861c7b
--- /dev/null
+++ b/src/main/jbake/content/examples/injection-of-connectionfactory.adoc
@@ -0,0 +1,180 @@
+= Injection Of Connectionfactory
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example injection-of-connectionfactory can be browsed at https://github.com/apache/tomee/tree/master/examples/injection-of-connectionfactory
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Messages
+
+
+[source,java]
+----
+package org.superbiz.injection.jms;
+
+import javax.annotation.Resource;
+import javax.ejb.Stateless;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+@Stateless
+public class Messages {
+
+    @Resource
+    private ConnectionFactory connectionFactory;
+
+    @Resource
+    private Queue chatQueue;
+
+
+    public void sendMessage(String text) throws JMSException {
+
+        Connection connection = null;
+        Session session = null;
+
+        try {
+            connection = connectionFactory.createConnection();
+            connection.start();
+
+            // Create a Session
+            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            // Create a MessageProducer from the Session to the Topic or Queue
+            MessageProducer producer = session.createProducer(chatQueue);
+            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+
+            // Create a message
+            TextMessage message = session.createTextMessage(text);
+
+            // Tell the producer to send the message
+            producer.send(message);
+        } finally {
+            // Clean up
+            if (session != null) session.close();
+            if (connection != null) connection.close();
+        }
+    }
+
+    public String receiveMessage() throws JMSException {
+
+        Connection connection = null;
+        Session session = null;
+        MessageConsumer consumer = null;
+        try {
+            connection = connectionFactory.createConnection();
+            connection.start();
+
+            // Create a Session
+            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            // Create a MessageConsumer from the Session to the Topic or Queue
+            consumer = session.createConsumer(chatQueue);
+
+            // Wait for a message
+            TextMessage message = (TextMessage) consumer.receive(1000);
+
+            return message.getText();
+        } finally {
+            if (consumer != null) consumer.close();
+            if (session != null) session.close();
+            if (connection != null) connection.close();
+        }
+    }
+}
+----
+
+
+==  MessagingBeanTest
+
+
+[source,java]
+----
+package org.superbiz.injection.jms;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+public class MessagingBeanTest extends TestCase {
+
+    public void test() throws Exception {
+
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        Messages messages = (Messages) context.lookup("java:global/injection-of-connectionfactory/Messages");
+
+        messages.sendMessage("Hello World!");
+        messages.sendMessage("How are you?");
+        messages.sendMessage("Still spinning?");
+
+        assertEquals(messages.receiveMessage(), "Hello World!");
+        assertEquals(messages.receiveMessage(), "How are you?");
+        assertEquals(messages.receiveMessage(), "Still spinning?");
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.jms.MessagingBeanTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-connectionfactory
+INFO - openejb.base = /Users/dblevins/examples/injection-of-connectionfactory
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-connectionfactory/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-connectionfactory/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-connectionfactory
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Messages: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)
+INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'Messages'.
+INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)
+INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.injection.jms.Messages/connectionFactory' in bean Messages to Resource(id=Default JMS Connection Factory)
+INFO - Configuring Service(id=org.superbiz.injection.jms.Messages/chatQueue, type=Resource, provider-id=Default Queue)
+INFO - Auto-creating a Resource with id 'org.superbiz.injection.jms.Messages/chatQueue' of type 'javax.jms.Queue for 'Messages'.
+INFO - Auto-linking resource-env-ref 'java:comp/env/org.superbiz.injection.jms.Messages/chatQueue' in bean Messages to Resource(id=org.superbiz.injection.jms.Messages/chatQueue)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.jms.MessagingBeanTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-connectionfactory" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-connectionfactory
+INFO - Jndi(name="java:global/injection-of-connectionfactory/Messages!org.superbiz.injection.jms.Messages")
+INFO - Jndi(name="java:global/injection-of-connectionfactory/Messages")
+INFO - Jndi(name="java:global/EjbModule1634151355/org.superbiz.injection.jms.MessagingBeanTest!org.superbiz.injection.jms.MessagingBeanTest")
+INFO - Jndi(name="java:global/EjbModule1634151355/org.superbiz.injection.jms.MessagingBeanTest")
+INFO - Created Ejb(deployment-id=Messages, ejb-name=Messages, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.jms.MessagingBeanTest, ejb-name=org.superbiz.injection.jms.MessagingBeanTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Messages, ejb-name=Messages, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.jms.MessagingBeanTest, ejb-name=org.superbiz.injection.jms.MessagingBeanTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-connectionfactory)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.562 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/injection-of-datasource.adoc b/src/main/jbake/content/examples/injection-of-datasource.adoc
new file mode 100755
index 0000000..4637a56
--- /dev/null
+++ b/src/main/jbake/content/examples/injection-of-datasource.adoc
@@ -0,0 +1,248 @@
+= Injection Of Datasource
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example injection-of-datasource can be browsed at https://github.com/apache/tomee/tree/master/examples/injection-of-datasource
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection;
+
+/**
+ * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class Movie {
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.ejb.Stateful;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    /**
+     * The field name "movieDatabase" matches the DataSource we
+     * configure in the TestCase via :
+     * p.put("movieDatabase", "new://Resource?type=DataSource");
+     * <p/>
+     * This would also match an equivalent delcaration in an openejb.xml:
+     * <Resource id="movieDatabase" type="DataSource"/>
+     * <p/>
+     * If you'd like the freedom to change the field name without
+     * impact on your configuration you can set the "name" attribute
+     * of the @Resource annotation to "movieDatabase" instead.
+     */
+    @Resource
+    private DataSource movieDatabase;
+
+    @PostConstruct
+    private void construct() throws Exception {
+        Connection connection = movieDatabase.getConnection();
+        try {
+            PreparedStatement stmt = connection.prepareStatement("CREATE TABLE movie ( director VARCHAR(255), title VARCHAR(255), year integer)");
+            stmt.execute();
+        } finally {
+            connection.close();
+        }
+    }
+
+    public void addMovie(Movie movie) throws Exception {
+        Connection conn = movieDatabase.getConnection();
+        try {
+            PreparedStatement sql = conn.prepareStatement("INSERT into movie (director, title, year) values (?, ?, ?)");
+            sql.setString(1, movie.getDirector());
+            sql.setString(2, movie.getTitle());
+            sql.setInt(3, movie.getYear());
+            sql.execute();
+        } finally {
+            conn.close();
+        }
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        Connection conn = movieDatabase.getConnection();
+        try {
+            PreparedStatement sql = conn.prepareStatement("DELETE from movie where director = ? AND title = ? AND year = ?");
+            sql.setString(1, movie.getDirector());
+            sql.setString(2, movie.getTitle());
+            sql.setInt(3, movie.getYear());
+            sql.execute();
+        } finally {
+            conn.close();
+        }
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        ArrayList<Movie> movies = new ArrayList<Movie>();
+        Connection conn = movieDatabase.getConnection();
+        try {
+            PreparedStatement sql = conn.prepareStatement("SELECT director, title, year from movie");
+            ResultSet set = sql.executeQuery();
+            while (set.next()) {
+                Movie movie = new Movie();
+                movie.setDirector(set.getString("director"));
+                movie.setTitle(set.getString("title"));
+                movie.setYear(set.getInt("year"));
+                movies.add(movie);
+            }
+        } finally {
+            conn.close();
+        }
+        return movies;
+    }
+}
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.List;
+import java.util.Properties;
+
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    public void test() throws Exception {
+
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        Context context = EJBContainer.createEJBContainer(p).getContext();
+
+        Movies movies = (Movies) context.lookup("java:global/injection-of-datasource/Movies");
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-datasource
+INFO - openejb.base = /Users/dblevins/examples/injection-of-datasource
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-datasource/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-datasource/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-datasource
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.injection.Movies/movieDatabase' in bean Movies to Resource(id=movieDatabase)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-datasource" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-datasource
+INFO - Jndi(name="java:global/injection-of-datasource/Movies!org.superbiz.injection.Movies")
+INFO - Jndi(name="java:global/injection-of-datasource/Movies")
+INFO - Jndi(name="java:global/EjbModule1508028338/org.superbiz.injection.MoviesTest!org.superbiz.injection.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1508028338/org.superbiz.injection.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.MoviesTest, ejb-name=org.superbiz.injection.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.MoviesTest, ejb-name=org.superbiz.injection.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-datasource)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.276 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/injection-of-ejbs.adoc b/src/main/jbake/content/examples/injection-of-ejbs.adoc
new file mode 100755
index 0000000..4eb9b59
--- /dev/null
+++ b/src/main/jbake/content/examples/injection-of-ejbs.adoc
@@ -0,0 +1,234 @@
+= Injection Of Ejbs
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example injection-of-ejbs can be browsed at https://github.com/apache/tomee/tree/master/examples/injection-of-ejbs
+
+
+This example shows how to use the @EJB annotation on a bean class to refer to other beans.
+
+This functionality is often referred as dependency injection (see
+http://www.martinfowler.com/articles/injection.html), and has been recently introduced in
+Java EE 5.
+
+In this particular example, we will create two session stateless beans
+
+  * a DataStore session bean
+  * a DataReader session bean
+
+The DataReader bean uses the DataStore to retrieve some informations, and
+we will see how we can, inside the DataReader bean, get a reference to the
+DataStore bean using the @EJB annotation, thus avoiding the use of the
+JNDI API.
+
+==  DataReader
+
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+
+/**
+ * This is an EJB 3.1 style pojo stateless session bean
+ * Every stateless session bean implementation must be annotated
+ * using the annotation @Stateless
+ * This EJB has 2 business interfaces: DataReaderRemote, a remote business
+ * interface, and DataReaderLocal, a local business interface
+ * <p/>
+ * The instance variables 'dataStoreRemote' is annotated with the @EJB annotation:
+ * this means that the application server, at runtime, will inject in this instance
+ * variable a reference to the EJB DataStoreRemote
+ * <p/>
+ * The instance variables 'dataStoreLocal' is annotated with the @EJB annotation:
+ * this means that the application server, at runtime, will inject in this instance
+ * variable a reference to the EJB DataStoreLocal
+ */
+//START SNIPPET: code
+@Stateless
+public class DataReader {
+
+    @EJB
+    private DataStoreRemote dataStoreRemote;
+    @EJB
+    private DataStoreLocal dataStoreLocal;
+    @EJB
+    private DataStore dataStore;
+
+    public String readDataFromLocalStore() {
+        return "LOCAL:" + dataStoreLocal.getData();
+    }
+
+    public String readDataFromLocalBeanStore() {
+        return "LOCALBEAN:" + dataStore.getData();
+    }
+
+    public String readDataFromRemoteStore() {
+        return "REMOTE:" + dataStoreRemote.getData();
+    }
+}
+----
+
+
+==  DataStore
+
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.LocalBean;
+import javax.ejb.Stateless;
+
+/**
+ * This is an EJB 3 style pojo stateless session bean
+ * Every stateless session bean implementation must be annotated
+ * using the annotation @Stateless
+ * This EJB has 2 business interfaces: DataStoreRemote, a remote business
+ * interface, and DataStoreLocal, a local business interface
+ */
+//START SNIPPET: code
+@Stateless
+@LocalBean
+public class DataStore implements DataStoreLocal, DataStoreRemote {
+
+    public String getData() {
+        return "42";
+    }
+}
+----
+
+
+==  DataStoreLocal
+
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.Local;
+
+/**
+ * This is an EJB 3 local business interface
+ * A local business interface may be annotated with the @Local
+ * annotation, but it's optional. A business interface which is
+ * not annotated with @Local or @Remote is assumed to be Local
+ */
+//START SNIPPET: code
+@Local
+public interface DataStoreLocal {
+
+    public String getData();
+}
+----
+
+
+==  DataStoreRemote
+
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.Remote;
+
+/**
+ * This is an EJB 3 remote business interface
+ * A remote business interface must be annotated with the @Remote
+ * annotation
+ */
+//START SNIPPET: code
+@Remote
+public interface DataStoreRemote {
+
+    public String getData();
+}
+----
+
+
+==  EjbDependencyTest
+
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+/**
+ * A test case for DataReaderImpl ejb, testing both the remote and local interface
+ */
+//START SNIPPET: code
+public class EjbDependencyTest extends TestCase {
+
+    public void test() throws Exception {
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        DataReader dataReader = (DataReader) context.lookup("java:global/injection-of-ejbs/DataReader");
+
+        assertNotNull(dataReader);
+
+        assertEquals("LOCAL:42", dataReader.readDataFromLocalStore());
+        assertEquals("REMOTE:42", dataReader.readDataFromRemoteStore());
+        assertEquals("LOCALBEAN:42", dataReader.readDataFromLocalBeanStore());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.EjbDependencyTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-ejbs
+INFO - openejb.base = /Users/dblevins/examples/injection-of-ejbs
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-ejbs/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-ejbs/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-ejbs
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean DataReader: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.EjbDependencyTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-ejbs" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-ejbs
+INFO - Jndi(name="java:global/injection-of-ejbs/DataReader!org.superbiz.injection.DataReader")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataReader")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStore")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreLocal")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreRemote")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore")
+INFO - Jndi(name="java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest!org.superbiz.injection.EjbDependencyTest")
+INFO - Jndi(name="java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest")
+INFO - Created Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-ejbs)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.225 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/injection-of-entitymanager.adoc b/src/main/jbake/content/examples/injection-of-entitymanager.adoc
new file mode 100755
index 0000000..e80e407
--- /dev/null
+++ b/src/main/jbake/content/examples/injection-of-entitymanager.adoc
@@ -0,0 +1,249 @@
+= Injection Of Entitymanager
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example injection-of-entitymanager can be browsed at https://github.com/apache/tomee/tree/master/examples/injection-of-entitymanager
+
+
+This example shows use of `@PersistenceContext` to have an `EntityManager` with an
+`EXTENDED` persistence context injected into a `@Stateful bean`. A JPA
+`@Entity` bean is used with the `EntityManager` to create, persist and merge
+data to a database.
+
+==  Creating the JPA Entity
+
+The entity itself is simply a pojo annotated with `@Entity`.  We create one called `Movie` which we can use to hold movie records.
+
+
+[source,java]
+----
+package org.superbiz.injection.jpa;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    @Id @GeneratedValue
+    private long id;
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+}
+----
+
+
+==  Configure the EntityManager via a persistence.xml file
+
+The above `Movie` entity can be created, removed, updated or deleted via an `EntityManager` object.  The `EntityManager` itself is
+configured via a `META-INF/persistence.xml` file that is placed in the same jar as the `Movie` entity.
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.jpa.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+Notice that the `Movie` entity is listed via a `<class>` element.  This is not required, but can help when testing or when the
+`Movie` class is located in a different jar than the jar containing the `persistence.xml` file.
+
+==  Injection via @PersistenceContext
+
+The `EntityManager` itself is created by the container using the information in the `persistence.xml`, so to use it at
+runtime, we simply need to request it be injected into one of our components.  We do this via `@PersistenceContext`
+
+The `@PersistenceContext` annotation can be used on any CDI bean, EJB, Servlet, Servlet Listener, Servlet Filter, or JSF ManagedBean.  If you don't use an EJB you will need to use a `UserTransaction` begin and commit transactions manually.  A transaction is required for any of the create, update or delete methods of the EntityManager to work.
+
+
+[source,java]
+----
+package org.superbiz.injection.jpa;
+
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+This particular `EntityManager` is injected as an `EXTENDED` persistence context, which simply means that the `EntityManager`
+is created when the `@Stateful` bean is created and destroyed when the `@Stateful` bean is destroyed.  Simply put, the
+data in the `EntityManager` is cached for the lifetime of the `@Stateful` bean.
+
+The use of `EXTENDED` persistence contexts is **only** available to `@Stateful` beans.  See the link:../../jpa-concepts.html[JPA Concepts] page for an high level explanation of what a "persistence context" really is and how it is significant to JPA.
+
+==  MoviesTest
+
+Testing JPA is quite easy, we can simply use the `EJBContainer` API to create a container in our test case.
+
+
+[source,java]
+----
+package org.superbiz.injection.jpa;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.List;
+import java.util.Properties;
+
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    public void test() throws Exception {
+
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        final Context context = EJBContainer.createEJBContainer(p).getContext();
+
+        Movies movies = (Movies) context.lookup("java:global/injection-of-entitymanager/Movies");
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+}
+----
+
+
+=  Running
+
+When we run our test case we should see output similar to the following.
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.jpa.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-entitymanager
+INFO - openejb.base = /Users/dblevins/examples/injection-of-entitymanager
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-entitymanager/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-entitymanager/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-entitymanager
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.jpa.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-entitymanager" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-entitymanager
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 462ms
+INFO - Jndi(name="java:global/injection-of-entitymanager/Movies!org.superbiz.injection.jpa.Movies")
+INFO - Jndi(name="java:global/injection-of-entitymanager/Movies")
+INFO - Jndi(name="java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest!org.superbiz.injection.jpa.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-entitymanager)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.301 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/injection-of-env-entry.adoc b/src/main/jbake/content/examples/injection-of-env-entry.adoc
new file mode 100755
index 0000000..add6d0e
--- /dev/null
+++ b/src/main/jbake/content/examples/injection-of-env-entry.adoc
@@ -0,0 +1,271 @@
+= Using EnvEntries
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example injection-of-env-entry can be browsed at https://github.com/apache/tomee/tree/master/examples/injection-of-env-entry
+
+
+The `@Resource` annotation can be used to inject several things including
+DataSources, Topics, Queues, etc.  Most of these are container supplied objects.
+
+It is possible, however, to supply your own values to be injected via an `<env-entry>`
+in your `ejb-jar.xml` or `web.xml` deployment descriptor.  Java EE 6 supported `<env-entry>` types
+are limited to the following:
+
+ - java.lang.String
+ - java.lang.Integer
+ - java.lang.Short
+ - java.lang.Float
+ - java.lang.Double
+ - java.lang.Byte
+ - java.lang.Character
+ - java.lang.Boolean
+ - java.lang.Class
+ - java.lang.Enum (any enum)
+
+See also the link:../custom-injection[Custom Injection] exmaple for a TomEE and OpenEJB feature that will let you
+use more than just the above types as well as declare `<env-entry>` items with a plain properties file.
+
+=  Using @Resource for basic properties
+
+The use of the `@Resource` annotation isn't limited to setters.  For
+example, this annotation could have been used on the corresponding *field*
+like so:
+
+
+[source,java]
+----
+@Resource
+private int maxLineItems;
+
+A fuller example might look like this:
+
+package org.superbiz.injection.enventry;
+
+import javax.annotation.Resource;
+import javax.ejb.Singleton;
+import java.util.Date;
+
+@Singleton
+public class Configuration {
+
+    @Resource
+    private String color;
+
+    @Resource
+    private Shape shape;
+
+    @Resource
+    private Class strategy;
+
+    @Resource(name = "date")
+    private long date;
+
+    public String getColor() {
+        return color;
+    }
+
+    public Shape getShape() {
+        return shape;
+    }
+
+    public Class getStrategy() {
+        return strategy;
+    }
+
+    public Date getDate() {
+        return new Date(date);
+    }
+}
+----
+
+
+Here we have an `@Singleton` bean called `Confuration` that has the following properties (`<env-entry>` items)
+
+- String color
+- Shape shape
+- Class strategy
+- long date
+
+==  Supplying @Resource values for <env-entry> items in ejb-jar.xml
+
+The values for our `color`, `shape`, `strategy` and `date` properties are supplied via `<env-entry>` elements in the `ejb-jar.xml` file or the
+`web.xml` file like so:
+
+
+
+[source,xml]
+----
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" metadata-complete="false">
+  <enterprise-beans>
+    <session>
+      <ejb-name>Configuration</ejb-name>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>orange</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>
+        <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>
+        <env-entry-value>TRIANGLE</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/strategy</env-entry-name>
+        <env-entry-type>java.lang.Class</env-entry-type>
+        <env-entry-value>org.superbiz.injection.enventry.Widget</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>
+        <env-entry-name>date</env-entry-name>
+        <env-entry-type>java.lang.Long</env-entry-type>
+        <env-entry-value>123456789</env-entry-value>
+      </env-entry>
+    </session>
+  </enterprise-beans>
+</ejb-jar>
+----
+
+
+
+===  Using the @Resource 'name' attribute
+
+Note that `date` was referenced by `name` as:
+
+
+[source,java]
+----
+@Resource(name = "date")
+private long date;
+
+When the `@Resource(name)` is used, you do not need to specify the full class name of the bean and can do it briefly like so:
+
+  <env-entry>
+    <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>
+    <env-entry-name>date</env-entry-name>
+    <env-entry-type>java.lang.Long</env-entry-type>
+    <env-entry-value>123456789</env-entry-value>
+  </env-entry>
+
+Conversly, `color` was not referenced by `name`
+
+@Resource
+private String color;
+
+When something is not referenced by `name` in the `@Resource` annotation a default name is created.  The format is essentially this:
+
+bean.getClass() + "/" + field.getName()
+
+So the default `name` of the above `color` property ends up being `org.superbiz.injection.enventry.Configuration/color`.  This is the name
+we must use when we attempt to decalre a value for it in xml.
+
+  <env-entry>
+    <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>
+    <env-entry-type>java.lang.String</env-entry-type>
+    <env-entry-value>orange</env-entry-value>
+  </env-entry>
+
+### @Resource and Enum (Enumerations)
+
+The `shape` field is actually a custom Java Enum type
+
+package org.superbiz.injection.enventry;
+
+public enum Shape {
+
+    CIRCLE,
+    TRIANGLE,
+    SQUARE
+}
+----
+
+
+As of Java EE 6, java.lang.Enum types are allowed as `<env-entry>` items.  Declaring one in xml is done using the actual enum's class name like so:
+
+          <env-entry>
+            <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>
+            <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>
+            <env-entry-value>TRIANGLE</env-entry-value>
+          </env-entry>
+
+Do not use `<env-entry-type>java.lang.Enum</env-entry-type>` or it will not work!
+
+==  ConfigurationTest
+
+
+[source,java]
+----
+package org.superbiz.injection.enventry;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.Date;
+
+public class ConfigurationTest extends TestCase {
+
+
+    public void test() throws Exception {
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        final Configuration configuration = (Configuration) context.lookup("java:global/injection-of-env-entry/Configuration");
+
+        assertEquals("orange", configuration.getColor());
+
+        assertEquals(Shape.TRIANGLE, configuration.getShape());
+
+        assertEquals(Widget.class, configuration.getStrategy());
+
+        assertEquals(new Date(123456789), configuration.getDate());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.enventry.ConfigurationTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-env-entry
+INFO - openejb.base = /Users/dblevins/examples/injection-of-env-entry
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-env-entry/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-env-entry/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-env-entry
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean Configuration: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.enventry.ConfigurationTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-env-entry" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-env-entry
+INFO - Jndi(name="java:global/injection-of-env-entry/Configuration!org.superbiz.injection.enventry.Configuration")
+INFO - Jndi(name="java:global/injection-of-env-entry/Configuration")
+INFO - Jndi(name="java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest!org.superbiz.injection.enventry.ConfigurationTest")
+INFO - Jndi(name="java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest")
+INFO - Created Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-env-entry)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.664 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/interceptors.adoc b/src/main/jbake/content/examples/interceptors.adoc
new file mode 100755
index 0000000..d59fc72
--- /dev/null
+++ b/src/main/jbake/content/examples/interceptors.adoc
@@ -0,0 +1,888 @@
+= Interceptors
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example interceptors can be browsed at https://github.com/apache/tomee/tree/master/examples/interceptors
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  ClassLevelInterceptorOne
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class ClassLevelInterceptorOne {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ClassLevelInterceptorSuperClassOne
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class ClassLevelInterceptorSuperClassOne {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ClassLevelInterceptorSuperClassTwo
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class ClassLevelInterceptorSuperClassTwo extends SuperClassOfClassLevelInterceptor {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ClassLevelInterceptorTwo
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class ClassLevelInterceptorTwo {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  DefaultInterceptorOne
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.annotation.PostConstruct;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class DefaultInterceptorOne {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+
+    @PostConstruct
+    protected void postConstructInterceptor(InvocationContext ic) throws Exception {
+        Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  DefaultInterceptorTwo
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class DefaultInterceptorTwo {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  FullyIntercepted
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.util.List;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public interface FullyIntercepted {
+
+    List<String> businessMethod();
+
+    List<String> methodWithDefaultInterceptorsExcluded();
+}
+----
+
+
+==  FullyInterceptedBean
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.ejb.Local;
+import javax.ejb.Stateless;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptors;
+import javax.interceptor.InvocationContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+@Stateless
+@Local
+@Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
+public class FullyInterceptedBean extends FullyInterceptedSuperClass implements FullyIntercepted {
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    public List<String> businessMethod() {
+        List<String> list = new ArrayList<String>();
+        list.add("businessMethod");
+        return list;
+    }
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    public List<String> methodWithDefaultInterceptorsExcluded() {
+        List<String> list = new ArrayList<String>();
+        list.add("methodWithDefaultInterceptorsExcluded");
+        return list;
+    }
+
+    @AroundInvoke
+    protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, "beanClassBusinessMethodInterceptor");
+    }
+}
+----
+
+
+==  FullyInterceptedSuperClass
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.Interceptors;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+@Interceptors({ClassLevelInterceptorSuperClassOne.class, ClassLevelInterceptorSuperClassTwo.class})
+public class FullyInterceptedSuperClass {
+}
+----
+
+
+==  MethodLevelInterceptorOne
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class MethodLevelInterceptorOne {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  MethodLevelInterceptorOnlyIntf
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.io.Serializable;
+import java.util.List;
+
+public interface MethodLevelInterceptorOnlyIntf<T extends Serializable> {
+    public List<T> makePersistent(T entity);
+}
+----
+
+
+==  MethodLevelInterceptorOnlyParent
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.util.List;
+
+public interface MethodLevelInterceptorOnlyParent extends MethodLevelInterceptorOnlyIntf<String> {
+
+    public List<String> makePersistent(String entity);
+}
+----
+
+
+==  MethodLevelInterceptorOnlySLSBean
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.ejb.Local;
+import javax.ejb.Stateless;
+import javax.interceptor.Interceptors;
+import java.util.ArrayList;
+import java.util.List;
+
+@Local(MethodLevelInterceptorOnlyParent.class)
+@Stateless
+public class MethodLevelInterceptorOnlySLSBean implements MethodLevelInterceptorOnlyParent {
+
+    @Interceptors(MethodLevelInterceptorOne.class)
+    public List<String> makePersistent(String entity) {
+        List<String> list = new ArrayList<String>();
+        list.add("makePersistent");
+        return list;
+    }
+}
+----
+
+
+==  MethodLevelInterceptorTwo
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class MethodLevelInterceptorTwo {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  SecondStatelessInterceptedBean
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.ejb.Stateless;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptors;
+import javax.interceptor.InvocationContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
+ */
+@Stateless
+@Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
+public class SecondStatelessInterceptedBean implements SecondStatelessInterceptedLocal {
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    public List<String> methodWithDefaultInterceptorsExcluded() {
+        List<String> list = new ArrayList<String>();
+        list.add("methodWithDefaultInterceptorsExcluded");
+        return list;
+    }
+
+    @AroundInvoke
+    protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  SecondStatelessInterceptedLocal
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.util.List;
+
+/**
+ * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
+ */
+public interface SecondStatelessInterceptedLocal {
+    List<String> methodWithDefaultInterceptorsExcluded();
+}
+----
+
+
+==  SuperClassOfClassLevelInterceptor
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.annotation.PostConstruct;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class SuperClassOfClassLevelInterceptor {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+
+    @PostConstruct
+    protected void postConstructInterceptor(InvocationContext ic) throws Exception {
+        Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ThirdSLSBean
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.ejb.Stateless;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.ExcludeClassInterceptors;
+import javax.interceptor.ExcludeDefaultInterceptors;
+import javax.interceptor.Interceptors;
+import javax.interceptor.InvocationContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+@Stateless
+@Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
+@ExcludeDefaultInterceptors
+public class ThirdSLSBean implements ThirdSLSBeanLocal {
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    public List<String> businessMethod() {
+        List<String> list = new ArrayList<String>();
+        list.add("businessMethod");
+        return list;
+    }
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    @ExcludeClassInterceptors
+    public List<String> anotherBusinessMethod() {
+        List<String> list = new ArrayList<String>();
+        list.add("anotherBusinessMethod");
+        return list;
+    }
+
+
+    @AroundInvoke
+    protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ThirdSLSBeanLocal
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.util.List;
+
+/**
+ * @version $Rev: 607320 $ $Date: 2007-12-28 12:15:06 -0800 (Fri, 28 Dec 2007) $
+ */
+public interface ThirdSLSBeanLocal {
+    List<String> businessMethod();
+
+    List<String> anotherBusinessMethod();
+}
+----
+
+
+==  Utils
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.InvocationContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
+ */
+public class Utils {
+
+    public static List<String> addClassSimpleName(InvocationContext ic, String classSimpleName) throws Exception {
+        List<String> list = new ArrayList<String>();
+        list.add(classSimpleName);
+        List<String> listOfStrings = (List<String>) ic.proceed();
+        if (listOfStrings != null) {
+            list.addAll(listOfStrings);
+        }
+        return list;
+    }
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0">
+  <interceptors>
+    <interceptor>
+      <interceptor-class>org.superbiz.interceptors.DefaultInterceptorOne</interceptor-class>
+    </interceptor>
+    <interceptor>
+      <interceptor-class>org.superbiz.interceptors.DefaultInterceptorTwo</interceptor-class>
+    </interceptor>
+  </interceptors>
+  <assembly-descriptor>
+    <interceptor-binding>
+      <ejb-name>*</ejb-name>
+      <interceptor-class>org.superbiz.interceptors.DefaultInterceptorOne</interceptor-class>
+    </interceptor-binding>
+    <interceptor-binding>
+      <ejb-name>*</ejb-name>
+      <interceptor-class>org.superbiz.interceptors.DefaultInterceptorTwo</interceptor-class>
+    </interceptor-binding>
+    <interceptor-binding>
+      <ejb-name>FullyInterceptedBean</ejb-name>
+      <exclude-default-interceptors>true</exclude-default-interceptors>
+      <method>
+        <method-name>methodWithDefaultInterceptorsExcluded</method-name>
+      </method>
+    </interceptor-binding>
+    <interceptor-binding>
+      <ejb-name>SecondStatelessInterceptedBean</ejb-name>
+      <exclude-default-interceptors>true</exclude-default-interceptors>
+    </interceptor-binding>
+    <interceptor-binding>
+      <ejb-name>MethodLevelInterceptorOnlySLSBean</ejb-name>
+      <exclude-default-interceptors>true</exclude-default-interceptors>
+    </interceptor-binding>
+  </assembly-descriptor>
+</ejb-jar>
+----
+
+
+==  FullyInterceptedTest
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import junit.framework.TestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class FullyInterceptedTest extends TestCase {
+
+    private InitialContext initCtx;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
+
+        initCtx = new InitialContext(properties);
+    }
+
+    @Test
+    public void testBusinessMethod() throws Exception {
+
+        FullyIntercepted fullyIntercepted = (FullyIntercepted) initCtx.lookup("FullyInterceptedBeanLocal");
+
+        assert fullyIntercepted != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("DefaultInterceptorOne");
+        expected.add("DefaultInterceptorTwo");
+        expected.add("ClassLevelInterceptorSuperClassOne");
+        expected.add("ClassLevelInterceptorSuperClassTwo");
+        expected.add("ClassLevelInterceptorOne");
+        expected.add("ClassLevelInterceptorTwo");
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("beanClassBusinessMethodInterceptor");
+        expected.add("businessMethod");
+
+        List<String> actual = fullyIntercepted.businessMethod();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+
+    @Test
+    public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
+
+        FullyIntercepted fullyIntercepted = (FullyIntercepted) initCtx.lookup("FullyInterceptedBeanLocal");
+
+        assert fullyIntercepted != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("ClassLevelInterceptorSuperClassOne");
+        expected.add("ClassLevelInterceptorSuperClassTwo");
+        expected.add("ClassLevelInterceptorOne");
+        expected.add("ClassLevelInterceptorTwo");
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("beanClassBusinessMethodInterceptor");
+        expected.add("methodWithDefaultInterceptorsExcluded");
+
+        List<String> actual = fullyIntercepted.methodWithDefaultInterceptorsExcluded();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        initCtx.close();
+    }
+}
+----
+
+
+==  MethodLevelInterceptorOnlyTest
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 895825 $ $Date: 2010-01-04 15:35:22 -0800 (Mon, 04 Jan 2010) $
+ */
+public class MethodLevelInterceptorOnlyTest extends TestCase {
+    private InitialContext initCtx;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
+
+        initCtx = new InitialContext(properties);
+    }
+
+    @Test
+    public void testInterceptedGenerifiedBusinessIntfMethod() throws Exception {
+        MethodLevelInterceptorOnlyParent bean = (MethodLevelInterceptorOnlyParent) initCtx.lookup("MethodLevelInterceptorOnlySLSBeanLocal");
+
+        assert bean != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("makePersistent");
+
+        List<String> actual = bean.makePersistent(null);
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+}
+----
+
+
+==  SecondStatelessInterceptedTest
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class SecondStatelessInterceptedTest extends TestCase {
+
+    private InitialContext initCtx;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
+
+        initCtx = new InitialContext(properties);
+    }
+
+    @Test
+    public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
+        SecondStatelessInterceptedLocal bean =
+                (SecondStatelessInterceptedLocal) initCtx.lookup("SecondStatelessInterceptedBeanLocal");
+
+        assert bean != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("ClassLevelInterceptorOne");
+        expected.add("ClassLevelInterceptorTwo");
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("SecondStatelessInterceptedBean");
+        expected.add("methodWithDefaultInterceptorsExcluded");
+
+        List<String> actual = bean.methodWithDefaultInterceptorsExcluded();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+}
+----
+
+
+==  ThirdSLSBeanTest
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class ThirdSLSBeanTest extends TestCase {
+    private InitialContext initCtx;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
+
+        initCtx = new InitialContext(properties);
+    }
+
+    @Test
+    public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
+        ThirdSLSBeanLocal bean = (ThirdSLSBeanLocal) initCtx.lookup("ThirdSLSBeanLocal");
+
+        assert bean != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("ClassLevelInterceptorOne");
+        expected.add("ClassLevelInterceptorTwo");
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("ThirdSLSBean");
+        expected.add("businessMethod");
+
+        List<String> actual = bean.businessMethod();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+
+    @Test
+    public void testMethodWithDefaultAndClassInterceptorsExcluded() throws Exception {
+        ThirdSLSBeanLocal bean = (ThirdSLSBeanLocal) initCtx.lookup("ThirdSLSBeanLocal");
+
+        assert bean != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("ThirdSLSBean");
+        expected.add("anotherBusinessMethod");
+
+        List<String> actual = bean.anotherBusinessMethod();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.interceptors.FullyInterceptedTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/interceptors
+INFO - openejb.base = /Users/dblevins/examples/interceptors
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Using 'openejb.deployments.classpath.include=.*interceptors/target/classes.*'
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/interceptors/target/classes
+INFO - Beginning load: /Users/dblevins/examples/interceptors/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/interceptors/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean FullyInterceptedBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/interceptors/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/interceptors/classpath.ear
+INFO - Jndi(name=FullyInterceptedBeanLocal) --> Ejb(deployment-id=FullyInterceptedBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/FullyInterceptedBean!org.superbiz.interceptors.FullyIntercepted) --> Ejb(deployment-id=FullyInterceptedBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/FullyInterceptedBean) --> Ejb(deployment-id=FullyInterceptedBean)
+INFO - Jndi(name=ThirdSLSBeanLocal) --> Ejb(deployment-id=ThirdSLSBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/ThirdSLSBean!org.superbiz.interceptors.ThirdSLSBeanLocal) --> Ejb(deployment-id=ThirdSLSBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/ThirdSLSBean) --> Ejb(deployment-id=ThirdSLSBean)
+INFO - Jndi(name=SecondStatelessInterceptedBeanLocal) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/SecondStatelessInterceptedBean!org.superbiz.interceptors.SecondStatelessInterceptedLocal) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/SecondStatelessInterceptedBean) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
+INFO - Jndi(name=MethodLevelInterceptorOnlySLSBeanLocal) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/MethodLevelInterceptorOnlySLSBean!org.superbiz.interceptors.MethodLevelInterceptorOnlyParent) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/MethodLevelInterceptorOnlySLSBean) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
+INFO - Created Ejb(deployment-id=ThirdSLSBean, ejb-name=ThirdSLSBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=SecondStatelessInterceptedBean, ejb-name=SecondStatelessInterceptedBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=FullyInterceptedBean, ejb-name=FullyInterceptedBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean, ejb-name=MethodLevelInterceptorOnlySLSBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=ThirdSLSBean, ejb-name=ThirdSLSBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=SecondStatelessInterceptedBean, ejb-name=SecondStatelessInterceptedBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=FullyInterceptedBean, ejb-name=FullyInterceptedBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean, ejb-name=MethodLevelInterceptorOnlySLSBean, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/interceptors/classpath.ear)
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.564 sec
+Running org.superbiz.interceptors.MethodLevelInterceptorOnlyTest
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
+Running org.superbiz.interceptors.SecondStatelessInterceptedTest
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
+Running org.superbiz.interceptors.ThirdSLSBeanTest
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
+
+Results :
+
+Tests run: 6, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/javamail.adoc b/src/main/jbake/content/examples/javamail.adoc
new file mode 100755
index 0000000..77141dd
--- /dev/null
+++ b/src/main/jbake/content/examples/javamail.adoc
@@ -0,0 +1,201 @@
+= Javamail API
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example javamail can be browsed at https://github.com/apache/tomee/tree/master/examples/javamail
+
+
+This is just a simple example to demonstrate a very basic usage of the API. It should be enough to get you started using the java mail packages.
+
+= The Code
+
+==  A simple REST service using the Javamail API
+
+Here we see a very simple RESTful endpoint that can be called with a message to send by Email. It would not be hard to modify the application to provide
+more useful configuration options. As is, this will not send anything, but if you change the parameters to match your mail server then you'll see the message being sent.
+You can find much more detailed information on the link:https://java.net/projects/javamail/pages/Home#Samples[Javamail API here]
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import javax.mail.Authenticator;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import java.util.Date;
+import java.util.Properties;
+
+@Path("/email")
+public class EmailService {
+
+    @POST
+    public String lowerCase(final String message) {
+
+        try {
+
+            //Create some properties and get the default Session
+            final Properties props = new Properties();
+            props.put("mail.smtp.host", "your.mailserver.host");
+            props.put("mail.debug", "true");
+
+            final Session session = Session.getInstance(props, new Authenticator() {
+                @Override
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return new PasswordAuthentication("MyUsername", "MyPassword");
+                }
+            });
+
+            //Set this just to see some internal logging
+            session.setDebug(true);
+
+            //Create a message
+            final MimeMessage msg = new MimeMessage(session);
+            msg.setFrom(new InternetAddress("your@email.address"));
+            final InternetAddress[] address = {new InternetAddress("general@tomitribe.com")};
+            msg.setRecipients(Message.RecipientType.TO, address);
+            msg.setSubject("JavaMail API test");
+            msg.setSentDate(new Date());
+            msg.setText(message, "UTF-8");
+
+
+            Transport.send(msg);
+        } catch (MessagingException e) {
+            return "Failed to send message: " + e.getMessage();
+        }
+
+        return "Sent";
+    }
+}
+----
+
+
+=  Testing
+
+==  Test for the JAXRS service
+
+The test uses the OpenEJB ApplicationComposer to make it trivial.
+
+The idea is first to activate the jaxrs services. This is done using @EnableServices annotation.
+
+Then we create on the fly the application simply returning an object representing the web.xml. Here we simply
+use it to define the context root but you can use it to define your REST Application too. And to complete the
+application definition we add @Classes annotation to define the set of classes to use in this app.
+
+Finally to test it we use cxf client API to call the REST service post() method.
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+@EnableServices(value = "jaxrs")
+@RunWith(ApplicationComposer.class)
+public class EmailServiceTest {
+
+    @Module
+    @Classes(EmailService.class)
+    public WebApp app() {
+        return new WebApp().contextRoot("test");
+    }
+
+    @Test
+    public void post() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/email/").post("Hello Tomitribe", String.class);
+        assertEquals("Failed to send message: Unknown SMTP host: your.mailserver.host", message);
+    }
+}
+----
+
+
+= Running
+
+Running the example is fairly simple. In the "javamail-api" directory run:
+
+    $ mvn clean install
+
+Which should create output like the following.
+
+    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Creating TransactionManager(id=Default Transaction Manager)
+    INFO - Creating SecurityService(id=Default Security Service)
+    INFO - Initializing network services
+    INFO - Creating ServerService(id=cxf-rs)
+    INFO - Creating ServerService(id=httpejbd)
+    INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+    INFO - Initializing network services
+    INFO -   ** Bound Services **
+    INFO -   NAME                 IP              PORT
+    INFO -   httpejbd             127.0.0.1       4204
+    INFO - -------
+    INFO - Ready!
+    INFO - Configuring enterprise application: D:\github\tomee\examples\javamail\EmailServiceTest
+    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+    INFO - Auto-creating a container for bean org.superbiz.rest.EmailServiceTest: Container(type=MANAGED, id=Default Managed Container)
+    INFO - Creating Container(id=Default Managed Container)
+    INFO - Using directory D:\windows\tmp for stateful session passivation
+    INFO - Configuring Service(id=comp/DefaultManagedExecutorService, type=Resource, provider-id=Default Executor Service)
+    INFO - Auto-creating a Resource with id 'comp/DefaultManagedExecutorService' of type 'javax.enterprise.concurrent.ManagedExecutorService for 'test'.
+    INFO - Configuring Service(id=comp/DefaultManagedScheduledExecutorService, type=Resource, provider-id=Default Scheduled Executor Service)
+    INFO - Auto-creating a Resource with id 'comp/DefaultManagedScheduledExecutorService' of type 'javax.enterprise.concurrent.ManagedScheduledExecutorService for 'test'.
+    INFO - Configuring Service(id=comp/DefaultManagedThreadFactory, type=Resource, provider-id=Default Managed Thread Factory)
+    INFO - Auto-creating a Resource with id 'comp/DefaultManagedThreadFactory' of type 'javax.enterprise.concurrent.ManagedThreadFactory for 'test'.
+    INFO - Enterprise application "D:\github\tomee\examples\javamail\EmailServiceTest" loaded.
+    INFO - Creating dedicated application classloader for EmailServiceTest
+    INFO - Assembling app: D:\github\tomee\examples\javamail\EmailServiceTest
+    INFO - Using providers:
+    INFO -      org.apache.johnzon.jaxrs.JohnzonProvider@2687f956
+    INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@1ded7b14
+    INFO -      org.apache.johnzon.jaxrs.JsrProvider@29be7749
+    INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@5f84abe8
+    INFO -      org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper@4650a407
+    INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@30135202
+    INFO - REST Application: http://127.0.0.1:4204/test/       -> org.apache.openejb.server.rest.InternalApplication
+    INFO -      Service URI: http://127.0.0.1:4204/test/email  -> Pojo org.superbiz.rest.EmailService
+    INFO -              POST http://127.0.0.1:4204/test/email/ ->      String lowerCase(String)
+    INFO - Deployed Application(path=D:\github\tomee\examples\javamail\EmailServiceTest)
+    DEBUG: JavaMail version 1.4ea
+    DEBUG: java.io.FileNotFoundException: D:\java\jdk8\jre\lib\javamail.providers (The system cannot find the file specified)
+    DEBUG: !anyLoaded
+    DEBUG: not loading resource: /META-INF/javamail.providers
+    DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
+    DEBUG: Tables of loaded providers
+    DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
+    DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
+    DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
+    DEBUG: !anyLoaded
+    DEBUG: not loading resource: /META-INF/javamail.address.map
+    DEBUG: java.io.FileNotFoundException: D:\java\jdk8\jre\lib\javamail.address.map (The system cannot find the file specified)
+    DEBUG: setDebug: JavaMail version 1.4ea
+    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
+    DEBUG SMTP: useEhlo true, useAuth false
+    DEBUG SMTP: trying to connect to host "your.mailserver.host", port 25, isSSL false
+    INFO - Undeploying app: D:\github\tomee\examples\javamail\EmailServiceTest
+    INFO - Stopping network services
+    INFO - Stopping server services
+
+
diff --git a/src/main/jbake/content/examples/jpa-eclipselink.adoc b/src/main/jbake/content/examples/jpa-eclipselink.adoc
new file mode 100755
index 0000000..21f9321
--- /dev/null
+++ b/src/main/jbake/content/examples/jpa-eclipselink.adoc
@@ -0,0 +1,239 @@
+= JPA Eclipselink
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jpa-eclipselink can be browsed at https://github.com/apache/tomee/tree/master/examples/jpa-eclipselink
+
+
+This example shows how to configure `persistence.xml` to work with Eclipselink. It uses an `@Entity` class and a `@Stateful` bean to add and delete entities from a database.
+
+==  Creating the JPA Entity
+
+The entity itself is simply a pojo annotated with `@Entity`.  We create one pojo called `Movie` which we can use to hold movie records.
+
+
+[source,java]
+----
+package org.superbiz.eclipselink;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Movie {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Database Operations
+
+This is the bean responsible for database operations; it allows us to persist or delete entities.
+For more information we recommend you to see link:http://tomee.apache.org/examples-trunk/injection-of-entitymanager/README.html[injection-of-entitymanager]
+
+
+
+[source,java]
+----
+package org.superbiz.eclipselink;
+
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  Persistence.xml with EclipseLink configuration
+
+This operation is too easy, just set the `provider` to `org.eclipse.persistence.jpa.PersistenceProvider` and add additional properties to the persistence unit. 
+The example has followed a strategy that allows the creation of tables in a HSQL database.
+For a complete list of persistence unit properties see link:http://www.eclipse.org/eclipselink/api/2.4/org/eclipse/persistence/config/PersistenceUnitProperties.html[here]
+
+
+[source,xml]
+----
+<persistence version="1.0"
+             xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+  <persistence-unit name="movie-unit">
+    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.HSQLPlatform"/>
+      <property name="eclipselink.ddl-generation" value="create-tables"/>
+      <property name="eclipselink.ddl-generation.output-mode" value="database"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+    
+
+==  MoviesTest
+
+Testing JPA is quite easy, we can simply use the `EJBContainer` API to create a container in our test case.
+
+
+[source,java]
+----
+package org.superbiz.eclipselink;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class MoviesTest extends TestCase {
+
+    public void test() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        final Context context = EJBContainer.createEJBContainer(p).getContext();
+
+        Movies movies = (Movies) context.lookup("java:global/jpa-eclipselink/Movies");
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+}
+----
+
+
+=  Running
+
+When we run our test case we should see output similar to the following.    
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.eclipselink.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/jpa-eclipselink
+INFO - openejb.base = /Users/dblevins/examples/jpa-eclipselink
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/jpa-eclipselink/target/classes
+INFO - Beginning load: /Users/dblevins/examples/jpa-eclipselink/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/jpa-eclipselink
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.eclipselink.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit, provider=org.eclipse.persistence.jpa.PersistenceProvider)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/jpa-eclipselink" loaded.
+INFO - Assembling app: /Users/dblevins/examples/jpa-eclipselink
+INFO - PersistenceUnit(name=movie-unit, provider=org.eclipse.persistence.jpa.PersistenceProvider) - provider time 511ms
+INFO - Jndi(name="java:global/jpa-eclipselink/Movies!org.superbiz.eclipselink.Movies")
+INFO - Jndi(name="java:global/jpa-eclipselink/Movies")
+INFO - Jndi(name="java:global/EjbModule225280863/org.superbiz.eclipselink.MoviesTest!org.superbiz.eclipselink.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule225280863/org.superbiz.eclipselink.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.eclipselink.MoviesTest, ejb-name=org.superbiz.eclipselink.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.eclipselink.MoviesTest, ejb-name=org.superbiz.eclipselink.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/jpa-eclipselink)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.188 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/jpa-enumerated.adoc b/src/main/jbake/content/examples/jpa-enumerated.adoc
new file mode 100755
index 0000000..38ec6ec
--- /dev/null
+++ b/src/main/jbake/content/examples/jpa-enumerated.adoc
@@ -0,0 +1,295 @@
+= JPA and Enums via @Enumerated
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jpa-enumerated can be browsed at https://github.com/apache/tomee/tree/master/examples/jpa-enumerated
+
+
+It can sometimes be desirable to have a Java `enum` type to represent a particular column in a database. JPA supports converting database data to and from Java `enum` types via the `@javax.persistence.Enumerated` annotation.
+
+This example will show basic `@Enumerated` usage in a field of an `@Entity` as well as `enum`s as the parameter of a `Query`.  We'll also see that the actual database representation can be effectively `String` or `int`.
+
+==  Enum
+
+For our example we will leverage the familiar `Movie` entity and add a new field to represent the MPAA.org rating of the movie.  This is defined via a simple `enum` that requires no JPA specific annotations.
+
+
+[source,java]
+----
+public enum Rating {
+    UNRATED,
+    G,
+    PG,
+    PG13,
+    R,
+    NC17
+}
+----
+
+
+==  @Enumerated
+
+In our `Movie` entity, we add a `rating` field of the enum type `Rating` and annotate it with `@Enumerated(EnumType.STRING)` to declare that its value should be converted from what is effectively a `String` in the database to the `Rating` type.
+
+
+[source,java]
+----
+@Entity
+public class Movie {
+
+    @Id
+    @GeneratedValue
+    private int id;
+    private String director;
+    private String title;
+    private int year;
+
+    @Enumerated(EnumType.STRING)
+    private Rating rating;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year, Rating rating) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+        this.rating = rating;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+    public Rating getRating() {
+        return rating;
+    }
+
+    public void setRating(Rating rating) {
+        this.rating = rating;
+    }
+}
+----
+
+
+The above is enough and we are effectively done.  For the sake of completeness we'll show a sample `Query`
+
+==  Enum in JPQL Query
+
+Note the `findByRating` method which creates a `Query` with a `rating` named parameter.  The key thing to notice is that the `rating` enum instance itself is passed into the
+ `query.setParameter` method, **not** `rating.name()` or `rating.ordinal()`.
+
+Regardless if you use `EnumType.STRING` or `EnumType.ORDINAL`, you still always pass the enum itself in calls to `query.setParameter`.
+
+
+[source,java]
+----
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> findByRating(Rating rating) {
+        final Query query = entityManager.createQuery("SELECT m FROM Movie as m WHERE m.rating = :rating");
+        query.setParameter("rating", rating);
+        return query.getResultList();
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+
+}
+----
+
+
+==  EnumType.STRING vs EnumType.ORDINAL
+
+It is a matter of style how you would like your `enum` data represented in the database.  Either `name()` or `ordinal()` are supported:
+
+ - `@Enumerated(EnumType.STRING) Rating rating` the value of `rating.name()` is written and read from the corresponding database column; e.g. `G`, `PG`, `PG13`
+ - `@Enumerated(EnumType.ORDINAL) Rating rating` the value of `rating.ordinal()` is written and read from the corresponding database column; e.g. `0`, `1`, `2`
+
+The default is `EnumType.ORDINAL`
+
+There are advantages and disadvantages to each.
+
+===  Disadvantage of EnumType.ORDINAL
+
+A disadvantage of `EnumType.ORDINAL` is the effect of time and the desire to keep `enums` in a logical order.  With `EnumType.ORDINAL` any new enum elements must be added to the
+**end** of the list or you will accidentally change the meaning of all your records.
+
+Let's use our `Rating` enum and see how it would have had to evolve over time to keep up with changes in the MPAA.org ratings system.
+
+**1980**
+
+
+[source,java]
+----
+public enum Rating {
+    G,
+    PG,
+    R,
+    UNRATED
+}
+----
+
+
+**1984** PG-13 is added
+
+
+[source,java]
+----
+public enum Rating {
+    G,
+    PG,
+    R,
+    UNRATED,
+    PG13
+}
+----
+
+
+**1990** NC-17 is added
+
+
+[source,java]
+----
+public enum Rating {
+    G,
+    PG,
+    R,
+    UNRATED,
+    PG13,
+    NC17
+}
+----
+
+
+If `EnumType.STRING` was used, then the enum could be reordered at anytime and would instead look as we have defined it originally with ratings starting at `G` and increasing in severity to `NC17` and eventually `UNRATED`.  With `EnumType.ORDINAL` the logical ordering would not have withstood the test of time as new values were added.
+
+If the order of the enum values is significant to your code, avoid `EnumType.ORDINAL`
+
+==  Unit Testing the JPA @Enumerated
+
+
+[source,java]
+----
+public class MoviesTest extends TestCase {
+
+    public void test() throws Exception {
+
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer container = EJBContainer.createEJBContainer(p);
+        final Context context = container.getContext();
+
+        final Movies movies = (Movies) context.lookup("java:global/jpa-scratch/Movies");
+
+        movies.addMovie(new Movie("James Frawley", "The Muppet Movie", 1979, Rating.G));
+        movies.addMovie(new Movie("Jim Henson", "The Great Muppet Caper", 1981, Rating.G));
+        movies.addMovie(new Movie("Frank Oz", "The Muppets Take Manhattan", 1984, Rating.G));
+        movies.addMovie(new Movie("James Bobin", "The Muppets", 2011, Rating.PG));
+
+        assertEquals("List.size()", 4, movies.getMovies().size());
+
+        assertEquals("List.size()", 3, movies.findByRating(Rating.G).size());
+
+        assertEquals("List.size()", 1, movies.findByRating(Rating.PG).size());
+
+        assertEquals("List.size()", 0, movies.findByRating(Rating.R).size());
+
+        container.close();
+    }
+}
+----
+
+
+=  Running
+
+To run the example via maven:
+
+    cd jpa-enumerated
+    mvn clean install
+
+Which will generate output similar to the following:
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.jpa.enums.MoviesTest
+Apache OpenEJB 4.0.0-beta-2    build: 20120115-08:26
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/openejb/examples/jpa-enumerated
+INFO - openejb.base = /Users/dblevins/openejb/examples/jpa-enumerated
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/openejb/examples/jpa-enumerated/target/classes
+INFO - Beginning load: /Users/dblevins/openejb/examples/jpa-enumerated/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/openejb/examples/jpa-enumerated
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.jpa.enums.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/openejb/examples/jpa-enumerated" loaded.
+INFO - Assembling app: /Users/dblevins/openejb/examples/jpa-enumerated
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 406ms
+INFO - Jndi(name="java:global/jpa-enumerated/Movies!org.superbiz.jpa.enums.Movies")
+INFO - Jndi(name="java:global/jpa-enumerated/Movies")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Deployed Application(path=/Users/dblevins/openejb/examples/jpa-enumerated)
+INFO - Undeploying app: /Users/dblevins/openejb/examples/jpa-enumerated
+INFO - Closing DataSource: movieDatabase
+INFO - Closing DataSource: movieDatabaseNonJta
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.831 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/jpa-hibernate.adoc b/src/main/jbake/content/examples/jpa-hibernate.adoc
new file mode 100755
index 0000000..f57ff1b
--- /dev/null
+++ b/src/main/jbake/content/examples/jpa-hibernate.adoc
@@ -0,0 +1,224 @@
+= JPA Hibernate
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jpa-hibernate can be browsed at https://github.com/apache/tomee/tree/master/examples/jpa-hibernate
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.h3jpa;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Movie {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.h3jpa;
+
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence version="1.0"
+             xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+  <persistence-unit name="movie-unit">
+    <provider>org.hibernate.ejb.HibernatePersistence</provider>
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+    
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.h3jpa;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class MoviesTest extends TestCase {
+
+    public void test() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        final Context context = EJBContainer.createEJBContainer(p).getContext();
+        Movies movies = (Movies) context.lookup("java:global/jpa-hibernate/Movies");
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.h3jpa.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/jpa-hibernate
+INFO - openejb.base = /Users/dblevins/examples/jpa-hibernate
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/jpa-hibernate/target/classes
+INFO - Beginning load: /Users/dblevins/examples/jpa-hibernate/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/jpa-hibernate
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.h3jpa.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit, provider=org.hibernate.ejb.HibernatePersistence)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/jpa-hibernate" loaded.
+INFO - Assembling app: /Users/dblevins/examples/jpa-hibernate
+INFO - PersistenceUnit(name=movie-unit, provider=org.hibernate.ejb.HibernatePersistence) - provider time 631ms
+INFO - Jndi(name="java:global/jpa-hibernate/Movies!org.superbiz.injection.h3jpa.Movies")
+INFO - Jndi(name="java:global/jpa-hibernate/Movies")
+INFO - Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest!org.superbiz.injection.h3jpa.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/jpa-hibernate)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.22 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/jsf-cdi-and-ejb.adoc b/src/main/jbake/content/examples/jsf-cdi-and-ejb.adoc
new file mode 100755
index 0000000..1d31e0a
--- /dev/null
+++ b/src/main/jbake/content/examples/jsf-cdi-and-ejb.adoc
@@ -0,0 +1,273 @@
+= JSF-CDI-EJB
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jsf-cdi-and-ejb can be browsed at https://github.com/apache/tomee/tree/master/examples/jsf-cdi-and-ejb
+
+
+The simple application contains a CDI managed bean `CalculatorBean`, which uses the `Calculator` EJB to add two numbers
+and display the results to the user. The EJB is injected in the managed bean using @Inject annotation.
+
+You could run this in the latest Apache TomEE link:https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/[snapshot]
+
+The complete source code is below but lets break down to look at some smaller snippets and see  how it works.
+
+
+A little note on the setup:
+
+As for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the
+war. In maven terms, they would be with scope 'provided'
+
+Also note that we use servlet 2.5 declaration in web.xml
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+  version="2.5">
+
+And we use 2.0 version of faces-config
+
+ <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+               version="2.0">
+
+To make this a cdi-aware-archive (i.e bean archive) an empty beans.xml is added in WEB-INF
+
+       <?xml version="1.0" encoding="UTF-8"?>
+
+       <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+         http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+       </beans>
+
+We'll first declare the FacesServlet in the web.xml
+
+      <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+      </servlet>
+
+FacesServlet acts as the master controller.
+
+We'll then create the calculator.xhtml file.
+
+           <h:outputText value='Enter first number'/>
+           <h:inputText value='#{calculatorBean.x}'/>
+           <h:outputText value='Enter second number'/>
+           <h:inputText value='#{calculatorBean.y}'/>
+           <h:commandButton action="#{calculatorBean.add}" value="Add"/>
+
+Notice how we've used the bean here. By default, the bean name would be the simple name of the bean
+class with the first letter in lower case.
+
+We've annotated the `CalculatorBean` with `@RequestScoped`.
+So when a request comes in, the bean is instantiated and placed in the request scope.
+
+<h:inputText value='#{calculatorBean.x}'/>
+
+Here, getX() method of calculatorBean is invoked and the resulting value is displayed.
+x being a Double, we rightly should see 0.0 displayed.
+
+When you change the value and submit the form, these entered values are bound using the setters
+in the bean and then the commandButton-action method is invoked.
+
+In this case, CalculatorBean#add() is invoked.
+
+Calculator#add() delegates the work to the ejb, gets the result, stores it
+and then returns what view is to be rendered.
+
+The return value "success" is checked up in faces-config navigation-rules
+and the respective page is rendered.
+
+In our case, 'result.xhtml' page is rendered where
+use EL and display the result from the request-scoped `calculatorBean`.
+
+= Source Code
+
+==  CalculatorBean
+
+
+[source,java]
+----
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+import javax.inject.Inject;
+
+@RequestScoped
+@Named
+public class CalculatorBean {
+    @Inject
+    Calculator calculator;
+    private double x;
+    private double y;
+    private double result;
+
+    public double getX() {
+        return x;
+    }
+
+    public void setX(double x) {
+        this.x = x;
+    }
+
+    public double getY() {
+        return y;
+    }
+
+    public void setY(double y) {
+        this.y = y;
+    }
+
+    public double getResult() {
+        return result;
+    }
+
+    public void setResult(double result) {
+        this.result = result;
+    }
+
+    public String add() {
+        result = calculator.add(x, y);
+        return "success";
+    }
+}
+----
+
+
+==  Calculator
+
+
+[source,java]
+----
+package org.superbiz.jsf;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class Calculator{
+
+    public double add(double x, double y) {
+        return x + y;
+    }
+}
+----
+
+
+
+= web.xml
+
+<?xml version="1.0"?>
+
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         version="2.5">
+
+  <description>MyProject web.xml</description>
+
+  <!-- Faces Servlet -->
+  <servlet>
+
+[source,xml]
+----
+<servlet-name>Faces Servlet</servlet-name>
+<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+<load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <!-- Faces Servlet Mapping -->
+  <servlet-mapping>
+<servlet-name>Faces Servlet</servlet-name>
+<url-pattern>*.jsf</url-pattern>
+  </servlet-mapping>
+
+  <!-- Welcome files -->
+  <welcome-file-list>
+<welcome-file>index.jsp</welcome-file>
+<welcome-file>index.html</welcome-file>
+  </welcome-file-list>
+
+</web-app>
+
+
+#Calculator.xhtml
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:f="http://java.sun.com/jsf/core"
+  xmlns:h="http://java.sun.com/jsf/html">
+
+
+<h:body bgcolor="white">
+<f:view>
+    <h:form>
+        <h:panelGrid columns="2">
+            <h:outputText value='Enter first number'/>
+            <h:inputText value='#{calculatorBean.x}'/>
+            <h:outputText value='Enter second number'/>
+            <h:inputText value='#{calculatorBean.y}'/>
+            <h:commandButton action="#{calculatorBean.add}" value="Add"/>
+        </h:panelGrid>
+    </h:form>
+</f:view>
+</h:body>
+</html>
+
+
+ #Result.xhtml
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:f="http://java.sun.com/jsf/core"
+  xmlns:h="http://java.sun.com/jsf/html">
+
+<h:body>
+<f:view>
+<h:form id="mainForm">
+    <h2><h:outputText value="Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }"/></h2>
+    <h:commandLink action="back">
+        <h:outputText value="Home"/>
+    </h:commandLink>
+</h:form>
+</f:view>
+</h:body>
+</html>
+
+ #faces-config.xml
+
+ <?xml version="1.0"?>
+ <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+   http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+           version="2.0">
+
+   <navigation-rule>
+ <from-view-id>/calculator.xhtml</from-view-id>
+ <navigation-case>
+   <from-outcome>success</from-outcome>
+   <to-view-id>/result.xhtml</to-view-id>
+ </navigation-case>
+   </navigation-rule>
+
+   <navigation-rule>
+ <from-view-id>/result.xhtml</from-view-id>
+ <navigation-case>
+   <from-outcome>back</from-outcome>
+   <to-view-id>/calculator.xhtml</to-view-id>
+ </navigation-case>
+   </navigation-rule>
+ </faces-config>
+
diff --git a/src/main/jbake/content/examples/jsf-managedBean-and-ejb.adoc b/src/main/jbake/content/examples/jsf-managedBean-and-ejb.adoc
new file mode 100755
index 0000000..cea24ba
--- /dev/null
+++ b/src/main/jbake/content/examples/jsf-managedBean-and-ejb.adoc
@@ -0,0 +1,277 @@
+= JSF Application that uses managed-bean and ejb
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jsf-managedBean-and-ejb can be browsed at https://github.com/apache/tomee/tree/master/examples/jsf-managedBean-and-ejb
+
+
+This is a simple web-app showing how to use dependency injection in JSF managed beans using TomEE.
+
+It contains a Local Stateless session bean `CalculatorImpl` which adds two numbers and returns the result.
+The application also contains a JSF managed bean `CalculatorBean`, which uses the EJB to add two numbers
+and display the results to the user. The EJB is injected in the managed bean using `@EJB` annotation.
+
+
+==  A little note on the setup:
+
+You could run this in the latest Apache TomEE link:https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/[snapshot]
+
+As for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the
+war. In maven terms, they would be with scope 'provided'
+
+Also note that we use servlet 2.5 declaration in web.xml
+    
+
+[source,xml]
+----
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns="http://java.sun.com/xml/ns/javaee"
+xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+version="2.5">
+
+And we use 2.0 version of faces-config
+
+ <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+   http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+           version="2.0">
+
+
+The complete source code is provided below but let's break down to look at some smaller snippets and see  how it works.
+
+We'll first declare the `FacesServlet` in the `web.xml`
+
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+`FacesServlet` acts as the master controller.
+
+We'll then create the `calculator.xhtml` file.
+
+       <h:outputText value='Enter first number'/>
+       <h:inputText value='#{calculatorBean.x}'/>
+       <h:outputText value='Enter second number'/>
+       <h:inputText value='#{calculatorBean.y}'/>
+       <h:commandButton action="#{calculatorBean.add}" value="Add"/>
+
+
+Notice how we've use the bean here.
+By default it is the simple class name of the managed bean.
+
+When a request comes in, the bean is instantiated and placed in the appropriate scope.
+By default, the bean is placed in the request scope.
+
+        <h:inputText value='#{calculatorBean.x}'/>
+
+Here, getX() method of calculatorBean is invoked and the resulting value is displayed.
+x being a Double, we rightly should see 0.0 displayed.
+
+When you change the value and submit the form, these entered values are bound using the setters
+in the bean and then the commandButton-action method is invoked.
+
+In this case, `CalculatorBean#add()` is invoked.
+
+`Calculator#add()` delegates the work to the ejb, gets the result, stores it
+and then instructs what view is to be rendered.
+
+You're right. The return value "success" is checked up in faces-config navigation-rules
+and the respective page is rendered.
+
+In our case, `result.xhtml` page is rendered.
+
+The request scoped `calculatorBean` is available here, and we use EL to display the values.
+
+## Source
+
+## Calculator
+
+package org.superbiz.jsf;
+
+import javax.ejb.Local;
+
+@Local
+public interface Calculator {
+    public double add(double x, double y);
+}
+
+
+## CalculatorBean
+
+package org.superbiz.jsf;
+
+import javax.ejb.EJB;
+import javax.faces.bean.ManagedBean;
+
+@ManagedBean
+public class CalculatorBean {
+    @EJB
+    Calculator calculator;
+    private double x;
+    private double y;
+    private double result;
+
+    public double getX() {
+        return x;
+    }
+
+    public void setX(double x) {
+        this.x = x;
+    }
+
+    public double getY() {
+        return y;
+    }
+
+    public void setY(double y) {
+        this.y = y;
+    }
+
+    public double getResult() {
+        return result;
+    }
+
+    public void setResult(double result) {
+        this.result = result;
+    }
+
+    public String add() {
+        result = calculator.add(x, y);
+        return "success";
+    }
+}
+
+## CalculatorImpl
+
+package org.superbiz.jsf;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class CalculatorImpl implements Calculator {
+
+    public double add(double x, double y) {
+        return x + y;
+    }
+}
+
+
+# web.xml
+
+<?xml version="1.0"?>
+
+    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+    version="2.5">
+
+    <description>MyProject web.xml</description>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+       <welcome-file>index.jsp</welcome-file>
+       <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+    </web-app>
+----
+
+
+    
+== Calculator.xhtml
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:h="http://java.sun.com/jsf/html">
+
+
+<h:body bgcolor="white">
+    <f:view>
+        <h:form>
+            <h:panelGrid columns="2">
+            <h:outputText value='Enter first number'/>
+           <h:inputText value='#{calculatorBean.x}'/>
+            <h:outputText value='Enter second number'/>
+            <h:inputText value='#{calculatorBean.y}'/>
+           <h:commandButton action="#{calculatorBean.add}" value="Add"/>
+            </h:panelGrid>
+        </h:form>
+   </f:view>
+</h:body>
+</html>
+
+
+##Result.xhtml
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:h="http://java.sun.com/jsf/html">
+
+<h:body>
+    <f:view>
+        <h:form id="mainForm">
+            <h2><h:outputText value="Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }"/></h2>
+            <h:commandLink action="back">
+            <h:outputText value="Home"/>
+            </h:commandLink>
+        </h:form>
+    </f:view>
+</h:body>
+</html>
+
+#faces-config.xml
+
+<?xml version="1.0"?>
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+version="2.0">
+
+<navigation-rule>
+    <from-view-id>/calculator.xhtml</from-view-id>
+    <navigation-case>
+        <from-outcome>success</from-outcome>
+        <to-view-id>/result.xhtml</to-view-id>
+    </navigation-case>
+</navigation-rule>
+
+<navigation-rule>
+    <from-view-id>/result.xhtml</from-view-id>
+    <navigation-case>
+        <from-outcome>back</from-outcome>
+        <to-view-id>/calculator.xhtml</to-view-id>
+    </navigation-case>
+</navigation-rule>
+</faces-config>
+
diff --git a/src/main/jbake/content/examples/lookup-of-ejbs-with-descriptor.adoc b/src/main/jbake/content/examples/lookup-of-ejbs-with-descriptor.adoc
new file mode 100755
index 0000000..cf72a6a
--- /dev/null
+++ b/src/main/jbake/content/examples/lookup-of-ejbs-with-descriptor.adoc
@@ -0,0 +1,229 @@
+= Lookup Of Ejbs with Descriptor
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example lookup-of-ejbs-with-descriptor can be browsed at https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs-with-descriptor
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  BlueBean
+
+
+[source,java]
+----
+package org.superbiz.ejblookup;
+
+import javax.ejb.EJBException;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+//START SNIPPET: code
+public class BlueBean implements Friend {
+
+    public String sayHello() {
+        return "Blue says, Hello!";
+    }
+
+    public String helloFromFriend() {
+        try {
+            Friend friend = (Friend) new InitialContext().lookup("java:comp/env/myFriend");
+            return "My friend " + friend.sayHello();
+        } catch (NamingException e) {
+            throw new EJBException(e);
+        }
+    }
+}
+----
+
+
+==  Friend
+
+
+[source,java]
+----
+package org.superbiz.ejblookup;
+
+/**
+ * This is an EJB 3 local business interface
+ * A local business interface may be annotated with the @Local
+ * annotation, but it's optional. A business interface which is
+ * not annotated with @Local or @Remote is assumed to be Local
+ * if the bean does not implement any other interfaces
+ */
+//START SNIPPET: code
+public interface Friend {
+
+    public String sayHello();
+
+    public String helloFromFriend();
+}
+----
+
+
+==  RedBean
+
+
+[source,java]
+----
+package org.superbiz.ejblookup;
+
+import javax.ejb.EJBException;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+//START SNIPPET: code
+public class RedBean implements Friend {
+
+    public String sayHello() {
+        return "Red says, Hello!";
+    }
+
+    public String helloFromFriend() {
+        try {
+            Friend friend = (Friend) new InitialContext().lookup("java:comp/env/myFriend");
+            return "My friend " + friend.sayHello();
+        } catch (NamingException e) {
+            throw new EJBException(e);
+        }
+    }
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee">
+
+  <!-- Notice this changes the global jndi name -->
+  <module-name>wombat</module-name>
+
+  <enterprise-beans>
+
+    <session>
+      <ejb-name>BlueBean</ejb-name>
+      <business-local>org.superbiz.ejblookup.Friend</business-local>
+      <ejb-class>org.superbiz.ejblookup.BlueBean</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+      <ejb-local-ref>
+        <ejb-ref-name>myFriend</ejb-ref-name>
+        <local>org.superbiz.ejblookup.Friend</local>
+        <ejb-link>RedBean</ejb-link>
+      </ejb-local-ref>
+    </session>
+
+    <session>
+      <ejb-name>RedBean</ejb-name>
+      <business-local>org.superbiz.ejblookup.Friend</business-local>
+      <ejb-class>org.superbiz.ejblookup.RedBean</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+      <ejb-local-ref>
+        <ejb-ref-name>myFriend</ejb-ref-name>
+        <local>org.superbiz.ejblookup.Friend</local>
+        <ejb-link>BlueBean</ejb-link>
+      </ejb-local-ref>
+    </session>
+
+  </enterprise-beans>
+</ejb-jar>
+----
+
+    
+
+==  EjbDependencyTest
+
+
+[source,java]
+----
+package org.superbiz.ejblookup;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+//START SNIPPET: code
+public class EjbDependencyTest extends TestCase {
+
+    private Context context;
+
+    protected void setUp() throws Exception {
+        context = EJBContainer.createEJBContainer().getContext();
+    }
+
+    public void testRed() throws Exception {
+
+        Friend red = (Friend) context.lookup("java:global/wombat/RedBean");
+
+        assertNotNull(red);
+        assertEquals("Red says, Hello!", red.sayHello());
+        assertEquals("My friend Blue says, Hello!", red.helloFromFriend());
+    }
+
+    public void testBlue() throws Exception {
+
+        Friend blue = (Friend) context.lookup("java:global/wombat/BlueBean");
+
+        assertNotNull(blue);
+        assertEquals("Blue says, Hello!", blue.sayHello());
+        assertEquals("My friend Red says, Hello!", blue.helloFromFriend());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.ejblookup.EjbDependencyTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/lookup-of-ejbs-with-descriptor
+INFO - openejb.base = /Users/dblevins/examples/lookup-of-ejbs-with-descriptor
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/lookup-of-ejbs-with-descriptor/target/classes
+INFO - Beginning load: /Users/dblevins/examples/lookup-of-ejbs-with-descriptor/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/lookup-of-ejbs-with-descriptor
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean BlueBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.ejblookup.EjbDependencyTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/lookup-of-ejbs-with-descriptor" loaded.
+INFO - Assembling app: /Users/dblevins/examples/lookup-of-ejbs-with-descriptor
+INFO - Jndi(name="java:global/wombat/BlueBean!org.superbiz.ejblookup.Friend")
+INFO - Jndi(name="java:global/wombat/BlueBean")
+INFO - Jndi(name="java:global/wombat/RedBean!org.superbiz.ejblookup.Friend")
+INFO - Jndi(name="java:global/wombat/RedBean")
+INFO - Jndi(name="java:global/EjbModule136565368/org.superbiz.ejblookup.EjbDependencyTest!org.superbiz.ejblookup.EjbDependencyTest")
+INFO - Jndi(name="java:global/EjbModule136565368/org.superbiz.ejblookup.EjbDependencyTest")
+INFO - Created Ejb(deployment-id=RedBean, ejb-name=RedBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=BlueBean, ejb-name=BlueBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.ejblookup.EjbDependencyTest, ejb-name=org.superbiz.ejblookup.EjbDependencyTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=RedBean, ejb-name=RedBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=BlueBean, ejb-name=BlueBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.ejblookup.EjbDependencyTest, ejb-name=org.superbiz.ejblookup.EjbDependencyTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/lookup-of-ejbs-with-descriptor)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.679 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/lookup-of-ejbs.adoc b/src/main/jbake/content/examples/lookup-of-ejbs.adoc
new file mode 100755
index 0000000..e11c8ee
--- /dev/null
+++ b/src/main/jbake/content/examples/lookup-of-ejbs.adoc
@@ -0,0 +1,196 @@
+= Lookup Of Ejbs
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example lookup-of-ejbs can be browsed at https://github.com/apache/tomee/tree/master/examples/lookup-of-ejbs
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  BlueBean
+
+
+[source,java]
+----
+package org.superbiz.ejblookup;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBException;
+import javax.ejb.Stateless;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+//START SNIPPET: code
+@Stateless
+@EJB(beanInterface = Friend.class, beanName = "RedBean", name = "myFriend")
+public class BlueBean implements Friend {
+
+    public String sayHello() {
+        return "Blue says, Hello!";
+    }
+
+    public String helloFromFriend() {
+        try {
+            Friend friend = (Friend) new InitialContext().lookup("java:comp/env/myFriend");
+            return "My friend " + friend.sayHello();
+        } catch (NamingException e) {
+            throw new EJBException(e);
+        }
+    }
+}
+----
+
+
+==  Friend
+
+
+[source,java]
+----
+package org.superbiz.ejblookup;
+
+import javax.ejb.Local;
+
+/**
+ * This is an EJB 3 local business interface
+ * A local business interface may be annotated with the @Local
+ * annotation, but it's optional. A business interface which is
+ * not annotated with @Local or @Remote is assumed to be Local
+ * if the bean does not implement any other interfaces
+ */
+//START SNIPPET: code
+@Local
+public interface Friend {
+
+    public String sayHello();
+
+    public String helloFromFriend();
+}
+----
+
+
+==  RedBean
+
+
+[source,java]
+----
+package org.superbiz.ejblookup;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBException;
+import javax.ejb.Stateless;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+//START SNIPPET: code
+@Stateless
+@EJB(beanInterface = Friend.class, beanName = "BlueBean", name = "myFriend")
+public class RedBean implements Friend {
+
+    public String sayHello() {
+        return "Red says, Hello!";
+    }
+
+    public String helloFromFriend() {
+        try {
+            Friend friend = (Friend) new InitialContext().lookup("java:comp/env/myFriend");
+            return "My friend " + friend.sayHello();
+        } catch (NamingException e) {
+            throw new EJBException(e);
+        }
+    }
+}
+----
+
+
+==  EjbDependencyTest
+
+
+[source,java]
+----
+package org.superbiz.ejblookup;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+//START SNIPPET: code
+public class EjbDependencyTest extends TestCase {
+
+    private Context context;
+
+    protected void setUp() throws Exception {
+        context = EJBContainer.createEJBContainer().getContext();
+    }
+
+    public void testRed() throws Exception {
+
+        Friend red = (Friend) context.lookup("java:global/lookup-of-ejbs/RedBean");
+
+        assertNotNull(red);
+        assertEquals("Red says, Hello!", red.sayHello());
+        assertEquals("My friend Blue says, Hello!", red.helloFromFriend());
+    }
+
+    public void testBlue() throws Exception {
+
+        Friend blue = (Friend) context.lookup("java:global/lookup-of-ejbs/BlueBean");
+
+        assertNotNull(blue);
+        assertEquals("Blue says, Hello!", blue.sayHello());
+        assertEquals("My friend Red says, Hello!", blue.helloFromFriend());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.ejblookup.EjbDependencyTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/lookup-of-ejbs
+INFO - openejb.base = /Users/dblevins/examples/lookup-of-ejbs
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/lookup-of-ejbs/target/classes
+INFO - Beginning load: /Users/dblevins/examples/lookup-of-ejbs/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/lookup-of-ejbs
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean RedBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.ejblookup.EjbDependencyTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/lookup-of-ejbs" loaded.
+INFO - Assembling app: /Users/dblevins/examples/lookup-of-ejbs
+INFO - Jndi(name="java:global/lookup-of-ejbs/RedBean!org.superbiz.ejblookup.Friend")
+INFO - Jndi(name="java:global/lookup-of-ejbs/RedBean")
+INFO - Jndi(name="java:global/lookup-of-ejbs/BlueBean!org.superbiz.ejblookup.Friend")
+INFO - Jndi(name="java:global/lookup-of-ejbs/BlueBean")
+INFO - Jndi(name="java:global/EjbModule1374821456/org.superbiz.ejblookup.EjbDependencyTest!org.superbiz.ejblookup.EjbDependencyTest")
+INFO - Jndi(name="java:global/EjbModule1374821456/org.superbiz.ejblookup.EjbDependencyTest")
+INFO - Created Ejb(deployment-id=RedBean, ejb-name=RedBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=BlueBean, ejb-name=BlueBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.ejblookup.EjbDependencyTest, ejb-name=org.superbiz.ejblookup.EjbDependencyTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=RedBean, ejb-name=RedBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=BlueBean, ejb-name=BlueBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.ejblookup.EjbDependencyTest, ejb-name=org.superbiz.ejblookup.EjbDependencyTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/lookup-of-ejbs)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.267 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/mbean-auto-registration.adoc b/src/main/jbake/content/examples/mbean-auto-registration.adoc
new file mode 100755
index 0000000..724382d
--- /dev/null
+++ b/src/main/jbake/content/examples/mbean-auto-registration.adoc
@@ -0,0 +1,172 @@
+= Mbean Auto Registration
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example mbean-auto-registration can be browsed at https://github.com/apache/tomee/tree/master/examples/mbean-auto-registration
+
+
+This example shows how to automatically create and register mbeans using TomEE features.
+
+=  Dependencies
+
+To be able to use it you need to import the mbean api (annotations):
+
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.openejb</groupId>
+  <artifactId>mbean-annotation-api</artifactId>
+  <version>4.5.0</version>
+  <scope>provided</scope>
+</dependency>
+----
+
+
+=  The MBean
+
+The mbean implements a simple game where the goal is to guess a number.
+
+It allows the user to change the value too.
+
+
+[source,java]
+----
+package org.superbiz.mbean;
+
+import javax.management.Description;
+import javax.management.MBean;
+import javax.management.ManagedAttribute;
+import javax.management.ManagedOperation;
+
+@MBean
+@Description("play with me to guess a number")
+public class GuessHowManyMBean {
+    private int value = 0;
+
+    @ManagedAttribute
+    @Description("you are cheating!")
+    public int getValue() {
+        return value;
+    }
+
+    @ManagedAttribute
+    public void setValue(int value) {
+        this.value = value;
+    }
+
+    @ManagedOperation
+    public String tryValue(int userValue) {
+        if (userValue == value) {
+            return "winner";
+        }
+        return "not the correct value, please have another try";
+    }
+}
+----
+
+
+To register a MBean you simply have to specify a property either in system.properties,
+or in intial context properties.
+
+    Properties properties = new Properties();
+    properties.setProperty("openejb.user.mbeans.list", GuessHowManyMBean.class.getName());
+    EJBContainer.createEJBContainer(properties);
+
+=  Accessing the MBean
+
+Then simply get the platform server and you can play with parameters and operations:
+
+
+[source,java]
+----
+package org.superbiz.mbean;
+
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.management.Attribute;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import java.lang.management.ManagementFactory;
+import java.util.Properties;
+
+import static junit.framework.Assert.assertEquals;
+
+public class GuessHowManyMBeanTest {
+    private static final String OBJECT_NAME = "openejb.user.mbeans:group=org.superbiz.mbean,application=mbean-auto-registration,name=GuessHowManyMBean";
+
+    @Test
+    public void play() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty("openejb.user.mbeans.list", GuessHowManyMBean.class.getName());
+        EJBContainer container = EJBContainer.createEJBContainer(properties);
+
+        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+        ObjectName objectName = new ObjectName(OBJECT_NAME);
+        MBeanInfo infos = server.getMBeanInfo(objectName);
+        assertEquals(0, server.getAttribute(objectName, "value"));
+        server.setAttribute(objectName, new Attribute("value", 3));
+        assertEquals(3, server.getAttribute(objectName, "value"));
+        assertEquals("winner", server.invoke(objectName, "tryValue", new Object[]{3}, null));
+        assertEquals("not the correct value, please have another try", server.invoke(objectName, "tryValue", new Object[]{2}, null));
+
+        container.close();
+    }
+}
+----
+
+
+====  Note
+
+If OpenEJB can't find any module it can't start. So to force him to start even if the example has only the mbean
+as java class, we added a `beans.xml` file to turn our project into a Java EE module.
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.mbean.GuessHowManyMBeanTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/mbean-auto-registration
+INFO - openejb.base = /Users/dblevins/examples/mbean-auto-registration
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/mbean-auto-registration/target/classes
+INFO - Beginning load: /Users/dblevins/examples/mbean-auto-registration/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/mbean-auto-registration
+INFO - MBean openejb.user.mbeans:application=,group=org.superbiz.mbean,name=GuessHowManyMBean registered.
+INFO - MBean openejb.user.mbeans:application=mbean-auto-registration,group=org.superbiz.mbean,name=GuessHowManyMBean registered.
+INFO - MBean openejb.user.mbeans:application=EjbModule1847652919,group=org.superbiz.mbean,name=GuessHowManyMBean registered.
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean mbean-auto-registration.Comp: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/mbean-auto-registration" loaded.
+INFO - Assembling app: /Users/dblevins/examples/mbean-auto-registration
+INFO - Jndi(name="java:global/mbean-auto-registration/mbean-auto-registration.Comp!org.apache.openejb.BeanContext$Comp")
+INFO - Jndi(name="java:global/mbean-auto-registration/mbean-auto-registration.Comp")
+INFO - Jndi(name="java:global/EjbModule1847652919/org.superbiz.mbean.GuessHowManyMBeanTest!org.superbiz.mbean.GuessHowManyMBeanTest")
+INFO - Jndi(name="java:global/EjbModule1847652919/org.superbiz.mbean.GuessHowManyMBeanTest")
+INFO - Created Ejb(deployment-id=mbean-auto-registration.Comp, ejb-name=mbean-auto-registration.Comp, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=org.superbiz.mbean.GuessHowManyMBeanTest, ejb-name=org.superbiz.mbean.GuessHowManyMBeanTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=mbean-auto-registration.Comp, ejb-name=mbean-auto-registration.Comp, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=org.superbiz.mbean.GuessHowManyMBeanTest, ejb-name=org.superbiz.mbean.GuessHowManyMBeanTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/mbean-auto-registration)
+INFO - Undeploying app: /Users/dblevins/examples/mbean-auto-registration
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.063 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/moviefun-rest.adoc b/src/main/jbake/content/examples/moviefun-rest.adoc
new file mode 100755
index 0000000..161fb12
--- /dev/null
+++ b/src/main/jbake/content/examples/moviefun-rest.adoc
@@ -0,0 +1,9 @@
+= moviefun-rest
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example moviefun-rest can be browsed at https://github.com/apache/tomee/tree/master/examples/moviefun-rest
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/moviefun.adoc b/src/main/jbake/content/examples/moviefun.adoc
new file mode 100755
index 0000000..bd2ccd9
--- /dev/null
+++ b/src/main/jbake/content/examples/moviefun.adoc
@@ -0,0 +1,385 @@
+= Movies Complete
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example moviefun can be browsed at https://github.com/apache/tomee/tree/master/examples/moviefun
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  AddInterceptor
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class AddInterceptor {
+
+    @AroundInvoke
+    public Object invoke(InvocationContext context) throws Exception {
+        // Log Add
+        return context.proceed();
+    }
+}
+----
+
+
+==  DeleteInterceptor
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class DeleteInterceptor {
+
+    @AroundInvoke
+    public Object invoke(InvocationContext context) throws Exception {
+        // Log Delete
+        return context.proceed();
+    }
+}
+----
+
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.interceptor.Interceptors;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+//START SNIPPET: code
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    @RolesAllowed({"Employee", "Manager"})
+    @TransactionAttribute(TransactionAttributeType.REQUIRED)
+    @Interceptors(AddInterceptor.class)
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @RolesAllowed({"Manager"})
+    @TransactionAttribute(TransactionAttributeType.MANDATORY)
+    @Interceptors(DeleteInterceptor.class)
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @PermitAll
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  ReadInterceptor
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class ReadInterceptor {
+
+    @AroundInvoke
+    public Object invoke(InvocationContext context) throws Exception {
+        // Log Delete
+        return context.proceed();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.tx.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import junit.framework.TestCase;
+
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
+
+/**
+ * See the transaction-rollback example as it does the same thing
+ * via UserTransaction and shows more techniques for rollback 
+ */
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB(beanName = "TransactionBean")
+    private Caller transactionalCaller;
+
+    @EJB(beanName = "NoTransactionBean")
+    private Caller nonTransactionalCaller;
+
+    protected void setUp() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    private void doWork() throws Exception {
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+
+    public void testWithTransaction() throws Exception {
+        transactionalCaller.call(new Callable() {
+            public Object call() throws Exception {
+                doWork();
+                return null;
+            }
+        });
+    }
+
+    public void testWithoutTransaction() throws Exception {
+        try {
+            nonTransactionalCaller.call(new Callable() {
+                public Object call() throws Exception {
+                    doWork();
+                    return null;
+                }
+            });
+            fail("The Movies bean should be using TransactionAttributeType.MANDATORY");
+        } catch (javax.ejb.EJBException e) {
+            // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want
+        }
+    }
+
+
+    public static interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the scope of a container controlled transaction.
+     */
+    @Stateless
+    @RunAs("Manager")
+    @TransactionAttribute(REQUIRES_NEW)
+    public static class TransactionBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+
+    @Stateless
+    @RunAs("Manager")
+    @TransactionAttribute(TransactionAttributeType.NEVER)
+    public static class NoTransactionBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.tx.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/movies-complete
+INFO - openejb.base = /Users/dblevins/examples/movies-complete
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/classes
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/classes
+INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/test-classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/movies-complete
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/movies-complete" loaded.
+INFO - Assembling app: /Users/dblevins/examples/movies-complete
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 402ms
+INFO - Jndi(name="java:global/movies-complete/Movies!org.superbiz.injection.tx.Movies")
+INFO - Jndi(name="java:global/movies-complete/Movies")
+INFO - Jndi(name="java:global/movies-complete/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller")
+INFO - Jndi(name="java:global/movies-complete/TransactionBean")
+INFO - Jndi(name="java:global/movies-complete/NoTransactionBean!org.superbiz.injection.tx.MoviesTest$Caller")
+INFO - Jndi(name="java:global/movies-complete/NoTransactionBean")
+INFO - Jndi(name="java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/movies-complete)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.418 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/movies-complete-meta.adoc b/src/main/jbake/content/examples/movies-complete-meta.adoc
new file mode 100755
index 0000000..a4b50a6
--- /dev/null
+++ b/src/main/jbake/content/examples/movies-complete-meta.adoc
@@ -0,0 +1,502 @@
+= Movies Complete Meta
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example movies-complete-meta can be browsed at https://github.com/apache/tomee/tree/master/examples/movies-complete-meta
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  AddInterceptor
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class AddInterceptor {
+
+    @AroundInvoke
+    public Object invoke(InvocationContext context) throws Exception {
+        // Log Add
+        return context.proceed();
+    }
+}
+----
+
+
+==  Add
+
+
+[source,java]
+----
+package org.superbiz.injection.tx.api;
+
+import org.superbiz.injection.tx.AddInterceptor;
+
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.interceptor.Interceptors;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+
+public @interface Add {
+    public interface $ {
+
+        @Add
+        @RolesAllowed({"Employee", "Manager"})
+        @TransactionAttribute(TransactionAttributeType.REQUIRED)
+        @Interceptors(AddInterceptor.class)
+        public void method();
+    }
+}
+----
+
+
+==  Delete
+
+
+[source,java]
+----
+package org.superbiz.injection.tx.api;
+
+import org.superbiz.injection.tx.DeleteInterceptor;
+
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.interceptor.Interceptors;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+
+public @interface Delete {
+    public interface $ {
+
+        @Delete
+        @RolesAllowed({"Manager"})
+        @TransactionAttribute(TransactionAttributeType.MANDATORY)
+        @Interceptors(DeleteInterceptor.class)
+        public void method();
+    }
+}
+----
+
+
+==  Metatype
+
+
+[source,java]
+----
+package org.superbiz.injection.tx.api;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.ANNOTATION_TYPE)
+public @interface Metatype {
+}
+----
+
+
+==  MovieUnit
+
+
+[source,java]
+----
+package org.superbiz.injection.tx.api;
+
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target({ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+
+@PersistenceContext(name = "movie-unit", unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+public @interface MovieUnit {
+}
+----
+
+
+==  Read
+
+
+[source,java]
+----
+package org.superbiz.injection.tx.api;
+
+import javax.annotation.security.PermitAll;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+
+public @interface Read {
+    public interface $ {
+
+        @Read
+        @PermitAll
+        @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+        public void method();
+    }
+}
+----
+
+
+==  DeleteInterceptor
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class DeleteInterceptor {
+
+    @AroundInvoke
+    public Object invoke(InvocationContext context) throws Exception {
+        // Log Delete
+        return context.proceed();
+    }
+}
+----
+
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import org.superbiz.injection.tx.api.Add;
+import org.superbiz.injection.tx.api.Delete;
+import org.superbiz.injection.tx.api.MovieUnit;
+import org.superbiz.injection.tx.api.Read;
+
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+//END SNIPPET: code
+
+//START SNIPPET: code
+@Stateful
+public class Movies {
+
+    @MovieUnit
+    private EntityManager entityManager;
+
+    @Add
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @Delete
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @Read
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.tx.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import junit.framework.TestCase;
+
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
+
+/**
+ * See the transaction-rollback example as it does the same thing
+ * via UserTransaction and shows more techniques for rollback 
+ */
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB(beanName = "TransactionBean")
+    private Caller transactionalCaller;
+
+    @EJB(beanName = "NoTransactionBean")
+    private Caller nonTransactionalCaller;
+
+    protected void setUp() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    private void doWork() throws Exception {
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+
+    public void testWithTransaction() throws Exception {
+        transactionalCaller.call(new Callable() {
+            public Object call() throws Exception {
+                doWork();
+                return null;
+            }
+        });
+    }
+
+    public void testWithoutTransaction() throws Exception {
+        try {
+            nonTransactionalCaller.call(new Callable() {
+                public Object call() throws Exception {
+                    doWork();
+                    return null;
+                }
+            });
+            fail("The Movies bean should be using TransactionAttributeType.MANDATORY");
+        } catch (javax.ejb.EJBException e) {
+            // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want
+        }
+    }
+
+
+    public static interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the scope of a container controlled transaction.
+     */
+    @Stateless
+    @RunAs("Manager")
+    @TransactionAttribute(REQUIRES_NEW)
+    public static class TransactionBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+
+    @Stateless
+    @RunAs("Manager")
+    @TransactionAttribute(TransactionAttributeType.NEVER)
+    public static class NoTransactionBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.tx.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/movies-complete-meta
+INFO - openejb.base = /Users/dblevins/examples/movies-complete-meta
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete-meta/target/test-classes
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete-meta/target/classes
+INFO - Beginning load: /Users/dblevins/examples/movies-complete-meta/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/movies-complete-meta/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/movies-complete-meta
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/movies-complete-meta" loaded.
+INFO - Assembling app: /Users/dblevins/examples/movies-complete-meta
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 408ms
+INFO - Jndi(name="java:global/movies-complete-meta/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller")
+INFO - Jndi(name="java:global/movies-complete-meta/TransactionBean")
+INFO - Jndi(name="java:global/movies-complete-meta/NoTransactionBean!org.superbiz.injection.tx.MoviesTest$Caller")
+INFO - Jndi(name="java:global/movies-complete-meta/NoTransactionBean")
+INFO - Jndi(name="java:global/movies-complete-meta/Movies!org.superbiz.injection.tx.Movies")
+INFO - Jndi(name="java:global/movies-complete-meta/Movies")
+INFO - Jndi(name="java:global/EjbModule1861413442/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1861413442/org.superbiz.injection.tx.MoviesTest")
+INFO - Created Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/movies-complete-meta)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.869 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/movies-complete.adoc b/src/main/jbake/content/examples/movies-complete.adoc
new file mode 100755
index 0000000..42fed35
--- /dev/null
+++ b/src/main/jbake/content/examples/movies-complete.adoc
@@ -0,0 +1,385 @@
+= Movies Complete
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example movies-complete can be browsed at https://github.com/apache/tomee/tree/master/examples/movies-complete
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  AddInterceptor
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class AddInterceptor {
+
+    @AroundInvoke
+    public Object invoke(InvocationContext context) throws Exception {
+        // Log Add
+        return context.proceed();
+    }
+}
+----
+
+
+==  DeleteInterceptor
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class DeleteInterceptor {
+
+    @AroundInvoke
+    public Object invoke(InvocationContext context) throws Exception {
+        // Log Delete
+        return context.proceed();
+    }
+}
+----
+
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.interceptor.Interceptors;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+//START SNIPPET: code
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    @RolesAllowed({"Employee", "Manager"})
+    @TransactionAttribute(TransactionAttributeType.REQUIRED)
+    @Interceptors(AddInterceptor.class)
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @RolesAllowed({"Manager"})
+    @TransactionAttribute(TransactionAttributeType.MANDATORY)
+    @Interceptors(DeleteInterceptor.class)
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @PermitAll
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  ReadInterceptor
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class ReadInterceptor {
+
+    @AroundInvoke
+    public Object invoke(InvocationContext context) throws Exception {
+        // Log Delete
+        return context.proceed();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.tx.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import junit.framework.TestCase;
+
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
+
+/**
+ * See the transaction-rollback example as it does the same thing
+ * via UserTransaction and shows more techniques for rollback 
+ */
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB(beanName = "TransactionBean")
+    private Caller transactionalCaller;
+
+    @EJB(beanName = "NoTransactionBean")
+    private Caller nonTransactionalCaller;
+
+    protected void setUp() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    private void doWork() throws Exception {
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+
+    public void testWithTransaction() throws Exception {
+        transactionalCaller.call(new Callable() {
+            public Object call() throws Exception {
+                doWork();
+                return null;
+            }
+        });
+    }
+
+    public void testWithoutTransaction() throws Exception {
+        try {
+            nonTransactionalCaller.call(new Callable() {
+                public Object call() throws Exception {
+                    doWork();
+                    return null;
+                }
+            });
+            fail("The Movies bean should be using TransactionAttributeType.MANDATORY");
+        } catch (javax.ejb.EJBException e) {
+            // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want
+        }
+    }
+
+
+    public static interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the scope of a container controlled transaction.
+     */
+    @Stateless
+    @RunAs("Manager")
+    @TransactionAttribute(REQUIRES_NEW)
+    public static class TransactionBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+
+    @Stateless
+    @RunAs("Manager")
+    @TransactionAttribute(TransactionAttributeType.NEVER)
+    public static class NoTransactionBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.tx.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/movies-complete
+INFO - openejb.base = /Users/dblevins/examples/movies-complete
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/classes
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/classes
+INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/test-classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/movies-complete
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/movies-complete" loaded.
+INFO - Assembling app: /Users/dblevins/examples/movies-complete
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 402ms
+INFO - Jndi(name="java:global/movies-complete/Movies!org.superbiz.injection.tx.Movies")
+INFO - Jndi(name="java:global/movies-complete/Movies")
+INFO - Jndi(name="java:global/movies-complete/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller")
+INFO - Jndi(name="java:global/movies-complete/TransactionBean")
+INFO - Jndi(name="java:global/movies-complete/NoTransactionBean!org.superbiz.injection.tx.MoviesTest$Caller")
+INFO - Jndi(name="java:global/movies-complete/NoTransactionBean")
+INFO - Jndi(name="java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/movies-complete)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.418 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/mtom.adoc b/src/main/jbake/content/examples/mtom.adoc
new file mode 100755
index 0000000..b1af48a
--- /dev/null
+++ b/src/main/jbake/content/examples/mtom.adoc
@@ -0,0 +1,8 @@
+= mtom
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example mtom can be browsed at https://github.com/apache/tomee/tree/master/examples/mtom
+
diff --git a/src/main/jbake/content/examples/multi-jpa-provider-testing.adoc b/src/main/jbake/content/examples/multi-jpa-provider-testing.adoc
new file mode 100755
index 0000000..5862411
--- /dev/null
+++ b/src/main/jbake/content/examples/multi-jpa-provider-testing.adoc
@@ -0,0 +1,9 @@
+= multi-jpa-provider-testing
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example multi-jpa-provider-testing can be browsed at https://github.com/apache/tomee/tree/master/examples/multi-jpa-provider-testing
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/multiple-arquillian-adapters.adoc b/src/main/jbake/content/examples/multiple-arquillian-adapters.adoc
new file mode 100755
index 0000000..e4f80a3
--- /dev/null
+++ b/src/main/jbake/content/examples/multiple-arquillian-adapters.adoc
@@ -0,0 +1,9 @@
+= multiple-arquillian-adapters
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example multiple-arquillian-adapters can be browsed at https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/multiple-tomee-arquillian.adoc b/src/main/jbake/content/examples/multiple-tomee-arquillian.adoc
new file mode 100755
index 0000000..940285d
--- /dev/null
+++ b/src/main/jbake/content/examples/multiple-tomee-arquillian.adoc
@@ -0,0 +1,9 @@
+= multiple-tomee-arquillian
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example multiple-tomee-arquillian can be browsed at https://github.com/apache/tomee/tree/master/examples/multiple-tomee-arquillian
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/myfaces-codi-demo.adoc b/src/main/jbake/content/examples/myfaces-codi-demo.adoc
new file mode 100755
index 0000000..6e2dc20
--- /dev/null
+++ b/src/main/jbake/content/examples/myfaces-codi-demo.adoc
@@ -0,0 +1,76 @@
+= MyFaces CODI Demo
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example myfaces-codi-demo can be browsed at https://github.com/apache/tomee/tree/master/examples/myfaces-codi-demo
+
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+<h2>Steps to run the example</h2>
+
+Build and start the demo:
+
+    mvn clean package tomee:run
+
+Open:
+
+    http://localhost:8080/myfaces-codi-1.0-SNAPSHOT/
+
+This example shows how to improve JSF2/CDI/BV/JPA applications with features provided by Apache MyFaces CODI and ExtVal.
+
+<h2>Intro of MyFaces CODI and ExtVal</h2>
+
+The Apache MyFaces Extensions CDI project (aka CODI) hosts portable extensions for Contexts and Dependency Injection (CDI - JSR 299). CODI is a toolbox for your CDI application. Like CDI itself CODI is focused on type-safety. It is a modularized and extensible framework. So it's easy to choose the needed parts to facilitate the daily work in your project.
+
+MyFaces Extensions Validator (aka ExtVal) is a JSF centric validation framework which is compatible with JSF 1.x and JSF 2.x.
+This example shows how it improves the default integration of Bean-Validation (JSR-303) with JSF2 as well as meta-data based cross-field validation.
+
+
+<h2>Illustrated Features</h2>
+
+<h3>Apache MyFaces CODI</h3>
+
+<ul>
+
+[source,xml]
+----
+<li><a href="./src/main/java/org/superbiz/myfaces/view/config/Pages.java" target="_blank">Type-safe view-config</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/InfoPage.java" target="_blank">Type-safe (custom) view-meta-data</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/MenuBean.java" target="_blank">Type-safe navigation</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/CustomJsfModuleConfig.java" target="_blank">Type-safe (specialized) config</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/CustomProjectStage.java" target="_blank">Type-safe custom project-stage</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/UserHolder.java" target="_blank">@WindowScoped</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/MenuBean.java" target="_blank">Controlling CODI scopes with WindowContext</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/FeedbackPage.java" target="_blank">@ViewAccessScoped</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/FeedbackPage.java" target="_blank">Manual conversation handling</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/security/LoginAccessDecisionVoter.java" target="_blank">Secured pages (AccessDecisionVoter)</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/repository/Repository.java" target="_blank">@Transactional</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">I18n (fluent API)</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/domain/validation/UniqueUserNameValidator.java" target="_blank">Dependency-Injection for JSR303 (BV) constraint-validators</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/DebugPhaseListener.java" target="_blank">Dependency-Injection for JSF phase-listeners</a></li>
+</ul>
+
+<h3>Apache MyFaces ExtVal</h3>
+
+<ul>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">Cross-Field validation (@Equals)</a></li>
+<li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">Type-safe group-validation (@BeanValidation) for JSF action-methods</a></li>
+</ul>
+
diff --git a/src/main/jbake/content/examples/persistence-fragment.adoc b/src/main/jbake/content/examples/persistence-fragment.adoc
new file mode 100755
index 0000000..e200f41
--- /dev/null
+++ b/src/main/jbake/content/examples/persistence-fragment.adoc
@@ -0,0 +1,149 @@
+= Persistence Fragment
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example persistence-fragment can be browsed at https://github.com/apache/tomee/tree/master/examples/persistence-fragment
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.jpa;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+@Entity
+public class Movie {
+    @Id
+    @GeneratedValue
+    private long id;
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+        // no-op
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+}
+----
+
+
+==  persistence-fragment.xml
+
+
+[source,xml]
+----
+<persistence-fragment version="2.0">
+  <persistence-unit-fragment name="movie-unit">
+    <class>org.superbiz.injection.jpa.Movie</class>
+    <exclude-unlisted-classes>true</exclude-unlisted-classes>
+  </persistence-unit-fragment>
+</persistence-fragment>
+----
+
+    
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.jpa;
+
+import org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceUnit;
+import java.util.Properties;
+
+import static org.junit.Assert.assertTrue;
+
+public class MoviesTest {
+    @PersistenceUnit
+    private EntityManagerFactory emf;
+
+    @Test
+    public void test() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        final EJBContainer container = EJBContainer.createEJBContainer(p);
+        final Context context = container.getContext();
+        context.bind("inject", this);
+
+        assertTrue(((ReloadableEntityManagerFactory) emf).getManagedClasses().contains(Movie.class.getName()));
+
+        container.close();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence version="2.0"
+             xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
+                       http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+    
diff --git a/src/main/jbake/content/examples/pojo-webservice.adoc b/src/main/jbake/content/examples/pojo-webservice.adoc
new file mode 100755
index 0000000..019f2f6
--- /dev/null
+++ b/src/main/jbake/content/examples/pojo-webservice.adoc
@@ -0,0 +1,9 @@
+= pojo-webservice
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example pojo-webservice can be browsed at https://github.com/apache/tomee/tree/master/examples/pojo-webservice
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/polling-parent.adoc b/src/main/jbake/content/examples/polling-parent.adoc
new file mode 100755
index 0000000..9ee24f5
--- /dev/null
+++ b/src/main/jbake/content/examples/polling-parent.adoc
@@ -0,0 +1,39 @@
+= polling-parent
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example polling-parent can be browsed at https://github.com/apache/tomee/tree/master/examples/polling-parent
+
+=  Sample #
+
+This sample implements a simple polling application.
+
+You can create polls and then vote (+1 or -1) for each poll (called Subject).
+
+The front is a JAX-RS front and the backend uses EJBs and JPA.
+
+=  Module #
+
+The application contains several modules:
+
+* polling-domain: entities used by the client side too
+* polling-core: the middle/dao layer
+* polling-web: front layer (REST services)
+
+=  What is noticeable #
+
+The front layer contains a MBean managed by CDI (VoteCounter) which is used by REST services to update information you
+can retrieve through JMX protocol (JConsole client is fine to see it ;)).
+
+It manages a dynamic datasource too. It manages in the example configuration 2 clients.
+
+It is a simple round robin by request. That's why from the client if you simply create a poll then find it
+you'll not find the persisted poll, you need to do it once again.
+
+=  Client #
+
+It lets you create poll, retrieve them, find the best poll and vote for any poll.
+
+Please type help for more information.
diff --git a/src/main/jbake/content/examples/projectstage-demo.adoc b/src/main/jbake/content/examples/projectstage-demo.adoc
new file mode 100755
index 0000000..2b92b3f
--- /dev/null
+++ b/src/main/jbake/content/examples/projectstage-demo.adoc
@@ -0,0 +1,9 @@
+= projectstage-demo
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example projectstage-demo can be browsed at https://github.com/apache/tomee/tree/master/examples/projectstage-demo
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/quartz-app.adoc b/src/main/jbake/content/examples/quartz-app.adoc
new file mode 100755
index 0000000..aa0faf5
--- /dev/null
+++ b/src/main/jbake/content/examples/quartz-app.adoc
@@ -0,0 +1,263 @@
+= Quartz Resource Adapter usage
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example quartz-app can be browsed at https://github.com/apache/tomee/tree/master/examples/quartz-app
+
+
+Note this example is somewhat dated.  It predates the schedule API which was added to EJB 3.1.  Modern applications should use the schedule API which has many, if not all,
+the same features as Quartz.  In fact, Quartz is the engine that drives the `@Schedule` and `ScheduleExpression` support in OpenEJB and TomEE.
+
+Despite being dated from a scheduling perspective it is still an excellent reference for how to plug-in and test a custom Java EE Resource Adapter.
+
+=  Project structure
+
+As `.rar` files do not do well on a standard classpath structure the goal is to effectively "unwrap" the `.rar` so that its dependencies are on the classpath and its `ra.xml` file
+can be found in scanned by OpenEJB.
+
+We do this by creating a mini maven module to represent the rar in maven terms.  The `pom.xml` of the "rar module" declares all of the jars that would be inside `.rar` as maven
+dependencies.  The `ra.xml` file is added to the project in `src/main/resources/META-INF/ra.xml` where it will be visible to other modules.
+
+    quartz-app
+    quartz-app/pom.xml
+    quartz-app/quartz-beans
+    quartz-app/quartz-beans/pom.xml
+    quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobBean.java
+    quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobScheduler.java
+    quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/QuartzMdb.java
+    quartz-app/quartz-beans/src/main/resources/META-INF
+    quartz-app/quartz-beans/src/main/resources/META-INF/ejb-jar.xml
+    quartz-app/quartz-beans/src/test/java/org/superbiz/quartz/QuartzMdbTest.java
+    quartz-app/quartz-ra
+    quartz-app/quartz-ra/pom.xml
+    quartz-app/quartz-ra/src/main/resources/META-INF
+    quartz-app/quartz-ra/src/main/resources/META-INF/ra.xml
+
+==  ra.xml
+
+The connector in question has both inbound and outbound Resource Adapters.  The inbound Resource Adapter can be used to drive message driven beans (MDBs)
+
+the outbound Resource Adapter, `QuartzResourceAdapter`, can be injected into any component via `@Resource` and used to originate and send messages or events.
+
+
+[source,xml]
+----
+<connector xmlns="http://java.sun.com/xml/ns/j2ee"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+           http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"
+           version="1.5">
+
+  <description>Quartz ResourceAdapter</description>
+  <display-name>Quartz ResourceAdapter</display-name>
+
+  <vendor-name>OpenEJB</vendor-name>
+  <eis-type>Quartz Adapter</eis-type>
+  <resourceadapter-version>1.0</resourceadapter-version>
+
+  <resourceadapter id="QuartzResourceAdapter">
+    <resourceadapter-class>org.apache.openejb.resource.quartz.QuartzResourceAdapter</resourceadapter-class>
+
+    <inbound-resourceadapter>
+      <messageadapter>
+        <messagelistener>
+          <messagelistener-type>org.quartz.Job</messagelistener-type>
+          <activationspec>
+            <activationspec-class>org.apache.openejb.resource.quartz.JobSpec</activationspec-class>
+          </activationspec>
+        </messagelistener>
+      </messageadapter>
+    </inbound-resourceadapter>
+
+  </resourceadapter>
+</connector>
+----
+
+
+
+=  Using the Outbound Resource Adapter
+
+Here we see the outbound resource adapter used in a stateless session bean to schedule a job that will be executed by the MDB
+
+
+[source,java]
+----
+package org.superbiz.quartz;
+
+import org.apache.openejb.resource.quartz.QuartzResourceAdapter;
+import org.quartz.Job;
+import org.quartz.JobDetail;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.Scheduler;
+import org.quartz.SimpleTrigger;
+
+import javax.ejb.Stateless;
+import javax.naming.InitialContext;
+import java.util.Date;
+
+@Stateless
+public class JobBean implements JobScheduler {
+
+    @Override
+    public Date createJob() throws Exception {
+
+        final QuartzResourceAdapter ra = (QuartzResourceAdapter) new InitialContext().lookup("java:openejb/Resource/QuartzResourceAdapter");
+        final Scheduler s = ra.getScheduler();
+
+        //Add a job type
+        final JobDetail jd = new JobDetail("job1", "group1", JobBean.MyTestJob.class);
+        jd.getJobDataMap().put("MyJobKey", "MyJobValue");
+
+        //Schedule my 'test' job to run now
+        final SimpleTrigger trigger = new SimpleTrigger("trigger1", "group1", new Date());
+        return s.scheduleJob(jd, trigger);
+    }
+
+    public static class MyTestJob implements Job {
+
+        @Override
+        public void execute(JobExecutionContext context) throws JobExecutionException {
+            System.out.println("This is a simple test job to get: " + context.getJobDetail().getJobDataMap().get("MyJobKey"));
+        }
+    }
+}
+----
+
+
+=  Recieving data from the Inbound Resource Adapter
+
+
+
+[source,java]
+----
+package org.superbiz.quartz;
+
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import javax.ejb.ActivationConfigProperty;
+import javax.ejb.MessageDriven;
+
+@MessageDriven(activationConfig = {
+        @ActivationConfigProperty(propertyName = "cronExpression", propertyValue = "* * * * * ?")})
+public class QuartzMdb implements Job {
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        System.out.println("Executing Job");
+    }
+}
+----
+
+
+=  Test case
+
+
+[source,java]
+----
+package org.superbiz.quartz;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Date;
+import java.util.Properties;
+
+public class QuartzMdbTest {
+
+    private static InitialContext initialContext = null;
+
+    @BeforeClass
+    public static void beforeClass() throws Exception {
+
+        if (null == initialContext) {
+            Properties properties = new Properties();
+            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+
+            initialContext = new InitialContext(properties);
+        }
+    }
+
+    @AfterClass
+    public static void afterClass() throws Exception {
+        if (null != initialContext) {
+            initialContext.close();
+            initialContext = null;
+        }
+    }
+
+    @Test
+    public void testLookup() throws Exception {
+
+        final JobScheduler jbi = (JobScheduler) initialContext.lookup("JobBeanLocal");
+        final Date d = jbi.createJob();
+        Thread.sleep(500);
+        System.out.println("Scheduled test job should have run at: " + d.toString());
+    }
+
+    @Test
+    public void testMdb() throws Exception {
+        // Sleep 3 seconds and give quartz a chance to execute our MDB
+        Thread.sleep(3000);
+    }
+}
+----
+
+
+=  Running
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.quartz.QuartzMdbTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/quartz-app/quartz-beans
+INFO - openejb.base = /Users/dblevins/examples/quartz-app/quartz-beans
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found ConnectorModule in classpath: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/quartz-app/quartz-beans/target/classes
+INFO - Beginning load: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar
+INFO - Extracting jar: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar
+INFO - Extracted path: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0
+INFO - Beginning load: /Users/dblevins/examples/quartz-app/quartz-beans/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean JobBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=QuartzResourceAdapter, type=Resource, provider-id=QuartzResourceAdapter)
+INFO - Configuring Service(id=quartz-ra-1.0, type=Container, provider-id=Default MDB Container)
+INFO - Enterprise application "/Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear
+INFO - Jndi(name=JobBeanLocal) --> Ejb(deployment-id=JobBean)
+INFO - Jndi(name=global/classpath.ear/quartz-beans/JobBean!org.superbiz.quartz.JobScheduler) --> Ejb(deployment-id=JobBean)
+INFO - Jndi(name=global/classpath.ear/quartz-beans/JobBean) --> Ejb(deployment-id=JobBean)
+INFO - Created Ejb(deployment-id=JobBean, ejb-name=JobBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=QuartzMdb, ejb-name=QuartzMdb, container=quartz-ra-1.0)
+Executing Job
+INFO - Started Ejb(deployment-id=JobBean, ejb-name=JobBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=QuartzMdb, ejb-name=QuartzMdb, container=quartz-ra-1.0)
+INFO - Deployed Application(path=/Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear)
+This is a simple test job to get: MyJobValue
+Scheduled test job should have run at: Fri Oct 28 17:05:12 PDT 2011
+Executing Job
+Executing Job
+Executing Job
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.971 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
diff --git a/src/main/jbake/content/examples/realm-in-tomee.adoc b/src/main/jbake/content/examples/realm-in-tomee.adoc
new file mode 100755
index 0000000..3a69554
--- /dev/null
+++ b/src/main/jbake/content/examples/realm-in-tomee.adoc
@@ -0,0 +1,45 @@
+= DataSourceRealm and TomEE DataSource
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example realm-in-tomee can be browsed at https://github.com/apache/tomee/tree/master/examples/realm-in-tomee
+
+
+==  Quick start
+
+To test it:
+
+    mvn clean package tomee:run
+
+==  How does it work?
+
+A datasource is defined in tomee.xml:
+
+
+[source,xml]
+----
+<Resource id="myDataSource" type="DataSource" /> <!-- standard properties -->
+
+Then this datasource is referenced in server.xml:
+
+<Realm
+    className="org.apache.catalina.realm.DataSourceRealm"
+    dataSourceName="myDataSource"
+    userTable="users"
+    userNameCol="user_name"
+    userCredCol="user_pass"
+    userRoleTable="user_roles"
+    roleNameCol="role_name"/>
+
+To initialize the datasource (for the test) we used the TomEE hook which consists in providing
+a file import-<datasource name>.sql. It should be in the classpath of the datasource so here it is
+the TomEE classpath so we added it to lib (by default in the classloader). It simply contains the
+table creations and the insertion of the "admin" "tomee" with the password "tomee".
+
+## Test it
+
+Go to http://localhost:8080/realm-in-tomee-1.1.0-SNAPSHOT/, then connect using
+the login/password tomee/tomee. You should see "Home".
+
diff --git a/src/main/jbake/content/examples/reload-persistence-unit-properties.adoc b/src/main/jbake/content/examples/reload-persistence-unit-properties.adoc
new file mode 100755
index 0000000..8ff7150
--- /dev/null
+++ b/src/main/jbake/content/examples/reload-persistence-unit-properties.adoc
@@ -0,0 +1,59 @@
+= Reload Persistence Unit Properties
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example reload-persistence-unit-properties can be browsed at https://github.com/apache/tomee/tree/master/examples/reload-persistence-unit-properties
+
+
+This example aims to simulate a benchmark campaign on JPA.
+
+First you'll run your application then you'll realize you could need L2 cache to respect your SLA.
+
+So you change your persistence.xml configuration, then restart your application,
+you wait a bit because you are using OpenEJB ;)...but you wait...
+
+So to try to go faster on long campaign simply change your configuration at runtime to test it then when it works change
+your configuration file to keep the modification.
+
+To do it we can simply use JMX.
+
+OpenEJB automatically register one MBeans by entitymanager (persistence unit).
+
+It allows you mainly to change your persistence unit properties even if more is possible.
+
+==  The test itself
+
+The test is simple: we persist an entity, we query it three times without cache then we activate cache and realize
+running again our queries that one is enough to do the same.
+
+=  The output
+
+In the ouput we find the 3 parts described just before.
+
+    INFO - TEST, data initialization
+    DEBUG - <t 1523828380, conn 93608538> executing stmnt 1615782385 CREATE TABLE Person (id BIGINT NOT NULL, name VARCHAR(255), PRIMARY KEY (id))
+    DEBUG - <t 1523828380, conn 93608538> [1 ms] spent
+    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 668144844 INSERT INTO Person (id, name) VALUES (?, ?) [params=?, ?]
+    DEBUG - <t 1523828380, conn 1506565411> [0 ms] spent
+    INFO - TEST, end of data initialization
+
+
+    INFO - TEST, doing some queries without cache
+    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 1093240870 SELECT t0.name FROM Person t0 WHERE t0.id = ? [params=?]
+    DEBUG - <t 1523828380, conn 1506565411> [0 ms] spent
+    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 1983702821 SELECT t0.name FROM Person t0 WHERE t0.id = ? [params=?]
+    DEBUG - <t 1523828380, conn 1506565411> [0 ms] spent
+    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 1178041898 SELECT t0.name FROM Person t0 WHERE t0.id = ? [params=?]
+    DEBUG - <t 1523828380, conn 1506565411> [1 ms] spent
+    INFO - TEST, queries without cache done
+
+
+    INFO - TEST, doing some queries with cache
+    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 1532943889 SELECT t0.name FROM Person t0 WHERE t0.id = ? [params=?]
+    DEBUG - <t 1523828380, conn 1506565411> [0 ms] spent
+    INFO - TEST, queries with cache done
+
+
+
diff --git a/src/main/jbake/content/examples/resources-declared-in-webapp.adoc b/src/main/jbake/content/examples/resources-declared-in-webapp.adoc
new file mode 100755
index 0000000..d0c2f4f
--- /dev/null
+++ b/src/main/jbake/content/examples/resources-declared-in-webapp.adoc
@@ -0,0 +1,157 @@
+= Resources Declared in Webapp
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example resources-declared-in-webapp can be browsed at https://github.com/apache/tomee/tree/master/examples/resources-declared-in-webapp
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Manager
+
+
+[source,java]
+----
+package org.superbiz.bean;
+
+import org.superbiz.resource.ManagerResource;
+
+import javax.annotation.Resource;
+import javax.ejb.Singleton;
+
+@Singleton
+public class Manager {
+    @Resource(name = "My Manager Team", type = ManagerResource.class)
+    private ManagerResource resource;
+
+    public String work() {
+        return "manage a resource of type " + resource.resourceType();
+    }
+}
+----
+
+
+==  ManagerResource
+
+
+[source,java]
+----
+package org.superbiz.resource;
+
+public class ManagerResource {
+    public String resourceType() {
+        return "team";
+    }
+}
+----
+
+
+==  ManagerServlet
+
+
+[source,java]
+----
+package org.superbiz.servlet;
+
+import org.superbiz.bean.Manager;
+
+import javax.ejb.EJB;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@WebServlet(name = "manager servlet", urlPatterns = "/")
+public class ManagerServlet extends HttpServlet {
+    @EJB
+    private Manager manager;
+
+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        resp.getOutputStream().print(manager.work());
+    }
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<ejb-jar/>
+----
+
+    
+
+==  service-jar.xml
+
+
+[source,xml]
+----
+<ServiceJar>
+  <ServiceProvider id="ManagerResource" service="Resource"
+                   type="org.superbiz.resource.ManagerResource"
+                   class-name="org.superbiz.resource.ManagerResource"/>
+</ServiceJar>
+----
+
+    
+
+==  resources.xml
+
+
+[source,xml]
+----
+<resources>
+  <Resource id="My Manager Team" type="org.superbiz.resource.ManagerResource" provider="org.superbiz#ManagerResource"/>
+</resources>
+----
+
+    
+
+==  web.xml
+
+
+[source,xml]
+----
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"/>
+
+
diff --git a/src/main/jbake/content/examples/resources-jmx-example.adoc b/src/main/jbake/content/examples/resources-jmx-example.adoc
new file mode 100755
index 0000000..99f35b6
--- /dev/null
+++ b/src/main/jbake/content/examples/resources-jmx-example.adoc
@@ -0,0 +1,746 @@
+= Custom resources in an EAR archive
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example resources-jmx-example can be browsed at https://github.com/apache/tomee/tree/master/examples/resources-jmx-example
+
+
+TomEE allows you to define your own resources within your application, and declare them in `META-INF/resources.xml`. This allows you do inject these resource into any managed component within your application.
+
+In addition to this, you can also define a `create` method on either the resource itself, or on a POJO that acts as a factory. This example demonstrates using the `create` method to additionally register the resource as a JMX MBean, as well as make it available for injection.
+
+==  Resource
+
+Custom resources can be defined using very simple Java classes. In this particular instance, as the application also wants to register this resource as an MBean, the resource class needs to follow the MBean specification.
+
+	public class Hello implements HelloMBean {
+
+	    private AtomicInteger count = new AtomicInteger(0);
+
+	    @Override
+	    public String greet(String name) {
+	        if (name == null) {
+	            throw new NullPointerException("Name cannot be null");
+	        }
+
+	        return "Hello, " + name;
+	    }
+
+	    @Override
+	    public int getCount() {
+	        return count.get();
+	    }
+
+	    @Override
+	    public void setCount(int value) {
+	        count.set(value);
+	    }
+
+	    @Override
+	    public void increment() {
+	        count.incrementAndGet();
+	    }
+	}
+	
+	public interface HelloMBean {
+
+	    public String greet(final String name);
+
+	    public int getCount();
+
+	    public void setCount(int count);
+
+	    public void increment();
+
+	}
+
+==  Create method
+
+To avoid adding the logic to register the resource as an MBean in every resource, the application provides a single class with a create() method that takes care of this logic for us.
+
+	public class JMXBeanCreator {
+
+	    private static Logger LOGGER = Logger.getLogger(JMXBeanCreator.class.getName());
+	    private Properties properties;
+
+	    public Object create() throws MBeanRegistrationException {
+	        // instantiate the bean
+
+	        final String code = properties.getProperty("code");
+	        final String name = properties.getProperty("name");
+
+	        requireNotNull(code);
+	        requireNotNull(name);
+
+	        try {
+	            final Class<?> cls = Class.forName(code, true, Thread.currentThread().getContextClassLoader());
+	            final Object instance = cls.newInstance();
+
+	            final Field[] fields = cls.getDeclaredFields();
+	            for (final Field field : fields) {
+
+	                final String property = properties.getProperty(field.getName());
+	                if (property == null) {
+	                    continue;
+	                }
+
+	                try {
+	                    field.setAccessible(true);
+	                    field.set(instance, Converter.convert(property, field.getType(), field.getName()));
+	                } catch (Exception e) {
+	                    LOGGER.info(String.format("Unable to set value %s on field %s", property, field.getName()));
+	                }
+	            }
+
+	            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+	            final ObjectName objectName = new ObjectName(name);
+	            mbs.registerMBean(instance, objectName);
+
+	            return instance;
+
+	        } catch (final ClassNotFoundException e) {
+	            LOGGER.severe("Unable to find class " + code);
+	            throw new MBeanRegistrationException(e);
+	        } catch (final InstantiationException e) {
+	            LOGGER.severe("Unable to create instance of class " + code);
+	            throw new MBeanRegistrationException(e);
+	        } catch (final IllegalAccessException e) {
+	            LOGGER.severe("Illegal access: " + code);
+	            throw new MBeanRegistrationException(e);
+	        } catch (final MalformedObjectNameException e) {
+	            LOGGER.severe("Malformed MBean name: " + name);
+	            throw new MBeanRegistrationException(e);
+	        } catch (final InstanceAlreadyExistsException e) {
+	            LOGGER.severe("Instance already exists: " + name);
+	            throw new MBeanRegistrationException(e);
+	        } catch (final NotCompliantMBeanException e) {
+	            LOGGER.severe("Class is not a valid MBean: " + code);
+	            throw new MBeanRegistrationException(e);
+	        } catch (final javax.management.MBeanRegistrationException e) {
+	            LOGGER.severe("Error registering " + name + ", " + code);
+	            throw new MBeanRegistrationException(e);
+	        }
+	    }
+
+	    private void requireNotNull(final String object) throws MBeanRegistrationException {
+	        if (object == null) {
+	            throw new MBeanRegistrationException("code property not specified, stopping");
+	        }
+	    }
+
+	    public Properties getProperties() {
+	        return properties;
+	    }
+
+	    public void setProperties(final Properties properties) {
+	        this.properties = properties;
+	    }
+	}
+    
+
+Note that this class uses the properties defined in the <Resource> configuration (below), combined with reflection, to instantiate the resource, and set its attributes. The code above requires two properties `code` and `name` in order to know what class to create, and the JMX name to register it under.
+
+==  Resource
+
+The resource can be defined in `META-INF/resources.xml` as follows:
+
+	<Resources>
+	  <Resource id="Hello" class-name="org.superbiz.resource.jmx.factory.JMXBeanCreator" factory-name="create">
+	    code org.superbiz.resource.jmx.resources.Hello
+	    name superbiz.test:name=Hello
+	    count 12345
+	  </Resource>
+	</Resources>
+
+Note that the class-name attribute refers to the factory class, and not the resource. Once the resource has been created and bound in TomEE's JNDI tree the factory is no longer used.
+
+==  Using @Resource for injection
+
+The test case for this example demonstrates injection into an EJB as one way of accessing the resource, and also accessing the resource via JMX.
+
+	@RunWith(Arquillian.class)
+	public class JMXTest {
+
+	    @EJB
+	    private TestEjb ejb;
+
+	    @Deployment
+	    public static EnterpriseArchive createDeployment() {
+
+	        final JavaArchive ejbJar = new Mvn.Builder()
+	                .name("jmx-ejb.jar")
+	                .build(JavaArchive.class)
+	                .addClass(JMXTest.class)
+	                .addClass(TestEjb.class);
+
+	        final EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "jmx.ear")
+	                .addAsModule(ejbJar);
+
+	        return ear;
+	    }
+
+	    @Test
+	    public void test() throws Exception {
+	        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+	        final ObjectName objectName = new ObjectName("superbiz.test:name=Hello");
+
+	        Assert.assertNotNull(ejb);
+        
+	        Assert.assertEquals(0, mbs.getAttribute(objectName, "Count"));
+	        Assert.assertEquals(0, ejb.getCount());
+        
+	        mbs.invoke(objectName, "increment", new Object[0], new String[0]);
+	        Assert.assertEquals(1, mbs.getAttribute(objectName, "Count"));
+	        Assert.assertEquals(1, ejb.getCount());
+        
+	        ejb.increment();
+	        Assert.assertEquals(2, mbs.getAttribute(objectName, "Count"));
+	        Assert.assertEquals(2, ejb.getCount());
+
+	        Attribute attribute = new Attribute("Count", 12345);
+	        mbs.setAttribute(objectName, attribute);
+	        Assert.assertEquals(12345, mbs.getAttribute(objectName, "Count"));
+	        Assert.assertEquals(12345, ejb.getCount());
+        
+	        ejb.setCount(23456);
+	        Assert.assertEquals(23456, mbs.getAttribute(objectName, "Count"));
+	        Assert.assertEquals(23456, ejb.getCount());
+
+	        Assert.assertEquals("Hello, world", mbs.invoke(objectName, "greet", new Object[] { "world" }, new String[] { String.class.getName() }));
+	        Assert.assertEquals("Hello, world", ejb.greet("world"));
+	    }
+
+	    @Singleton
+	    @Lock(LockType.READ)
+	    public static class TestEjb {
+
+	        @Resource(name="jmx/Hello")
+	        private HelloMBean helloMBean;
+
+	        public String greet(String name) {
+	            return helloMBean.greet(name);
+	        }
+
+	        public void setCount(int count) {
+	            helloMBean.setCount(count);
+	        }
+
+	        public void increment() {
+	            helloMBean.increment();
+	        }
+
+	        public int getCount() {
+	            return helloMBean.getCount();
+	        }
+	    }
+	}
+
+The name `<appname>/<resource-id>` attribute is used on the `@Resource` annotation to perform the injection. No further configuration is needed to inject the resource.
+
+=  Additional properties
+
+In addition to the `code` and `name` properties that the code above uses to instantiate the resource, TomEE itself provides some
+properties to provide more control over the creation of resources.
+
+Resources are typically discovered, created, and bound to JNDI very early on in the deployment process, as other components depend on them. This may lead to problems where the final classpath for the application has not yet been determined, and therefore TomEE is unable to load your custom resource. 
+
+The following properties can be used to change this behavior.
+
+* Lazy
+
+This is a boolean value, which when true, creates a proxy that defers the actual instantiation of the resource until the first time it is looked up from JNDI. This can be useful if the resource requires the application classpath, or to improve startup time by not fully initializing resources that might not be used.
+
+* UseAppClassLoader 
+
+This boolean value forces a lazily instantiated resource to use the application classloader, instead of the classloader available when the resources were first processed.
+
+* InitializeAfterDeployment
+
+This boolean setting forces a resource created with the Lazy property to be instantiated once the application has started, as opposed to waiting for it to be looked up. Use this flag if you require the resource to be loaded, irrespective of whether it is injected into a managed component or manually looked up.
+
+By default, all of these settings are `false`, unless TomEE encounters a custom application resource that cannot be instantiated until the application has started. In this case, it will set these three flags to `true`, unless the `Lazy` flag has been explicitly set.
+
+=  PostConstruct / PreDestroy
+
+As an alternative to using a factory method, you can use @PostConstruct and @PreDestroy methods within your resource class (note that you cannot use this within a factory class) to manage any additional creation or cleanup activities. TomEE will automatically call these methods when the application is started and destroyed. Using @PostConstruct will effectively force a lazily loaded resource to be instantiated when the application is starting - in the same way that the `InitializeAfterDeployment` property does.
+
+
+[source,java]
+----
+public class Alternative implements AlternativeMBean {
+
+    private static Logger LOGGER = Logger.getLogger(Alternative.class.getName());
+    private Properties properties;
+
+    @PostConstruct
+    public void postConstruct() throws MBeanRegistrationException {
+        // initialize the bean
+
+        final String code = properties.getProperty("code");
+        final String name = properties.getProperty("name");
+
+        requireNotNull(code);
+        requireNotNull(name);
+
+        try {
+            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+            final ObjectName objectName = new ObjectName(name);
+            mbs.registerMBean(this, objectName);
+        } catch (final MalformedObjectNameException e) {
+            LOGGER.severe("Malformed MBean name: " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (final InstanceAlreadyExistsException e) {
+            LOGGER.severe("Instance already exists: " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (final NotCompliantMBeanException e) {
+            LOGGER.severe("Class is not a valid MBean: " + code);
+            throw new MBeanRegistrationException(e);
+        } catch (final javax.management.MBeanRegistrationException e) {
+            LOGGER.severe("Error registering " + name + ", " + code);
+            throw new MBeanRegistrationException(e);
+        }
+    }
+
+    @PreDestroy
+    public void preDestroy() throws MBeanRegistrationException {
+        final String name = properties.getProperty("name");
+        requireNotNull(name);
+
+        try {
+            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+            final ObjectName objectName = new ObjectName(name);
+            mbs.unregisterMBean(objectName);
+        } catch (final MalformedObjectNameException e) {
+            LOGGER.severe("Malformed MBean name: " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (final javax.management.MBeanRegistrationException e) {
+            LOGGER.severe("Error unregistering " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (InstanceNotFoundException e) {
+            LOGGER.severe("Error unregistering " + name);
+            throw new MBeanRegistrationException(e);
+        }
+    }
+
+    private void requireNotNull(final String object) throws MBeanRegistrationException {
+        if (object == null) {
+            throw new MBeanRegistrationException("code property not specified, stopping");
+        }
+    }
+
+    public Properties getProperties() {
+        return properties;
+    }
+
+    public void setProperties(final Properties properties) {
+        this.properties = properties;
+    }
+
+    private int count = 0;
+
+    @Override
+    public String greet(String name) {
+        if (name == null) {
+            throw new NullPointerException("Name cannot be null");
+        }
+
+        return "Hello, " + name;
+    }
+
+    @Override
+    public int getCount() {
+        return count;
+    }
+
+    @Override
+    public void setCount(int value) {
+        count = value;
+    }
+
+    @Override
+    public void increment() {
+        count++;
+    }
+}
+----
+
+
+
+=  Running
+
+Running the example can be done from maven with a simple 'mvn clean install' command run from the 'resources-jmx-example' directory.
+
+When run you should see output similar to the following.
+
+	-------------------------------------------------------
+	 T E S T S
+	-------------------------------------------------------
+	Running org.superbiz.resource.jmx.JMXTest
+	Apr 15, 2015 12:40:09 PM org.jboss.arquillian.container.impl.MapObject populate
+	WARNING: Configuration contain properties not supported by the backing object org.apache.tomee.arquillian.remote.RemoteTomEEConfiguration
+	Unused property entries: {openejbVersion=${tomee.version}, tomcatVersion=}
+	Supported property names: [additionalLibs, httpPort, httpsPort, stopCommand, portRange, conf, debug, exportConfAsSystemProperty, type, unpackWars, version, serverXml, preloadClasses, dir, deployerProperties, stopPort, singleDumpByArchiveName, appWorkingDir, host, cleanOnStartUp, quickSession, ajpPort, artifactId, properties, singleDeploymentByArchiveName, groupId, stopHost, lib, catalina_opts, debugPort, webContextToUseWithEars, simpleLog, removeUnusedWebapps, keepServerXmlAsThis, classifier, bin]
+	Apr 15, 2015 12:40:09 PM org.apache.openejb.arquillian.common.Setup findHome
+	INFO: Unable to find home in: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote
+	Apr 15, 2015 12:40:09 PM org.apache.openejb.arquillian.common.MavenCache getArtifact
+	INFO: Downloading org.apache.openejb:apache-tomee:7.0.0-SNAPSHOT:zip:plus please wait...
+	Apr 15, 2015 12:40:10 PM org.apache.openejb.arquillian.common.Zips unzip
+	INFO: Extracting '/Users/jgallimore/.m2/repository/org/apache/openejb/apache-tomee/7.0.0-SNAPSHOT/apache-tomee-7.0.0-SNAPSHOT-plus.zip' to '/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote'
+	Apr 15, 2015 12:40:12 PM org.apache.tomee.arquillian.remote.RemoteTomEEContainer configure
+	INFO: Downloaded container to: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+	Started server process on port: 61309
+	objc[20102]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Server version:        Apache Tomcat (TomEE)/7.0.61 (7.0.0-SNAPSHOT)
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Server built:          Mar 27 2015 12:03:56 UTC
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Server number:         7.0.61.0
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: OS Name:               Mac OS X
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: OS Version:            10.9.5
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Architecture:          x86_64
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Java Home:             /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: JVM Version:           1.7.0_71-b14
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: JVM Vendor:            Oracle Corporation
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: CATALINA_BASE:         /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: CATALINA_HOME:         /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -XX:+HeapDumpOnOutOfMemoryError
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -XX:PermSize=64m
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -XX:MaxPermSize=256m
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Xmx512m
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Xms256m
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -XX:ReservedCodeCacheSize=64m
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Dtomee.httpPort=61309
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=false
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Dorg.apache.openejb.servlet.filters=org.apache.openejb.arquillian.common.ArquillianFilterRunner=/ArquillianServletRunner
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Djava.util.logging.config.file=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/conf/logging.properties
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -javaagent:/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/lib/openejb-javaagent.jar
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Djava.io.tmpdir=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/temp
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Djava.endorsed.dirs=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/endorsed
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Dcatalina.base=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Dcatalina.home=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Dcatalina.ext.dirs=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/lib
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0=true
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+	INFO: Command line argument: -ea
+	Apr 15, 2015 12:40:14 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
+	INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/jgallimore/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
+	Apr 15, 2015 12:40:14 PM org.apache.coyote.AbstractProtocol init
+	INFO: Initializing ProtocolHandler ["http-bio-61309"]
+	Apr 15, 2015 12:40:14 PM org.apache.coyote.AbstractProtocol init
+	INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: ********************************************************************************
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: OpenEJB http://tomee.apache.org/
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: Startup: Wed Apr 15 12:40:16 BST 2015
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: Version: 7.0.0-SNAPSHOT
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: Build date: 20150415
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: Build time: 11:37
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: ********************************************************************************
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: openejb.home = /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+	INFO: openejb.base = /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
+	INFO: Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
+	Apr 15, 2015 12:40:16 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
+	INFO: Succeeded in installing singleton service
+	Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory init
+	INFO: openejb configuration file is '/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/conf/tomee.xml'
+	Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureService
+	INFO: Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
+	Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureService
+	INFO: Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+	Apr 15, 2015 12:40:17 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.system.apps=true'
+	Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureApplication
+	INFO: Configuring enterprise application: openejb
+	Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
+	INFO: Using openejb.deploymentId.format '{ejbName}'
+	Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
+	INFO: Auto-deploying ejb openejb/Deployer: EjbDeployment(deployment-id=openejb/Deployer)
+	Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
+	INFO: Auto-deploying ejb openejb/ConfigurationInfo: EjbDeployment(deployment-id=openejb/ConfigurationInfo)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.config.InitEjbDeployments deploy
+	INFO: Auto-deploying ejb MEJB: EjbDeployment(deployment-id=MEJB)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.config.ConfigurationFactory configureService
+	INFO: Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.config.AutoConfig createContainer
+	INFO: Auto-creating a container for bean openejb/Deployer: Container(type=STATELESS, id=Default Stateless Container)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.config.AppInfoBuilder build
+	INFO: Enterprise application "openejb" loaded.
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+	INFO: Creating TransactionManager(id=Default Transaction Manager)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+	INFO: Creating SecurityService(id=Tomcat Security Service)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+	INFO: Creating Container(id=Default Stateless Container)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createAppClassLoader
+	INFO: Not creating another application classloader for openejb
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createApplication
+	INFO: Assembling app: openejb
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.jndiname.format={deploymentId}{interfaceType.openejbLegacyName}'
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=openejb/DeployerBusinessRemote) --> Ejb(deployment-id=openejb/Deployer)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=global/openejb/openejb/Deployer!org.apache.openejb.assembler.Deployer) --> Ejb(deployment-id=openejb/Deployer)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=global/openejb/openejb/Deployer) --> Ejb(deployment-id=openejb/Deployer)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=openejb/ConfigurationInfoBusinessRemote) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=global/openejb/openejb/ConfigurationInfo!org.apache.openejb.assembler.classic.cmd.ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+	Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=global/openejb/openejb/ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=MEJB) --> Ejb(deployment-id=MEJB)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=global/openejb/MEJB!javax.management.j2ee.ManagementHome) --> Ejb(deployment-id=MEJB)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=global/openejb/MEJB) --> Ejb(deployment-id=MEJB)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+	INFO: Created Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+	INFO: Created Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+	INFO: Created Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+	INFO: Started Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+	INFO: Started Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+	INFO: Started Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler deployMBean
+	INFO: Deployed MBean(openejb.user.mbeans:application=openejb,group=org.apache.openejb.assembler.monitoring,name=JMXDeployer)
+	Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler createApplication
+	INFO: Deployed Application(path=openejb)
+	Apr 15, 2015 12:40:20 PM org.apache.openejb.server.ServiceManager initServer
+	INFO: Creating ServerService(id=cxf)
+	Apr 15, 2015 12:40:20 PM org.apache.openejb.server.ServiceManager initServer
+	INFO: Creating ServerService(id=cxf-rs)
+	Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
+	INFO:   ** Bound Services **
+	Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager printRow
+	INFO:   NAME                 IP              PORT  
+	Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
+	INFO: -------
+	Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
+	INFO: Ready!
+	Apr 15, 2015 12:40:20 PM org.apache.catalina.startup.Catalina load
+	INFO: Initialization processed in 7621 ms
+	Apr 15, 2015 12:40:20 PM org.apache.tomee.catalina.OpenEJBNamingContextListener bindResource
+	INFO: Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
+	Apr 15, 2015 12:40:20 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+	INFO: Creating Resource(id=UserDatabase)
+	Apr 15, 2015 12:40:20 PM org.apache.catalina.core.StandardService startInternal
+	INFO: Starting service Catalina
+	Apr 15, 2015 12:40:20 PM org.apache.catalina.core.StandardEngine startInternal
+	INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/7.0.61 (7.0.0-SNAPSHOT)
+	Apr 15, 2015 12:40:21 PM org.apache.coyote.AbstractProtocol start
+	INFO: Starting ProtocolHandler ["http-bio-61309"]
+	Apr 15, 2015 12:40:21 PM org.apache.coyote.AbstractProtocol start
+	INFO: Starting ProtocolHandler ["ajp-bio-8009"]
+	Apr 15, 2015 12:40:21 PM org.apache.catalina.startup.Catalina start
+	INFO: Server startup in 247 ms
+	Apr 15, 2015 12:40:21 PM org.apache.openejb.client.EventLogger log
+	INFO: RemoteInitialContextCreated{providerUri=http://localhost:61309/tomee/ejb}
+	Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
+	INFO: Extracting jar: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx.ear
+	Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
+	INFO: Extracted path: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+	Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
+	INFO: Extracting jar: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/arquillian-protocol.war
+	Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
+	INFO: Extracted path: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/arquillian-protocol
+	Apr 15, 2015 12:40:21 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.deployments.classpath.filter.systemapps=false'
+	Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+	Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+	Apr 15, 2015 12:40:23 PM org.apache.openejb.config.DeploymentsResolver processUrls
+	INFO: Found EjbModule in classpath: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/jmx-ejb.jar
+	Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+	Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+	Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+	Apr 15, 2015 12:40:23 PM org.apache.openejb.config.DeploymentsResolver loadFromClasspath
+	INFO: Searched 6 classpath urls in 1605 milliseconds.  Average 267 milliseconds per url.
+	Apr 15, 2015 12:40:23 PM org.apache.openejb.config.ConfigurationFactory configureApplication
+	INFO: Configuring enterprise application: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.InitEjbDeployments deploy
+	INFO: Auto-deploying ejb TestEjb: EjbDeployment(deployment-id=TestEjb)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
+	INFO: Configuring Service(id=jmx/Hello, type=Resource, provider-id=jmx/Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
+	INFO: Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig createContainer
+	INFO: Auto-creating a container for bean jmx-ejb.Comp1256115069: Container(type=MANAGED, id=Default Managed Container)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+	INFO: Creating Container(id=Default Managed Container)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.core.managed.SimplePassivater init
+	INFO: Using directory /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/temp for stateful session passivation
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+	INFO: Auto-linking resource-ref 'java:comp/env/jmx/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=jmx/Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+	INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+	INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
+	INFO: Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig createContainer
+	INFO: Auto-creating a container for bean TestEjb: Container(type=SINGLETON, id=Default Singleton Container)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+	INFO: Creating Container(id=Default Singleton Container)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+	INFO: Auto-linking resource-ref 'java:comp/env/jmx/Hello' in bean TestEjb to Resource(id=jmx/Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+	INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean TestEjb to Resource(id=Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+	INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean TestEjb to Resource(id=Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+	INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean jmx_org.superbiz.resource.jmx.JMXTest to Resource(id=Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+	INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean jmx_org.superbiz.resource.jmx.JMXTest to Resource(id=Hello)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AppInfoBuilder build
+	INFO: Enterprise application "/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx" loaded.
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createAppClassLoader
+	INFO: Creating dedicated application classloader for jmx
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createApplication
+	INFO: Assembling app: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=TestEjbLocalBean) --> Ejb(deployment-id=TestEjb)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=global/jmx/jmx-ejb/TestEjb!org.superbiz.resource.jmx.JMXTest$TestEjb) --> Ejb(deployment-id=TestEjb)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+	INFO: Jndi(name=global/jmx/jmx-ejb/TestEjb) --> Ejb(deployment-id=TestEjb)
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.cdi.CdiBuilder initSingleton
+	INFO: Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+	INFO: OpenWebBeans Container is starting...
+	Apr 15, 2015 12:40:24 PM org.apache.webbeans.plugins.PluginLoader startUp
+	INFO: Adding OpenWebBeansPlugin : [CdiPlugin]
+	Apr 15, 2015 12:40:24 PM org.apache.webbeans.plugins.PluginLoader startUp
+	Apr 15, 2015 12:40:25 PM org.apache.webbeans.config.BeansDeployer validateInjectionPoints
+	INFO: All injection points were validated successfully.
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+	INFO: OpenWebBeans Container has started, it took 186 ms.
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+	INFO: Created Ejb(deployment-id=TestEjb, ejb-name=TestEjb, container=Default Singleton Container)
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+	INFO: Started Ejb(deployment-id=TestEjb, ejb-name=TestEjb, container=Default Singleton Container)
+	Apr 15, 2015 12:40:25 PM org.apache.tomee.catalina.TomcatWebAppBuilder deployWebApps
+	INFO: using default host: localhost
+	Apr 15, 2015 12:40:25 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
+	INFO: ------------------------- localhost -> /arquillian-protocol
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.util.OptionsLog info
+	INFO: Using 'openejb.session.manager=org.apache.tomee.catalina.session.QuickSessionManager'
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.CdiBuilder initSingleton
+	INFO: Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+	INFO: OpenWebBeans Container is starting...
+	Apr 15, 2015 12:40:25 PM org.apache.webbeans.plugins.PluginLoader startUp
+	INFO: Adding OpenWebBeansPlugin : [CdiPlugin]
+	Apr 15, 2015 12:40:25 PM org.apache.webbeans.plugins.PluginLoader startUp
+	Apr 15, 2015 12:40:25 PM org.apache.webbeans.config.BeansDeployer validateInjectionPoints
+	INFO: All injection points were validated successfully.
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+	INFO: OpenWebBeans Container has started, it took 17 ms.
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+	INFO: Creating Resource(id=jmx/Hello, aliases=Hello)
+	Apr 15, 2015 12:40:25 PM org.superbiz.resource.jmx.factory.JMXBeanCreator create
+	INFO: Unable to set value 12345 on field count
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
+	WARNING: Property "code" not supported by "jmx/Hello"
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
+	WARNING: Property "name" not supported by "jmx/Hello"
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
+	WARNING: Property "count" not supported by "jmx/Hello"
+	Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler createApplication
+	INFO: Deployed Application(path=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx)
+	Apr 15, 2015 12:40:26 PM org.apache.openejb.client.EventLogger log
+	INFO: RemoteInitialContextCreated{providerUri=http://localhost:61309/tomee/ejb}
+	Apr 15, 2015 12:40:26 PM org.apache.openejb.assembler.classic.Assembler destroyApplication
+	INFO: Undeploying app: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+	Apr 15, 2015 12:40:27 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
+	INFO: cleaning /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx.ear
+	Apr 15, 2015 12:40:27 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
+	INFO: cleaning /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+	Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.464 sec
+	Apr 15, 2015 12:40:27 PM org.apache.catalina.core.StandardServer await
+	INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
+	Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol pause
+	INFO: Pausing ProtocolHandler ["http-bio-61309"]
+	Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol pause
+	INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
+	Apr 15, 2015 12:40:27 PM org.apache.catalina.core.StandardService stopInternal
+	INFO: Stopping service Catalina
+	Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol stop
+	INFO: Stopping ProtocolHandler ["http-bio-61309"]
+	Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol stop
+	INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
+	Apr 15, 2015 12:40:27 PM org.apache.openejb.server.SimpleServiceManager stop
+	INFO: Stopping server services
+	Apr 15, 2015 12:40:27 PM org.apache.openejb.assembler.classic.Assembler destroyApplication
+	INFO: Undeploying app: openejb
+	Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol destroy
+	INFO: Destroying ProtocolHandler ["http-bio-61309"]
+	Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol destroy
+	INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
+
+	Results :
+
+	Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+    
+
+Note the following lines showing the creation of the resource.
+
+	Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
+	INFO: Configuring Service(id=jmx/Hello, type=Resource, provider-id=jmx/Hello)
+	
+
+
+
+
diff --git a/src/main/jbake/content/examples/rest-applicationcomposer-mockito.adoc b/src/main/jbake/content/examples/rest-applicationcomposer-mockito.adoc
new file mode 100755
index 0000000..43deb79
--- /dev/null
+++ b/src/main/jbake/content/examples/rest-applicationcomposer-mockito.adoc
@@ -0,0 +1,9 @@
+= rest-applicationcomposer-mockito
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example rest-applicationcomposer-mockito can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/rest-applicationcomposer.adoc b/src/main/jbake/content/examples/rest-applicationcomposer.adoc
new file mode 100755
index 0000000..851aca0
--- /dev/null
+++ b/src/main/jbake/content/examples/rest-applicationcomposer.adoc
@@ -0,0 +1,9 @@
+= rest-applicationcomposer
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example rest-applicationcomposer can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/rest-cdi.adoc b/src/main/jbake/content/examples/rest-cdi.adoc
new file mode 100755
index 0000000..a2afbd4
--- /dev/null
+++ b/src/main/jbake/content/examples/rest-cdi.adoc
@@ -0,0 +1,394 @@
+= Simple REST with CDI
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example rest-cdi can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-cdi
+
+
+Defining a REST service is pretty easy, simply ad @Path annotation to a class then define on methods
+the HTTP method to use (@GET, @POST, ...).
+
+= The Code
+
+==  The REST service: @Path, @Produces, @Consumes
+
+Here we see a bean that uses the Bean-Managed Concurrency option as well as the @Startup annotation which causes the bean to be instantiated by the container when the application starts. Singleton beans with @ConcurrencyManagement(BEAN) are responsible for their own thread-safety. The bean shown is a simple properties "registry" and provides a place where options could be set and retrieved by all beans in the application.
+
+Actually lines:
+
+
+[source,java]
+----
+@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+
+are optional since it is the default configuration. And these lines can be configured by method too
+if you need to be more precise.
+
+@Path("/greeting")
+@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+public class GreetingService {
+    @GET
+    public Response message() {
+        return new Response("Hi REST!");
+    }
+
+    @POST
+    public Response lowerCase(final Request message) {
+        return new Response(message.getValue().toLowerCase());
+    }
+}
+----
+
+
+=  Testing
+
+==  Test for the JAXRS service
+
+The test uses the OpenEJB ApplicationComposer to make it trivial.
+
+The idea is first to activate the jaxrs services. This is done using @EnableServices annotation.
+
+Then we create on the fly the application simply returning an object representing the web.xml. Here we simply
+use it to define the context root but you can use it to define your REST Application too. And to complete the
+application definition we add @Classes annotation to define the set of classes to use in this app.
+
+Finally to test it we use cxf client API to call the REST service in get() and post() methods.
+
+Side note: to show we use JSON or XML depending on the test method we activated on EnableServices the attribute httpDebug
+which prints the http messages in the logs.
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.Classes;
+import org.apache.openejb.junit.EnableServices;
+import org.apache.openejb.junit.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.ws.rs.core.MediaType;
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+@EnableServices(value = "jaxrs", httpDebug = true)
+@RunWith(ApplicationComposer.class)
+public class GreetingServiceTest {
+    @Module
+    @Classes(value = {GreetingService.class, Greeting.class}, cdi = true) //This enables the CDI magic
+    public WebApp app() {
+        return new WebApp().contextRoot("test");
+    }
+
+    @Test
+    public void getXml() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+                .accept(MediaType.APPLICATION_XML_TYPE)
+                .get(Response.class).getValue();
+        assertEquals("Hi REST!", message);
+    }
+
+    @Test
+    public void postXml() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+                .accept(MediaType.APPLICATION_XML_TYPE)
+                .post(new Request("Hi REST!"), Response.class).getValue();
+        assertEquals("hi rest!", message);
+    }
+
+    @Test
+    public void getJson() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+                .accept(MediaType.APPLICATION_JSON_TYPE)
+                .get(Response.class).getValue();
+        assertEquals("Hi REST!", message);
+    }
+
+    @Test
+    public void postJson() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+                .accept(MediaType.APPLICATION_JSON_TYPE)
+                .post(new Request("Hi REST!"), Response.class).getValue();
+        assertEquals("hi rest!", message);
+    }
+}
+----
+
+
+
+= Running
+
+Running the example is fairly simple. In the "rest-cdi" directory run:
+
+    $ mvn clean install
+
+Which should create output like the following.
+
+    /opt/softs/java/jdk1.6.0_30/bin/java -ea -Didea.launcher.port=7534 -Didea.launcher.bin.path=/opt/softs/idea/bin -Dfile.encoding=UTF-8 -classpath /opt/softs/idea/lib/idea_rt.jar:/opt/softs/idea/plugins/junit/lib/junit-rt.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/plugin.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/javaws.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/jce.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/charsets.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/resources.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/deploy.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/management-agent.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/jsse.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/rt.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/localedata.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/sunjce_provider.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/sunpkcs11.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/dnsns.jar:/opt/dev/openejb/openejb-trunk/examples/rest-cdi/target/test-classes:/opt/dev/openejb/openejb-trunk/examples/rest-cdi/target/classes:/home/rmannibucau/.m2/repository/org/apache/openejb/javaee-api/6.0-4/javaee-api-6.0-4.jar:/home/rmannibucau/.m2/repository/junit/junit/4.10/junit-4.10.jar:/home/rmannibucau/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-cxf-rs/4.5.1/openejb-cxf-rs-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-http/4.5.1/openejb-http-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-core/4.5.1/openejb-core-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/mbean-annotation-api/4.5.1/mbean-annotation-api-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-jpa-integration/4.5.1/openejb-jpa-integration-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-api/4.5.1/openejb-api-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-loader/4.5.1/openejb-loader-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-javaagent/4.5.1/openejb-javaagent-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-jee/4.5.1/openejb-jee-4.5.1.jar:/home/rmannibucau/.m2/repository/com/sun/xml/bind/jaxb-impl/2.1.13/jaxb-impl-2.1.13.jar:/home/rmannibucau/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/activemq-ra/5.7.0/activemq-ra-5.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/activemq-core/5.7.0/activemq-core-5.7.0.jar:/home/rmannibucau/.m2/repository/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/kahadb/5.7.0/kahadb-5.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/protobuf/activemq-protobuf/1.1/activemq-protobuf-1.1.jar:/home/rmannibucau/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/home/rmannibucau/.m2/repository/commons-net/commons-net/3.1/commons-net-3.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/components/geronimo-connector/3.1.1/geronimo-connector-3.1.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/components/geronimo-transaction/3.1.1/geronimo-transaction-3.1.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-connector_1.6_spec/1.0/geronimo-j2ee-connector_1.6_spec-1.0.jar:/home/rmannibucau/.m2/repository/org/objectweb/howl/howl/1.0.1-1/howl-1.0.1-1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/javamail/geronimo-javamail_1.4_mail/1.8.2/geronimo-javamail_1.4_mail-1.8.2.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-asm-shaded/3.12/xbean-asm-shaded-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-finder-shaded/3.12/xbean-finder-shaded-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-reflect/3.12/xbean-reflect-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-naming/3.12/xbean-naming-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-bundleutils/3.12/xbean-bundleutils-3.12.jar:/home/rmannibucau/.m2/repository/org/hsqldb/hsqldb/2.2.8/hsqldb-2.2.8.jar:/home/rmannibucau/.m2/repository/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.jar:/home/rmannibucau/.m2/repository/commons-pool/commons-pool/1.5.7/commons-pool-1.5.7.jar:/home/rmannibucau/.m2/repository/org/codehaus/swizzle/swizzle-stream/1.6.1/swizzle-stream-1.6.1.jar:/home/rmannibucau/.m2/repository/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar:/home/rmannibucau/.m2/repository/org/quartz-scheduler/quartz/2.1.6/quartz-2.1.6.jar:/home/rmannibucau/.m2/repository/org/slf4j/slf4j-jdk14/1.7.2/slf4j-jdk14-1.7.2.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-impl/1.1.6/openwebbeans-impl-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-spi/1.1.6/openwebbeans-spi-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ejb/1.1.6/openwebbeans-ejb-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ee/1.1.6/openwebbeans-ee-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ee-common/1.1.6/openwebbeans-ee-common-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-web/1.1.6/openwebbeans-web-1.1.6.jar:/home/rmannibucau/.m2/repository/org/javassist/javassist/3.15.0-GA/javassist-3.15.0-GA.jar:/home/rmannibucau/.m2/repository/org/apache/openjpa/openjpa/2.2.0/openjpa-2.2.0.jar:/home/rmannibucau/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/home/rmannibucau/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/home/rmannibucau/.m2/repository/net/sourceforge/serp/serp/1.13.1/serp-1.13.1.jar:/home/rmannibucau/.m2/repository/asm/asm/3.2/asm-3.2.jar:/home/rmannibucau/.m2/repository/org/apache/bval/bval-core/0.5/bval-core-0.5.jar:/home/rmannibucau/.m2/repository/commons-beanutils/commons-beanutils-core/1.8.3/commons-beanutils-core-1.8.3.jar:/home/rmannibucau/.m2/repository/org/apache/bval/bval-jsr303/0.5/bval-jsr303-0.5.jar:/home/rmannibucau/.m2/repository/org/fusesource/jansi/jansi/1.8/jansi-1.8.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-server/4.5.1/openejb-server-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-client/4.5.1/openejb-client-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-ejbd/4.5.1/openejb-ejbd-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-rest/4.5.1/openejb-rest-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-cxf-transport/4.5.1/openejb-cxf-transport-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-transports-http/2.7.0/cxf-rt-transports-http-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-api/2.7.0/cxf-api-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/ws/xmlschema/xmlschema-core/2.0.3/xmlschema-core-2.0.3.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-core/2.7.0/cxf-rt-core-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-frontend-jaxrs/2.7.0/cxf-rt-frontend-jaxrs-2.7.0.jar:/home/rmannibucau/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0-m10/javax.ws.rs-api-2.0-m10.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-bindings-xml/2.7.0/cxf-rt-bindings-xml-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-extension-providers/2.7.0/cxf-rt-rs-extension-providers-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-extension-search/2.7.0/cxf-rt-rs-extension-search-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-security-cors/2.7.0/cxf-rt-rs-security-cors-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-security-oauth2/2.7.0/cxf-rt-rs-security-oauth2-2.7.0.jar:/home/rmannibucau/.m2/repository/org/codehaus/jettison/jettison/1.3/jettison-1.3.jar:/home/rmannibucau/.m2/repository/stax/stax-api/1.0.1/stax-api-1.0.1.jar com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 org.superbiz.rest.GreetingServiceTest
+    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Creating TransactionManager(id=Default Transaction Manager)
+    INFO - Creating SecurityService(id=Default Security Service)
+    INFO - Initializing network services
+    INFO - Creating ServerService(id=httpejbd)
+    INFO - Using 'print=true'
+    INFO - Using 'indent.xml=true'
+    INFO - Creating ServerService(id=cxf-rs)
+    INFO - Initializing network services
+    INFO - Starting service httpejbd
+    INFO - Started service httpejbd
+    INFO - Starting service cxf-rs
+    INFO - Started service cxf-rs
+    INFO -   ** Bound Services **
+    INFO -   NAME                 IP              PORT  
+    INFO -   httpejbd             127.0.0.1       4204  
+    INFO - -------
+    INFO - Ready!
+    INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+    INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+    INFO - Creating Container(id=Default Managed Container)
+    INFO - Using directory /tmp for stateful session passivation
+    INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+    INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+    INFO - Existing thread singleton service in SystemInstance() null
+    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
+    INFO - Succeeded in installing singleton service
+    INFO - OpenWebBeans Container is starting...
+    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+    INFO - All injection points are validated successfully.
+    INFO - OpenWebBeans Container has started, it took 102 ms.
+    INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+    INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+    INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+    FINE - ******************* REQUEST ******************
+    GET http://localhost:4204/test/greeting/
+    Host=localhost:4204
+    User-Agent=Apache CXF 2.7.0
+    Connection=keep-alive
+    Accept=application/xml
+    Content-Type=*/*
+    Pragma=no-cache
+    Cache-Control=no-cache
+    
+    
+    **********************************************
+    
+    FINE - HTTP/1.1 200 OK
+    Date: Fri, 09 Nov 2012 11:59:00 GMT
+    Content-Length: 44
+    Set-Cookie: EJBSESSIONID=fc5037fa-641c-495d-95ca-0755cfa50beb; Path=/
+    Content-Type: application/xml
+    Connection: close
+    Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+    
+
+[source,xml]
+----
+<response><value>Hi REST!</value></response>
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Stopping network services
+INFO - Stopping server services
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Using 'print=true'
+INFO - Using 'indent.xml=true'
+INFO - Creating ServerService(id=cxf-rs)
+INFO - Initializing network services
+INFO - Starting service httpejbd
+INFO - Started service httpejbd
+INFO - Starting service cxf-rs
+INFO - Started service cxf-rs
+INFO -   ** Bound Services **
+INFO -   NAME                 IP              PORT  
+INFO -   httpejbd             127.0.0.1       4204  
+INFO - -------
+INFO - Ready!
+INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance() null
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
+INFO - Succeeded in installing singleton service
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 11 ms.
+INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+FINE - ******************* REQUEST ******************
+POST http://localhost:4204/test/greeting/
+Host=localhost:4204
+Content-Length=97
+User-Agent=Apache CXF 2.7.0
+Connection=keep-alive
+Accept=application/xml
+Content-Type=application/xml
+Pragma=no-cache
+Cache-Control=no-cache
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><request><value>Hi REST!</value></request>
+**********************************************
+
+FINE - HTTP/1.1 200 OK
+Date: Fri, 09 Nov 2012 11:59:00 GMT
+Content-Length: 44
+Set-Cookie: EJBSESSIONID=7cb2246d-5738-4a85-aac5-c0fb5340d36a; Path=/
+Content-Type: application/xml
+Connection: close
+Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+
+<response><value>hi rest!</value></response>
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Stopping network services
+INFO - Stopping server services
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Using 'print=true'
+INFO - Using 'indent.xml=true'
+INFO - Creating ServerService(id=cxf-rs)
+INFO - Initializing network services
+INFO - Starting service httpejbd
+INFO - Started service httpejbd
+INFO - Starting service cxf-rs
+INFO - Started service cxf-rs
+INFO -   ** Bound Services **
+INFO -   NAME                 IP              PORT  
+INFO -   httpejbd             127.0.0.1       4204  
+INFO - -------
+INFO - Ready!
+INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance() null
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
+INFO - Succeeded in installing singleton service
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 10 ms.
+INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+FINE - ******************* REQUEST ******************
+GET http://localhost:4204/test/greeting/
+Host=localhost:4204
+User-Agent=Apache CXF 2.7.0
+Connection=keep-alive
+Accept=application/json
+Content-Type=*/*
+Pragma=no-cache
+Cache-Control=no-cache
+
+
+**********************************************
+
+FINE - HTTP/1.1 200 OK
+Date: Fri, 09 Nov 2012 11:59:00 GMT
+Content-Length: 33
+Set-Cookie: EJBSESSIONID=7112a057-fc4c-4f52-a556-1617320d2275; Path=/
+Content-Type: application/json
+Connection: close
+Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+
+{"response":{"value":"Hi REST!"}}
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Stopping network services
+INFO - Stopping server services
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Using 'print=true'
+INFO - Using 'indent.xml=true'
+INFO - Creating ServerService(id=cxf-rs)
+INFO - Initializing network services
+INFO - Starting service httpejbd
+INFO - Started service httpejbd
+INFO - Starting service cxf-rs
+INFO - Started service cxf-rs
+INFO -   ** Bound Services **
+INFO -   NAME                 IP              PORT  
+INFO -   httpejbd             127.0.0.1       4204  
+INFO - -------
+INFO - Ready!
+INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance() null
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
+INFO - Succeeded in installing singleton service
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 10 ms.
+INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+FINE - ******************* REQUEST ******************
+POST http://localhost:4204/test/greeting/
+Host=localhost:4204
+Content-Length=97
+User-Agent=Apache CXF 2.7.0
+Connection=keep-alive
+Accept=application/json
+Content-Type=application/xml
+Pragma=no-cache
+Cache-Control=no-cache
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><request><value>Hi REST!</value></request>
+**********************************************
+
+FINE - HTTP/1.1 200 OK
+Date: Fri, 09 Nov 2012 11:59:01 GMT
+Content-Length: 33
+Set-Cookie: EJBSESSIONID=50cf1d2b-a940-4afb-8993-fff7f9cc6d83; Path=/
+Content-Type: application/json
+Connection: close
+Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+
+{"response":{"value":"hi rest!"}}
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Stopping network services
+INFO - Stopping server services
+
+
+
+
+
diff --git a/src/main/jbake/content/examples/rest-example-with-application.adoc b/src/main/jbake/content/examples/rest-example-with-application.adoc
new file mode 100755
index 0000000..8b9d47a
--- /dev/null
+++ b/src/main/jbake/content/examples/rest-example-with-application.adoc
@@ -0,0 +1,90 @@
+= REST Example with Application
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example rest-example-with-application can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-example-with-application
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  ApplicationConfig
+
+
+[source,java]
+----
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+@ApplicationPath("/rest-prefix")
+public class ApplicationConfig extends Application {
+    public Set<Class<?>> getClasses() {
+        return new HashSet<Class<?>>(Arrays.asList(SimpleRESTPojo.class, SimpleRESTEJB.class));
+    }
+}
+----
+
+
+==  SimpleRESTEJB
+
+
+[source,java]
+----
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import java.util.Date;
+
+@Singleton
+@Lock(LockType.READ)
+@Path("/ejb")
+public class SimpleRESTEJB {
+    @GET
+    public String ejb() {
+        return "ejb ok @ " + new Date().toString();
+    }
+}
+----
+
+
+==  SimpleRESTPojo
+
+
+[source,java]
+----
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import java.util.Date;
+
+@Path("/pojo")
+public class SimpleRESTPojo {
+    @GET
+    public String pojo() {
+        return "pojo ok @ " + new Date().toString();
+    }
+}
+----
+
+
+==  web.xml
+
+
+[source,xml]
+----
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         metadata-complete="false"
+         version="2.5">
+
+  <display-name>OpenEJB REST Example</display-name>
+</web-app>
+----
+
+    
diff --git a/src/main/jbake/content/examples/rest-example.adoc b/src/main/jbake/content/examples/rest-example.adoc
new file mode 100755
index 0000000..c62eecb
--- /dev/null
+++ b/src/main/jbake/content/examples/rest-example.adoc
@@ -0,0 +1,641 @@
+= REST Example
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example rest-example can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-example
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  CommentDAO
+
+
+[source,java]
+----
+package org.superbiz.rest.dao;
+
+import org.superbiz.rest.model.Comment;
+import org.superbiz.rest.model.Post;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import java.util.Collections;
+import java.util.List;
+
+@Stateless
+public class CommentDAO extends DAO {
+    @EJB
+    private DAO dao;
+
+    public List<Comment> list(long postId) {
+        Post post = dao.find(Post.class, postId);
+        if (post == null) {
+            throw new IllegalArgumentException("post with id " + postId + " not found");
+        }
+        return Collections.unmodifiableList(post.getComments());
+    }
+
+    public Comment create(String author, String content, long postId) {
+        Post post = dao.find(Post.class, postId);
+        if (post == null) {
+            throw new IllegalArgumentException("post with id " + postId + " not found");
+        }
+
+        Comment comment = new Comment();
+        comment.setAuthor(author);
+        comment.setContent(content);
+        dao.create(comment);
+        comment.setPost(post);
+        return comment;
+    }
+
+    public void delete(long id) {
+        dao.delete(Comment.class, id);
+    }
+
+    public Comment update(long id, String author, String content) {
+        Comment comment = dao.find(Comment.class, id);
+        if (comment == null) {
+            throw new IllegalArgumentException("comment with id " + id + " not found");
+        }
+
+        comment.setAuthor(author);
+        comment.setContent(content);
+        return dao.update(comment);
+    }
+}
+----
+
+
+==  DAO
+
+
+[source,java]
+----
+package org.superbiz.rest.dao;
+
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import java.util.List;
+
+/**
+ * Simply maps the entitymanager.
+ * It simplifies refactoring (unitName change) and wraps some logic (limited queries).
+ *
+ */
+@Stateless
+public class DAO {
+    @PersistenceContext(unitName = "blog")
+    private EntityManager em;
+
+    public <E> E create(E e) {
+        em.persist(e);
+        return e;
+    }
+
+    public <E> E update(E e) {
+        return em.merge(e);
+    }
+
+    public <E> void delete(Class<E> clazz, long id) {
+        em.remove(em.find(clazz, id));
+    }
+
+    public <E> E find(Class<E> clazz, long id) {
+        return em.find(clazz, id);
+    }
+
+    public <E> List<E> find(Class<E> clazz, String query, int min, int max) {
+        return queryRange(em.createQuery(query, clazz), min, max).getResultList();
+    }
+
+    public <E> List<E> namedFind(Class<E> clazz, String query, int min, int max) {
+        return queryRange(em.createNamedQuery(query, clazz), min, max).getResultList();
+    }
+
+    private static Query queryRange(Query query, int min, int max) {
+        if (max >= 0) {
+            query.setMaxResults(max);
+        }
+        if (min >= 0) {
+            query.setFirstResult(min);
+        }
+        return query;
+    }
+}
+----
+
+
+==  PostDAO
+
+
+[source,java]
+----
+package org.superbiz.rest.dao;
+
+import org.superbiz.rest.model.Post;
+import org.superbiz.rest.model.User;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import java.util.List;
+
+@Stateless
+public class PostDAO {
+    @EJB
+    private DAO dao;
+
+    public Post create(String title, String content, long userId) {
+        User user = dao.find(User.class, userId);
+        Post post = new Post();
+        post.setTitle(title);
+        post.setContent(content);
+        post.setUser(user);
+        return dao.create(post);
+    }
+
+    public Post find(long id) {
+        return dao.find(Post.class, id);
+    }
+
+    public List<Post> list(int first, int max) {
+        return dao.namedFind(Post.class, "post.list", first, max);
+    }
+
+    public void delete(long id) {
+        dao.delete(Post.class, id);
+    }
+
+    public Post update(long id, long userId, String title, String content) {
+        User user = dao.find(User.class, userId);
+        if (user == null) {
+            throw new IllegalArgumentException("user id " + id + " not found");
+        }
+
+        Post post = dao.find(Post.class, id);
+        if (post == null) {
+            throw new IllegalArgumentException("post id " + id + " not found");
+        }
+
+        post.setTitle(title);
+        post.setContent(content);
+        post.setUser(user);
+        return dao.update(post);
+    }
+}
+----
+
+
+==  UserDAO
+
+
+[source,java]
+----
+package org.superbiz.rest.dao;
+
+import org.superbiz.rest.model.User;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import java.util.List;
+
+@Stateless
+public class UserDAO {
+    @EJB
+    private DAO dao;
+
+    public User create(String name, String pwd, String mail) {
+        User user = new User();
+        user.setFullname(name);
+        user.setPassword(pwd);
+        user.setEmail(mail);
+        return dao.create(user);
+    }
+
+    public List<User> list(int first, int max) {
+        return dao.namedFind(User.class, "user.list", first, max);
+    }
+
+    public User find(long id) {
+        return dao.find(User.class, id);
+    }
+
+    public void delete(long id) {
+        dao.delete(User.class, id);
+    }
+
+    public User update(long id, String name, String pwd, String mail) {
+        User user = dao.find(User.class, id);
+        if (user == null) {
+            throw new IllegalArgumentException("setUser id " + id + " not found");
+        }
+
+        user.setFullname(name);
+        user.setPassword(pwd);
+        user.setEmail(mail);
+        return dao.update(user);
+    }
+}
+----
+
+
+==  Comment
+
+
+[source,java]
+----
+package org.superbiz.rest.model;
+
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+@Entity
+@NamedQueries({
+        @NamedQuery(name = "comment.list", query = "select c from Comment c")
+}
+----
+
+
+==  DatedModel
+
+
+[source,java]
+----
+package org.superbiz.rest.model;
+
+import javax.persistence.MappedSuperclass;
+import javax.persistence.PrePersist;
+import java.util.Date;
+
+@MappedSuperclass
+public abstract class DatedModel extends Model {
+    private Date created;
+
+    @PrePersist
+    public void create() {
+        created = new Date();
+    }
+
+    public Date getCreated() {
+        return created;
+    }
+
+    public void setCreated(Date created) {
+        this.created = created;
+    }
+}
+----
+
+
+==  Model
+
+
+[source,java]
+----
+package org.superbiz.rest.model;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+
+@MappedSuperclass
+@Access(AccessType.FIELD)
+@XmlAccessorType(XmlAccessType.FIELD)
+public abstract class Model {
+
+    @Id
+    @GeneratedValue
+    protected long id;
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+}
+----
+
+
+==  Post
+
+
+[source,java]
+----
+package org.superbiz.rest.model;
+
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+@NamedQueries({
+        @NamedQuery(name = "post.list", query = "select p from Post p")
+}
+----
+
+
+==  User
+
+
+[source,java]
+----
+package org.superbiz.rest.model;
+
+import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@Entity
+@NamedQueries({
+        @NamedQuery(name = "user.list", query = "select u from User u")
+}
+----
+
+
+==  CommentService
+
+
+[source,java]
+----
+package org.superbiz.rest.service;
+
+import org.superbiz.rest.dao.CommentDAO;
+import org.superbiz.rest.model.Comment;
+
+import javax.ejb.EJB;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import java.util.List;
+
+@Path("/api/comment")
+@Produces({"text/xml", "application/json"})
+public class CommentService {
+    @EJB
+    private CommentDAO commentDao;
+
+    @Path("/create")
+    @PUT
+    public Comment create(@QueryParam("author") String author,
+                          @QueryParam("content") String content,
+                          @QueryParam("postId") long postId) {
+        return commentDao.create(author, content, postId);
+    }
+
+    @Path("/list/{postId}")
+    @GET
+    public List<Comment> list(@PathParam("postId") long postId) {
+        return commentDao.list(postId);
+    }
+
+    @Path("/delete/{id}")
+    @DELETE
+    public void delete(@PathParam("id") long id) {
+        commentDao.delete(id);
+    }
+
+    @Path("/update/{id}")
+    @POST
+    public Comment update(@PathParam("id") long id,
+                          @QueryParam("author") String author,
+                          @QueryParam("content") String content) {
+        return commentDao.update(id, author, content);
+    }
+}
+----
+
+
+==  PostService
+
+
+[source,java]
+----
+package org.superbiz.rest.service;
+
+import org.superbiz.rest.dao.PostDAO;
+import org.superbiz.rest.model.Post;
+
+import javax.ejb.EJB;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import java.util.List;
+
+@Path("/api/post")
+@Produces({"text/xml", "application/json"})
+public class PostService {
+    @EJB
+    private PostDAO dao;
+
+    @Path("/create")
+    @PUT
+    public Post create(@QueryParam("title") String title,
+                       @QueryParam("content") String content,
+                       @QueryParam("userId") long userId) {
+        return dao.create(title, content, userId);
+    }
+
+    @Path("/list")
+    @GET
+    public List<Post> list(@QueryParam("first") @DefaultValue("0") int first,
+                           @QueryParam("max") @DefaultValue("20") int max) {
+        return dao.list(first, max);
+    }
+
+    @Path("/show/{id}")
+    @GET
+    public Post show(@PathParam("id") long id) {
+        return dao.find(id);
+    }
+
+    @Path("/delete/{id}")
+    @DELETE
+    public void delete(@PathParam("id") long id) {
+        dao.delete(id);
+    }
+
+    @Path("/update/{id}")
+    @POST
+    public Post update(@PathParam("id") long id,
+                       @QueryParam("userId") long userId,
+                       @QueryParam("title") String title,
+                       @QueryParam("content") String content) {
+        return dao.update(id, userId, title, content);
+    }
+}
+----
+
+
+==  UserService
+
+
+[source,java]
+----
+package org.superbiz.rest.service;
+
+import org.superbiz.rest.dao.UserDAO;
+import org.superbiz.rest.model.User;
+
+import javax.ejb.EJB;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import java.util.List;
+
+@Path("/api/user")
+@Produces({"text/xml", "application/json"})
+public class UserService {
+    @EJB
+    private UserDAO dao;
+
+    @Path("/create")
+    @PUT
+    public User create(@QueryParam("name") String name,
+                       @QueryParam("pwd") String pwd,
+                       @QueryParam("mail") String mail) {
+        return dao.create(name, pwd, mail);
+    }
+
+    @Path("/list")
+    @GET
+    public List<User> list(@QueryParam("first") @DefaultValue("0") int first,
+                           @QueryParam("max") @DefaultValue("20") int max) {
+        return dao.list(first, max);
+    }
+
+    @Path("/show/{id}")
+    @GET
+    public User show(@PathParam("id") long id) {
+        return dao.find(id);
+    }
+
+    @Path("/delete/{id}")
+    @DELETE
+    public void delete(@PathParam("id") long id) {
+        dao.delete(id);
+    }
+
+    @Path("/update/{id}")
+    @POST
+    public User update(@PathParam("id") long id,
+                       @QueryParam("name") String name,
+                       @QueryParam("pwd") String pwd,
+                       @QueryParam("mail") String mail) {
+        return dao.update(id, name, pwd, mail);
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence version="2.0"
+             xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
+                       http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+  <persistence-unit name="blog">
+    <jta-data-source>My DataSource</jta-data-source>
+    <non-jta-data-source>My Unmanaged DataSource</non-jta-data-source>
+    <class>org.superbiz.rest.model.User</class>
+    <class>org.superbiz.rest.model.Post</class>
+    <class>org.superbiz.rest.model.Comment</class>
+    <class>org.superbiz.rest.model.Model</class>
+    <class>org.superbiz.rest.model.DatedModel</class>
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  web.xml
+
+
+[source,xml]
+----
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         metadata-complete="false"
+         version="2.5">
+
+  <display-name>OpenEJB REST Example</display-name>
+</web-app>
+----
+
+    
+
+==  UserDaoTest
+
+
+[source,java]
+----
+packagenull
+}
+----
+
+
+==  UserServiceTest
+
+
+[source,java]
+----
+packagenull
+}
+----
+
diff --git a/src/main/jbake/content/examples/rest-jaas.adoc b/src/main/jbake/content/examples/rest-jaas.adoc
new file mode 100755
index 0000000..7587b09
--- /dev/null
+++ b/src/main/jbake/content/examples/rest-jaas.adoc
@@ -0,0 +1,9 @@
+= rest-jaas
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example rest-jaas can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-jaas
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/rest-on-ejb.adoc b/src/main/jbake/content/examples/rest-on-ejb.adoc
new file mode 100755
index 0000000..a9f344b
--- /dev/null
+++ b/src/main/jbake/content/examples/rest-on-ejb.adoc
@@ -0,0 +1,360 @@
+= REST on EJB
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example rest-on-ejb can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-on-ejb
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  User
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@Entity
+@NamedQueries({
+        @NamedQuery(name = "user.list", query = "select u from User u")
+}
+----
+
+
+==  UserService
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Outputs are copied because of the enhancement of OpenJPA.
+ *
+ */
+@Singleton
+@Lock(LockType.WRITE)
+@Path("/user")
+@Produces(MediaType.APPLICATION_XML)
+public class UserService {
+    @PersistenceContext
+    private EntityManager em;
+
+    @Path("/create")
+    @PUT
+    public User create(@QueryParam("name") String name,
+                       @QueryParam("pwd") String pwd,
+                       @QueryParam("mail") String mail) {
+        User user = new User();
+        user.setFullname(name);
+        user.setPassword(pwd);
+        user.setEmail(mail);
+        em.persist(user);
+        return user;
+    }
+
+    @Path("/list")
+    @GET
+    public List<User> list(@QueryParam("first") @DefaultValue("0") int first,
+                           @QueryParam("max") @DefaultValue("20") int max) {
+        List<User> users = new ArrayList<User>();
+        List<User> found = em.createNamedQuery("user.list", User.class).setFirstResult(first).setMaxResults(max).getResultList();
+        for (User u : found) {
+            users.add(u.copy());
+        }
+        return users;
+    }
+
+    @Path("/show/{id}")
+    @GET
+    public User find(@PathParam("id") long id) {
+        User user = em.find(User.class, id);
+        if (user == null) {
+            return null;
+        }
+        return user.copy();
+    }
+
+    @Path("/delete/{id}")
+    @DELETE
+    public void delete(@PathParam("id") long id) {
+        User user = em.find(User.class, id);
+        if (user != null) {
+            em.remove(user);
+        }
+    }
+
+    @Path("/update/{id}")
+    @POST
+    public Response update(@PathParam("id") long id,
+                           @QueryParam("name") String name,
+                           @QueryParam("pwd") String pwd,
+                           @QueryParam("mail") String mail) {
+        User user = em.find(User.class, id);
+        if (user == null) {
+            throw new IllegalArgumentException("user id " + id + " not found");
+        }
+
+        user.setFullname(name);
+        user.setPassword(pwd);
+        user.setEmail(mail);
+        em.merge(user);
+
+        return Response.ok(user.copy()).build();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence version="2.0"
+             xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
+                       http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+  <persistence-unit name="user">
+    <jta-data-source>My DataSource</jta-data-source>
+    <non-jta-data-source>My Unmanaged DataSource</non-jta-data-source>
+    <class>org.superbiz.rest.User</class>
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  UserServiceTest
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openejb.OpenEjbContainer;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import javax.ws.rs.core.Response;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.fail;
+
+public class UserServiceTest {
+    private static Context context;
+    private static UserService service;
+    private static List<User> users = new ArrayList<User>();
+
+    @BeforeClass
+    public static void start() throws NamingException {
+        Properties properties = new Properties();
+        properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true");
+        context = EJBContainer.createEJBContainer(properties).getContext();
+
+        // create some records
+        service = (UserService) context.lookup("java:global/rest-on-ejb/UserService");
+        users.add(service.create("foo", "foopwd", "foo@foo.com"));
+        users.add(service.create("bar", "barpwd", "bar@bar.com"));
+    }
+
+    @AfterClass
+    public static void close() throws NamingException {
+        if (context != null) {
+            context.close();
+        }
+    }
+
+    @Test
+    public void create() {
+        int expected = service.list(0, 100).size() + 1;
+        Response response = WebClient.create("http://localhost:4204")
+                .path("/user/create")
+                .query("name", "dummy")
+                .query("pwd", "unbreakable")
+                .query("mail", "foo@bar.fr")
+                .put(null);
+        List<User> list = service.list(0, 100);
+        for (User u : list) {
+            if (!users.contains(u)) {
+                service.delete(u.getId());
+                return;
+            }
+        }
+        fail("user was not added");
+    }
+
+    @Test
+    public void delete() throws Exception {
+        User user = service.create("todelete", "dontforget", "delete@me.com");
+
+        WebClient.create("http://localhost:4204").path("/user/delete/" + user.getId()).delete();
+
+        user = service.find(user.getId());
+        assertNull(user);
+    }
+
+    @Test
+    public void show() {
+        User user = WebClient.create("http://localhost:4204")
+                .path("/user/show/" + users.iterator().next().getId())
+                .get(User.class);
+        assertEquals("foo", user.getFullname());
+        assertEquals("foopwd", user.getPassword());
+        assertEquals("foo@foo.com", user.getEmail());
+    }
+
+    @Test
+    public void list() throws Exception {
+        String users = WebClient.create("http://localhost:4204")
+                .path("/user/list")
+                .get(String.class);
+        assertEquals(
+                "<users>" +
+                        "<user>" +
+                        "<email>foo@foo.com</email>" +
+                        "<fullname>foo</fullname>" +
+                        "<id>1</id>" +
+                        "<password>foopwd</password>" +
+                        "</user>" +
+                        "<user>" +
+                        "<email>bar@bar.com</email>" +
+                        "<fullname>bar</fullname>" +
+                        "<id>2</id>" +
+                        "<password>barpwd</password>" +
+                        "</user>" +
+                        "</users>", users);
+    }
+
+    @Test
+    public void update() throws Exception {
+        User created = service.create("name", "pwd", "mail");
+        Response response = WebClient.create("http://localhost:4204")
+                .path("/user/update/" + created.getId())
+                .query("name", "corrected")
+                .query("pwd", "userpwd")
+                .query("mail", "it@is.ok")
+                .post(null);
+
+        JAXBContext ctx = JAXBContext.newInstance(User.class);
+        Unmarshaller unmarshaller = ctx.createUnmarshaller();
+        User modified = (User) unmarshaller.unmarshal(InputStream.class.cast(response.getEntity()));
+
+        assertEquals("corrected", modified.getFullname());
+        assertEquals("userpwd", modified.getPassword());
+        assertEquals("it@is.ok", modified.getEmail());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.rest.UserServiceTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/rest-on-ejb
+INFO - openejb.base = /Users/dblevins/examples/rest-on-ejb
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/rest-on-ejb/target/classes
+INFO - Beginning load: /Users/dblevins/examples/rest-on-ejb/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/rest-on-ejb
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean UserService: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.rest.UserServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=user)
+INFO - Configuring Service(id=Default JDBC Database, type=Resource, provider-id=Default JDBC Database)
+INFO - Auto-creating a Resource with id 'Default JDBC Database' of type 'DataSource for 'user'.
+INFO - Configuring Service(id=Default Unmanaged JDBC Database, type=Resource, provider-id=Default Unmanaged JDBC Database)
+INFO - Auto-creating a Resource with id 'Default Unmanaged JDBC Database' of type 'DataSource for 'user'.
+INFO - Adjusting PersistenceUnit user <jta-data-source> to Resource ID 'Default JDBC Database' from 'My DataSource'
+INFO - Adjusting PersistenceUnit user <non-jta-data-source> to Resource ID 'Default Unmanaged JDBC Database' from 'My Unmanaged DataSource'
+INFO - Enterprise application "/Users/dblevins/examples/rest-on-ejb" loaded.
+INFO - Assembling app: /Users/dblevins/examples/rest-on-ejb
+INFO - PersistenceUnit(name=user, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 407ms
+INFO - Jndi(name="java:global/rest-on-ejb/UserService!org.superbiz.rest.UserService")
+INFO - Jndi(name="java:global/rest-on-ejb/UserService")
+INFO - Jndi(name="java:global/EjbModule1789767313/org.superbiz.rest.UserServiceTest!org.superbiz.rest.UserServiceTest")
+INFO - Jndi(name="java:global/EjbModule1789767313/org.superbiz.rest.UserServiceTest")
+INFO - Created Ejb(deployment-id=org.superbiz.rest.UserServiceTest, ejb-name=org.superbiz.rest.UserServiceTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=UserService, ejb-name=UserService, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.rest.UserServiceTest, ejb-name=org.superbiz.rest.UserServiceTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=UserService, ejb-name=UserService, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/rest-on-ejb)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Creating ServerService(id=cxf-rs)
+INFO - Initializing network services
+  ** Starting Services **
+  NAME                 IP              PORT  
+  httpejbd             127.0.0.1       4204  
+  admin thread         127.0.0.1       4200  
+  ejbd                 127.0.0.1       4201  
+  ejbd                 127.0.0.1       4203  
+-------
+Ready!
+WARN - Query "select u from User u" is removed from cache  excluded permanently. Query "select u from User u" is not cached because it uses pagination..
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.102 sec
+
+Results :
+
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/rest-xml-json.adoc b/src/main/jbake/content/examples/rest-xml-json.adoc
new file mode 100755
index 0000000..5628b87
--- /dev/null
+++ b/src/main/jbake/content/examples/rest-xml-json.adoc
@@ -0,0 +1,394 @@
+= Simple REST
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example rest-xml-json can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-xml-json
+
+
+Defining a REST service is pretty easy, simply ad @Path annotation to a class then define on methods
+the HTTP method to use (@GET, @POST, ...).
+
+= The Code
+
+==  The REST service: @Path, @Produces, @Consumes
+
+Here we see a bean that uses the Bean-Managed Concurrency option as well as the @Startup annotation which causes the bean to be instantiated by the container when the application starts. Singleton beans with @ConcurrencyManagement(BEAN) are responsible for their own thread-safety. The bean shown is a simple properties "registry" and provides a place where options could be set and retrieved by all beans in the application.
+
+Actually lines:
+
+
+[source,java]
+----
+@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+
+are optional since it is the default configuration. And these lines can be configured by method too
+if you need to be more precise.
+
+@Path("/greeting")
+@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+public class GreetingService {
+    @GET
+    public Response message() {
+        return new Response("Hi REST!");
+    }
+
+    @POST
+    public Response lowerCase(final Request message) {
+        return new Response(message.getValue().toLowerCase());
+    }
+}
+----
+
+
+=  Testing
+
+==  Test for the JAXRS service
+
+The test uses the OpenEJB ApplicationComposer to make it trivial.
+
+The idea is first to activate the jaxrs services. This is done using @EnableServices annotation.
+
+Then we create on the fly the application simply returning an object representing the web.xml. Here we simply
+use it to define the context root but you can use it to define your REST Application too. And to complete the
+application definition we add @Classes annotation to define the set of classes to use in this app.
+
+Finally to test it we use cxf client API to call the REST service in get() and post() methods.
+
+Side note: to show we use JSON or XML depending on the test method we activated on EnableServices the attribute httpDebug
+which prints the http messages in the logs.
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.Classes;
+import org.apache.openejb.junit.EnableServices;
+import org.apache.openejb.junit.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.ws.rs.core.MediaType;
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+@EnableServices(value = "jaxrs", httpDebug = true)
+@RunWith(ApplicationComposer.class)
+public class GreetingServiceTest {
+    @Module
+    @Classes(GreetingService.class)
+    public WebApp app() {
+        return new WebApp().contextRoot("test");
+    }
+
+    @Test
+    public void getXml() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+                .accept(MediaType.APPLICATION_XML_TYPE)
+                .get(Response.class).getValue();
+        assertEquals("Hi REST!", message);
+    }
+
+    @Test
+    public void postXml() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+                .accept(MediaType.APPLICATION_XML_TYPE)
+                .post(new Request("Hi REST!"), Response.class).getValue();
+        assertEquals("hi rest!", message);
+    }
+
+    @Test
+    public void getJson() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+                .accept(MediaType.APPLICATION_JSON_TYPE)
+                .get(Response.class).getValue();
+        assertEquals("Hi REST!", message);
+    }
+
+    @Test
+    public void postJson() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+                .accept(MediaType.APPLICATION_JSON_TYPE)
+                .post(new Request("Hi REST!"), Response.class).getValue();
+        assertEquals("hi rest!", message);
+    }
+}
+----
+
+
+
+= Running
+
+Running the example is fairly simple. In the "rest-xml-json" directory run:
+
+    $ mvn clean install
+
+Which should create output like the following.
+
+    /opt/softs/java/jdk1.6.0_30/bin/java -ea -Didea.launcher.port=7534 -Didea.launcher.bin.path=/opt/softs/idea/bin -Dfile.encoding=UTF-8 -classpath /opt/softs/idea/lib/idea_rt.jar:/opt/softs/idea/plugins/junit/lib/junit-rt.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/plugin.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/javaws.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/jce.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/charsets.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/resources.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/deploy.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/management-agent.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/jsse.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/rt.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/localedata.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/sunjce_provider.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/sunpkcs11.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/dnsns.jar:/opt/dev/openejb/openejb-trunk/examples/rest-xml-json/target/test-classes:/opt/dev/openejb/openejb-trunk/examples/rest-xml-json/target/classes:/home/rmannibucau/.m2/repository/org/apache/openejb/javaee-api/6.0-4/javaee-api-6.0-4.jar:/home/rmannibucau/.m2/repository/junit/junit/4.10/junit-4.10.jar:/home/rmannibucau/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-cxf-rs/4.5.1/openejb-cxf-rs-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-http/4.5.1/openejb-http-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-core/4.5.1/openejb-core-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/mbean-annotation-api/4.5.1/mbean-annotation-api-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-jpa-integration/4.5.1/openejb-jpa-integration-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-api/4.5.1/openejb-api-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-loader/4.5.1/openejb-loader-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-javaagent/4.5.1/openejb-javaagent-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-jee/4.5.1/openejb-jee-4.5.1.jar:/home/rmannibucau/.m2/repository/com/sun/xml/bind/jaxb-impl/2.1.13/jaxb-impl-2.1.13.jar:/home/rmannibucau/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/activemq-ra/5.7.0/activemq-ra-5.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/activemq-core/5.7.0/activemq-core-5.7.0.jar:/home/rmannibucau/.m2/repository/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/kahadb/5.7.0/kahadb-5.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/protobuf/activemq-protobuf/1.1/activemq-protobuf-1.1.jar:/home/rmannibucau/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/home/rmannibucau/.m2/repository/commons-net/commons-net/3.1/commons-net-3.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/components/geronimo-connector/3.1.1/geronimo-connector-3.1.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/components/geronimo-transaction/3.1.1/geronimo-transaction-3.1.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-connector_1.6_spec/1.0/geronimo-j2ee-connector_1.6_spec-1.0.jar:/home/rmannibucau/.m2/repository/org/objectweb/howl/howl/1.0.1-1/howl-1.0.1-1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/javamail/geronimo-javamail_1.4_mail/1.8.2/geronimo-javamail_1.4_mail-1.8.2.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-asm-shaded/3.12/xbean-asm-shaded-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-finder-shaded/3.12/xbean-finder-shaded-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-reflect/3.12/xbean-reflect-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-naming/3.12/xbean-naming-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-bundleutils/3.12/xbean-bundleutils-3.12.jar:/home/rmannibucau/.m2/repository/org/hsqldb/hsqldb/2.2.8/hsqldb-2.2.8.jar:/home/rmannibucau/.m2/repository/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.jar:/home/rmannibucau/.m2/repository/commons-pool/commons-pool/1.5.7/commons-pool-1.5.7.jar:/home/rmannibucau/.m2/repository/org/codehaus/swizzle/swizzle-stream/1.6.1/swizzle-stream-1.6.1.jar:/home/rmannibucau/.m2/repository/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar:/home/rmannibucau/.m2/repository/org/quartz-scheduler/quartz/2.1.6/quartz-2.1.6.jar:/home/rmannibucau/.m2/repository/org/slf4j/slf4j-jdk14/1.7.2/slf4j-jdk14-1.7.2.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-impl/1.1.6/openwebbeans-impl-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-spi/1.1.6/openwebbeans-spi-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ejb/1.1.6/openwebbeans-ejb-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ee/1.1.6/openwebbeans-ee-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ee-common/1.1.6/openwebbeans-ee-common-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-web/1.1.6/openwebbeans-web-1.1.6.jar:/home/rmannibucau/.m2/repository/org/javassist/javassist/3.15.0-GA/javassist-3.15.0-GA.jar:/home/rmannibucau/.m2/repository/org/apache/openjpa/openjpa/2.2.0/openjpa-2.2.0.jar:/home/rmannibucau/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/home/rmannibucau/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/home/rmannibucau/.m2/repository/net/sourceforge/serp/serp/1.13.1/serp-1.13.1.jar:/home/rmannibucau/.m2/repository/asm/asm/3.2/asm-3.2.jar:/home/rmannibucau/.m2/repository/org/apache/bval/bval-core/0.5/bval-core-0.5.jar:/home/rmannibucau/.m2/repository/commons-beanutils/commons-beanutils-core/1.8.3/commons-beanutils-core-1.8.3.jar:/home/rmannibucau/.m2/repository/org/apache/bval/bval-jsr303/0.5/bval-jsr303-0.5.jar:/home/rmannibucau/.m2/repository/org/fusesource/jansi/jansi/1.8/jansi-1.8.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-server/4.5.1/openejb-server-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-client/4.5.1/openejb-client-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-ejbd/4.5.1/openejb-ejbd-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-rest/4.5.1/openejb-rest-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-cxf-transport/4.5.1/openejb-cxf-transport-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-transports-http/2.7.0/cxf-rt-transports-http-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-api/2.7.0/cxf-api-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/ws/xmlschema/xmlschema-core/2.0.3/xmlschema-core-2.0.3.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-core/2.7.0/cxf-rt-core-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-frontend-jaxrs/2.7.0/cxf-rt-frontend-jaxrs-2.7.0.jar:/home/rmannibucau/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0-m10/javax.ws.rs-api-2.0-m10.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-bindings-xml/2.7.0/cxf-rt-bindings-xml-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-extension-providers/2.7.0/cxf-rt-rs-extension-providers-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-extension-search/2.7.0/cxf-rt-rs-extension-search-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-security-cors/2.7.0/cxf-rt-rs-security-cors-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-security-oauth2/2.7.0/cxf-rt-rs-security-oauth2-2.7.0.jar:/home/rmannibucau/.m2/repository/org/codehaus/jettison/jettison/1.3/jettison-1.3.jar:/home/rmannibucau/.m2/repository/stax/stax-api/1.0.1/stax-api-1.0.1.jar com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 org.superbiz.rest.GreetingServiceTest
+    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Creating TransactionManager(id=Default Transaction Manager)
+    INFO - Creating SecurityService(id=Default Security Service)
+    INFO - Initializing network services
+    INFO - Creating ServerService(id=httpejbd)
+    INFO - Using 'print=true'
+    INFO - Using 'indent.xml=true'
+    INFO - Creating ServerService(id=cxf-rs)
+    INFO - Initializing network services
+    INFO - Starting service httpejbd
+    INFO - Started service httpejbd
+    INFO - Starting service cxf-rs
+    INFO - Started service cxf-rs
+    INFO -   ** Bound Services **
+    INFO -   NAME                 IP              PORT  
+    INFO -   httpejbd             127.0.0.1       4204  
+    INFO - -------
+    INFO - Ready!
+    INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+    INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+    INFO - Creating Container(id=Default Managed Container)
+    INFO - Using directory /tmp for stateful session passivation
+    INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+    INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+    INFO - Existing thread singleton service in SystemInstance() null
+    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
+    INFO - Succeeded in installing singleton service
+    INFO - OpenWebBeans Container is starting...
+    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+    INFO - All injection points are validated successfully.
+    INFO - OpenWebBeans Container has started, it took 102 ms.
+    INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+    INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+    INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+    FINE - ******************* REQUEST ******************
+    GET http://localhost:4204/test/greeting/
+    Host=localhost:4204
+    User-Agent=Apache CXF 2.7.0
+    Connection=keep-alive
+    Accept=application/xml
+    Content-Type=*/*
+    Pragma=no-cache
+    Cache-Control=no-cache
+    
+    
+    **********************************************
+    
+    FINE - HTTP/1.1 200 OK
+    Date: Fri, 09 Nov 2012 11:59:00 GMT
+    Content-Length: 44
+    Set-Cookie: EJBSESSIONID=fc5037fa-641c-495d-95ca-0755cfa50beb; Path=/
+    Content-Type: application/xml
+    Connection: close
+    Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+    
+
+[source,xml]
+----
+<response><value>Hi REST!</value></response>
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Stopping network services
+INFO - Stopping server services
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Using 'print=true'
+INFO - Using 'indent.xml=true'
+INFO - Creating ServerService(id=cxf-rs)
+INFO - Initializing network services
+INFO - Starting service httpejbd
+INFO - Started service httpejbd
+INFO - Starting service cxf-rs
+INFO - Started service cxf-rs
+INFO -   ** Bound Services **
+INFO -   NAME                 IP              PORT  
+INFO -   httpejbd             127.0.0.1       4204  
+INFO - -------
+INFO - Ready!
+INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance() null
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
+INFO - Succeeded in installing singleton service
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 11 ms.
+INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+FINE - ******************* REQUEST ******************
+POST http://localhost:4204/test/greeting/
+Host=localhost:4204
+Content-Length=97
+User-Agent=Apache CXF 2.7.0
+Connection=keep-alive
+Accept=application/xml
+Content-Type=application/xml
+Pragma=no-cache
+Cache-Control=no-cache
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><request><value>Hi REST!</value></request>
+**********************************************
+
+FINE - HTTP/1.1 200 OK
+Date: Fri, 09 Nov 2012 11:59:00 GMT
+Content-Length: 44
+Set-Cookie: EJBSESSIONID=7cb2246d-5738-4a85-aac5-c0fb5340d36a; Path=/
+Content-Type: application/xml
+Connection: close
+Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+
+<response><value>hi rest!</value></response>
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Stopping network services
+INFO - Stopping server services
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Using 'print=true'
+INFO - Using 'indent.xml=true'
+INFO - Creating ServerService(id=cxf-rs)
+INFO - Initializing network services
+INFO - Starting service httpejbd
+INFO - Started service httpejbd
+INFO - Starting service cxf-rs
+INFO - Started service cxf-rs
+INFO -   ** Bound Services **
+INFO -   NAME                 IP              PORT  
+INFO -   httpejbd             127.0.0.1       4204  
+INFO - -------
+INFO - Ready!
+INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance() null
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
+INFO - Succeeded in installing singleton service
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 10 ms.
+INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+FINE - ******************* REQUEST ******************
+GET http://localhost:4204/test/greeting/
+Host=localhost:4204
+User-Agent=Apache CXF 2.7.0
+Connection=keep-alive
+Accept=application/json
+Content-Type=*/*
+Pragma=no-cache
+Cache-Control=no-cache
+
+
+**********************************************
+
+FINE - HTTP/1.1 200 OK
+Date: Fri, 09 Nov 2012 11:59:00 GMT
+Content-Length: 33
+Set-Cookie: EJBSESSIONID=7112a057-fc4c-4f52-a556-1617320d2275; Path=/
+Content-Type: application/json
+Connection: close
+Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+
+{"response":{"value":"Hi REST!"}}
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Stopping network services
+INFO - Stopping server services
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Using 'print=true'
+INFO - Using 'indent.xml=true'
+INFO - Creating ServerService(id=cxf-rs)
+INFO - Initializing network services
+INFO - Starting service httpejbd
+INFO - Started service httpejbd
+INFO - Starting service cxf-rs
+INFO - Started service cxf-rs
+INFO -   ** Bound Services **
+INFO -   NAME                 IP              PORT  
+INFO -   httpejbd             127.0.0.1       4204  
+INFO - -------
+INFO - Ready!
+INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance() null
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
+INFO - Succeeded in installing singleton service
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 10 ms.
+INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+FINE - ******************* REQUEST ******************
+POST http://localhost:4204/test/greeting/
+Host=localhost:4204
+Content-Length=97
+User-Agent=Apache CXF 2.7.0
+Connection=keep-alive
+Accept=application/json
+Content-Type=application/xml
+Pragma=no-cache
+Cache-Control=no-cache
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><request><value>Hi REST!</value></request>
+**********************************************
+
+FINE - HTTP/1.1 200 OK
+Date: Fri, 09 Nov 2012 11:59:01 GMT
+Content-Length: 33
+Set-Cookie: EJBSESSIONID=50cf1d2b-a940-4afb-8993-fff7f9cc6d83; Path=/
+Content-Type: application/json
+Connection: close
+Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+
+{"response":{"value":"hi rest!"}}
+INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Stopping network services
+INFO - Stopping server services
+
+
+
+
+
diff --git a/src/main/jbake/content/examples/scala-basic.adoc b/src/main/jbake/content/examples/scala-basic.adoc
new file mode 100755
index 0000000..e60894c
--- /dev/null
+++ b/src/main/jbake/content/examples/scala-basic.adoc
@@ -0,0 +1,9 @@
+= scala-basic
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example scala-basic can be browsed at https://github.com/apache/tomee/tree/master/examples/scala-basic
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/schedule-events.adoc b/src/main/jbake/content/examples/schedule-events.adoc
new file mode 100755
index 0000000..5d55798
--- /dev/null
+++ b/src/main/jbake/content/examples/schedule-events.adoc
@@ -0,0 +1,185 @@
+= Schedule CDI Events
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example schedule-events can be browsed at https://github.com/apache/tomee/tree/master/examples/schedule-events
+
+
+This example uses a nice CDI/EJB combination to schedule CDI Events.  This is useful if you want CDI Events that fire regularly or at a specific time or calendar date.
+
+Effectively this is a simple wrapper around the `BeanManager.fireEvent(Object,Annotations...)` method that adds `ScheduleExpression` into the mix.
+
+==  ScheduleExpression and @Timeout
+
+The logic here is simple, we effecitvely expose a method identical to `BeanManager.fireEvent(Object, Annotations...)` and wrap it as  `scheduleEvent(ScheduleExpression, Object, Annotation...)`
+
+To do that we use the EJB `TimerService` (under the covers this is Quartz) and create an `@Timeout` method which will be run when the `ScheduleExpression` activates.
+
+The `@Timeout` method, simply called `timeout`, takes the event and fires it.
+
+
+[source,java]
+----
+@Singleton
+@Lock(LockType.READ)
+public class Scheduler {
+
+    @Resource
+    private TimerService timerService;
+
+    @Resource
+    private BeanManager beanManager;
+
+    public void scheduleEvent(ScheduleExpression schedule, Object event, Annotation... qualifiers) {
+
+        timerService.createCalendarTimer(schedule, new TimerConfig(new EventConfig(event, qualifiers), false));
+    }
+
+    @Timeout
+    private void timeout(Timer timer) {
+        final EventConfig config = (EventConfig) timer.getInfo();
+
+        beanManager.fireEvent(config.getEvent(), config.getQualifiers());
+    }
+
+    // Doesn't actually need to be serializable, just has to implement it
+    private final class EventConfig implements Serializable {
+
+        private final Object event;
+        private final Annotation[] qualifiers;
+
+        private EventConfig(Object event, Annotation[] qualifiers) {
+            this.event = event;
+            this.qualifiers = qualifiers;
+        }
+
+        public Object getEvent() {
+            return event;
+        }
+
+        public Annotation[] getQualifiers() {
+            return qualifiers;
+        }
+    }
+}
+----
+
+
+Then to use it, have `Scheduler` injected as an EJB and enjoy.
+
+
+[source,java]
+----
+public class SomeBean {
+
+    @EJB
+    private Scheduler scheduler;
+
+    public void doit() throws Exception {
+
+        // every five minutes
+        final ScheduleExpression schedule = new ScheduleExpression()
+                .hour("*")
+                .minute("*")
+                .second("*/5");
+
+        scheduler.scheduleEvent(schedule, new TestEvent("five"));
+    }
+
+    /**
+     * Event will fire every five minutes
+     */
+    public void observe(@Observes TestEvent event) {
+        // process the event
+    }
+
+}
+----
+
+
+==  Test Case
+
+A working test case for the above would be as follows:
+
+
+[source,java]
+----
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.ejb.AccessTimeout;
+import javax.ejb.EJB;
+import javax.ejb.ScheduleExpression;
+import javax.ejb.embeddable.EJBContainer;
+import javax.enterprise.event.Observes;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class SchedulerTest {
+
+    public static final CountDownLatch events = new CountDownLatch(3);
+
+    @EJB
+    private Scheduler scheduler;
+
+    @Test
+    public void test() throws Exception {
+
+        final ScheduleExpression schedule = new ScheduleExpression()
+                .hour("*")
+                .minute("*")
+                .second("*/5");
+
+        scheduler.scheduleEvent(schedule, new TestEvent("five"));
+
+        Assert.assertTrue(events.await(1, TimeUnit.MINUTES));
+    }
+
+
+    @AccessTimeout(value = 1, unit = TimeUnit.MINUTES)
+    public void observe(@Observes TestEvent event) {
+        if ("five".equals(event.getMessage())) {
+            events.countDown();
+        }
+    }
+
+    public static class TestEvent {
+        private final String message;
+
+        public TestEvent(String message) {
+            this.message = message;
+        }
+
+        public String getMessage() {
+            return message;
+        }
+    }
+
+    @Before
+    public void setup() throws Exception {
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+    }
+}
+----
+
+
+
+==  You must know
+
+ - CDI Events are not multi-treaded
+
+If there are 10 observers and each of them take 7 minutes to execute, then the total execution time for the one event is 70 minutes.  It would do you absolutely no good to schedule that event to fire more frequently than 70 minutes.
+
+What would happen if you did?  Depends on the `@Singleton` `@Lock` policy
+
+ - `@Lock(WRITE)` is the default.  In this mode the `timeout` method would essentially be locked until the previous invocation completes.  Having it fire every 5 minutes even though you can only process one every 70 minutes would eventually cause all the pooled timer threads to be waiting on your Singleton.
+ - `@Lock(READ)` allows for parallel execution of the `timeout` method.  Events will fire in parallel for a while.  However since they actually are taking 70 minutes each, within an hour or so we'll run out of threads in the timer pool just like above.
+
+The elegant solution is to use `@Lock(WRITE)` then specify some short timeout like `@AccessTimeout(value = 1, unit = TimeUnit.MINUTES)` on the `timeout` method.  When the next 5 minute invocation is triggered, it will wait up until 1 minute to get access to the Singleton before giving up.  This will keep your timer pool from filling up with backed up jobs -- the "overflow" is simply discarded.
+
diff --git a/src/main/jbake/content/examples/schedule-expression.adoc b/src/main/jbake/content/examples/schedule-expression.adoc
new file mode 100755
index 0000000..de97e07
--- /dev/null
+++ b/src/main/jbake/content/examples/schedule-expression.adoc
@@ -0,0 +1,185 @@
+= Schedule Expression
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example schedule-expression can be browsed at https://github.com/apache/tomee/tree/master/examples/schedule-expression
+
+
+In this example we exercise the `TimerService`.
+
+
+NOTE: "The TimerService interface provides enterprise bean components with access to the container-provided Timer Service. 
+
+The EJB Timer Service allows entity beans, stateless session beans, and message-driven beans to be registered for timer 
+callback events at a specified time, after a specified elapsed time, or after a specified interval."
+
+For a complete description of the TimerService, please refer to the Java EE tutorial dedicated to the 
+link:http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html[Timer Service].
+
+==  FarmerBrown
+
+At `PostConstruct` we create 5 programmatic timers. First four will most likely not be triggered during the test
+execution, however the last one will timeout a couple of times.
+
+Each timer contains an info attribute, which can be inspected at timeout.   
+
+
+[source,java]
+----
+package org.superbiz.corn;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.ScheduleExpression;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.ejb.Timeout;
+import javax.ejb.Timer;
+import javax.ejb.TimerConfig;
+import javax.ejb.TimerService;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * This is where we schedule all of Farmer Brown's corn jobs
+ *
+ * @version $Revision$ $Date$
+ */
+@Singleton
+@Lock(LockType.READ) // allows timers to execute in parallel
+@Startup
+public class FarmerBrown {
+
+    private final AtomicInteger checks = new AtomicInteger();
+
+    @Resource
+    private TimerService timerService;
+
+    @PostConstruct
+    private void construct() {
+        final TimerConfig plantTheCorn = new TimerConfig("plantTheCorn", false);
+        timerService.createCalendarTimer(new ScheduleExpression().month(5).dayOfMonth("20-Last").minute(0).hour(8), plantTheCorn);
+        timerService.createCalendarTimer(new ScheduleExpression().month(6).dayOfMonth("1-10").minute(0).hour(8), plantTheCorn);
+
+        final TimerConfig harvestTheCorn = new TimerConfig("harvestTheCorn", false);
+        timerService.createCalendarTimer(new ScheduleExpression().month(9).dayOfMonth("20-Last").minute(0).hour(8), harvestTheCorn);
+        timerService.createCalendarTimer(new ScheduleExpression().month(10).dayOfMonth("1-10").minute(0).hour(8), harvestTheCorn);
+
+        final TimerConfig checkOnTheDaughters = new TimerConfig("checkOnTheDaughters", false);
+        timerService.createCalendarTimer(new ScheduleExpression().second("*").minute("*").hour("*"), checkOnTheDaughters);
+    }
+
+    @Timeout
+    public void timeout(Timer timer) {
+        if ("plantTheCorn".equals(timer.getInfo())) {
+            plantTheCorn();
+        } else if ("harvestTheCorn".equals(timer.getInfo())) {
+            harvestTheCorn();
+        } else if ("checkOnTheDaughters".equals(timer.getInfo())) {
+            checkOnTheDaughters();
+        }
+    }
+
+    private void plantTheCorn() {
+        // Dig out the planter!!!
+    }
+
+    private void harvestTheCorn() {
+        // Dig out the combine!!!
+    }
+
+    private void checkOnTheDaughters() {
+        checks.incrementAndGet();
+    }
+
+    public int getChecks() {
+        return checks.get();
+    }
+}
+----
+
+
+==  FarmerBrownTest
+
+The test class acquires an instance from the context and waits for 5 seconds to give the timers a chance to timeout.
+
+
+[source,java]
+----
+package org.superbiz.corn;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class FarmerBrownTest extends TestCase {
+
+    public void test() throws Exception {
+
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        final FarmerBrown farmerBrown = (FarmerBrown) context.lookup("java:global/schedule-expression/FarmerBrown");
+
+        // Give Farmer brown a chance to do some work
+        Thread.sleep(SECONDS.toMillis(5));
+
+        final int checks = farmerBrown.getChecks();
+        assertTrue(checks + "", checks > 4);
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.corn.FarmerBrownTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/schedule-expression
+INFO - openejb.base = /Users/dblevins/examples/schedule-expression
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/schedule-expression/target/classes
+INFO - Beginning load: /Users/dblevins/examples/schedule-expression/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/schedule-expression
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean FarmerBrown: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.corn.FarmerBrownTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/schedule-expression" loaded.
+INFO - Assembling app: /Users/dblevins/examples/schedule-expression
+INFO - Jndi(name="java:global/schedule-expression/FarmerBrown!org.superbiz.corn.FarmerBrown")
+INFO - Jndi(name="java:global/schedule-expression/FarmerBrown")
+INFO - Jndi(name="java:global/EjbModule481105279/org.superbiz.corn.FarmerBrownTest!org.superbiz.corn.FarmerBrownTest")
+INFO - Jndi(name="java:global/EjbModule481105279/org.superbiz.corn.FarmerBrownTest")
+INFO - Created Ejb(deployment-id=org.superbiz.corn.FarmerBrownTest, ejb-name=org.superbiz.corn.FarmerBrownTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.corn.FarmerBrownTest, ejb-name=org.superbiz.corn.FarmerBrownTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/schedule-expression)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.141 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/schedule-methods-meta.adoc b/src/main/jbake/content/examples/schedule-methods-meta.adoc
new file mode 100755
index 0000000..3705c23
--- /dev/null
+++ b/src/main/jbake/content/examples/schedule-methods-meta.adoc
@@ -0,0 +1,384 @@
+= Schedule Methods Meta
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example schedule-methods-meta can be browsed at https://github.com/apache/tomee/tree/master/examples/schedule-methods-meta
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  BiAnnually
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import javax.ejb.Schedule;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface BiAnnually {
+    public static interface $ {
+
+        @BiAnnually
+        @Schedule(second = "0", minute = "0", hour = "0", dayOfMonth = "1", month = "1,6")
+        public void method();
+    }
+}
+----
+
+
+==  BiMonthly
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import javax.ejb.Schedule;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface BiMonthly {
+    public static interface $ {
+
+        @BiMonthly
+        @Schedule(second = "0", minute = "0", hour = "0", dayOfMonth = "1,15")
+        public void method();
+    }
+}
+----
+
+
+==  Daily
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import javax.ejb.Schedule;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface Daily {
+    public static interface $ {
+
+        @Daily
+        @Schedule(second = "0", minute = "0", hour = "0", dayOfMonth = "*")
+        public void method();
+    }
+}
+----
+
+
+==  HarvestTime
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import javax.ejb.Schedule;
+import javax.ejb.Schedules;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface HarvestTime {
+    public static interface $ {
+
+        @HarvestTime
+        @Schedules({
+                @Schedule(month = "9", dayOfMonth = "20-Last", minute = "0", hour = "8"),
+                @Schedule(month = "10", dayOfMonth = "1-10", minute = "0", hour = "8")
+        })
+        public void method();
+    }
+}
+----
+
+
+==  Hourly
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import javax.ejb.Schedule;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface Hourly {
+    public static interface $ {
+
+        @Hourly
+        @Schedule(second = "0", minute = "0", hour = "*")
+        public void method();
+    }
+}
+----
+
+
+==  Metatype
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.ANNOTATION_TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Metatype {
+}
+----
+
+
+==  Organic
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+
+@Singleton
+@Lock(LockType.READ)
+public @interface Organic {
+}
+----
+
+
+==  PlantingTime
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import javax.ejb.Schedule;
+import javax.ejb.Schedules;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface PlantingTime {
+    public static interface $ {
+
+        @PlantingTime
+        @Schedules({
+                @Schedule(month = "5", dayOfMonth = "20-Last", minute = "0", hour = "8"),
+                @Schedule(month = "6", dayOfMonth = "1-10", minute = "0", hour = "8")
+        })
+        public void method();
+    }
+}
+----
+
+
+==  Secondly
+
+
+[source,java]
+----
+package org.superbiz.corn.meta.api;
+
+import javax.ejb.Schedule;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface Secondly {
+    public static interface $ {
+
+        @Secondly
+        @Schedule(second = "*", minute = "*", hour = "*")
+        public void method();
+    }
+}
+----
+
+
+==  FarmerBrown
+
+
+[source,java]
+----
+package org.superbiz.corn.meta;
+
+import org.superbiz.corn.meta.api.HarvestTime;
+import org.superbiz.corn.meta.api.Organic;
+import org.superbiz.corn.meta.api.PlantingTime;
+import org.superbiz.corn.meta.api.Secondly;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * This is where we schedule all of Farmer Brown's corn jobs
+ *
+ * @version $Revision$ $Date$
+ */
+@Organic
+public class FarmerBrown {
+
+    private final AtomicInteger checks = new AtomicInteger();
+
+    @PlantingTime
+    private void plantTheCorn() {
+        // Dig out the planter!!!
+    }
+
+    @HarvestTime
+    private void harvestTheCorn() {
+        // Dig out the combine!!!
+    }
+
+    @Secondly
+    private void checkOnTheDaughters() {
+        checks.incrementAndGet();
+    }
+
+    public int getChecks() {
+        return checks.get();
+    }
+}
+----
+
+
+==  FarmerBrownTest
+
+
+[source,java]
+----
+package org.superbiz.corn.meta;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class FarmerBrownTest extends TestCase {
+
+    public void test() throws Exception {
+
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        final FarmerBrown farmerBrown = (FarmerBrown) context.lookup("java:global/schedule-methods-meta/FarmerBrown");
+
+        // Give Farmer brown a chance to do some work
+        Thread.sleep(SECONDS.toMillis(5));
+
+        assertTrue(farmerBrown.getChecks() > 4);
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.corn.meta.FarmerBrownTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/schedule-methods-meta
+INFO - openejb.base = /Users/dblevins/examples/schedule-methods-meta
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/schedule-methods-meta/target/classes
+INFO - Beginning load: /Users/dblevins/examples/schedule-methods-meta/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/schedule-methods-meta
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean FarmerBrown: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.corn.meta.FarmerBrownTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/schedule-methods-meta" loaded.
+INFO - Assembling app: /Users/dblevins/examples/schedule-methods-meta
+INFO - Jndi(name="java:global/schedule-methods-meta/FarmerBrown!org.superbiz.corn.meta.FarmerBrown")
+INFO - Jndi(name="java:global/schedule-methods-meta/FarmerBrown")
+INFO - Jndi(name="java:global/EjbModule1809441479/org.superbiz.corn.meta.FarmerBrownTest!org.superbiz.corn.meta.FarmerBrownTest")
+INFO - Jndi(name="java:global/EjbModule1809441479/org.superbiz.corn.meta.FarmerBrownTest")
+INFO - Created Ejb(deployment-id=org.superbiz.corn.meta.FarmerBrownTest, ejb-name=org.superbiz.corn.meta.FarmerBrownTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.corn.meta.FarmerBrownTest, ejb-name=org.superbiz.corn.meta.FarmerBrownTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/schedule-methods-meta)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.166 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/schedule-methods.adoc b/src/main/jbake/content/examples/schedule-methods.adoc
new file mode 100755
index 0000000..1c01f3e
--- /dev/null
+++ b/src/main/jbake/content/examples/schedule-methods.adoc
@@ -0,0 +1,141 @@
+= Schedule Methods
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example schedule-methods can be browsed at https://github.com/apache/tomee/tree/master/examples/schedule-methods
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  FarmerBrown
+
+
+[source,java]
+----
+package org.superbiz.corn;
+
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Schedule;
+import javax.ejb.Schedules;
+import javax.ejb.Singleton;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * This is where we schedule all of Farmer Brown's corn jobs
+ *
+ * @version $Revision$ $Date$
+ */
+@Singleton
+@Lock(LockType.READ) // allows timers to execute in parallel
+public class FarmerBrown {
+
+    private final AtomicInteger checks = new AtomicInteger();
+
+    @Schedules({
+            @Schedule(month = "5", dayOfMonth = "20-Last", minute = "0", hour = "8"),
+            @Schedule(month = "6", dayOfMonth = "1-10", minute = "0", hour = "8")
+    })
+    private void plantTheCorn() {
+        // Dig out the planter!!!
+    }
+
+    @Schedules({
+            @Schedule(month = "9", dayOfMonth = "20-Last", minute = "0", hour = "8"),
+            @Schedule(month = "10", dayOfMonth = "1-10", minute = "0", hour = "8")
+    })
+    private void harvestTheCorn() {
+        // Dig out the combine!!!
+    }
+
+    @Schedule(second = "*", minute = "*", hour = "*")
+    private void checkOnTheDaughters() {
+        checks.incrementAndGet();
+    }
+
+    public int getChecks() {
+        return checks.get();
+    }
+}
+----
+
+
+==  FarmerBrownTest
+
+
+[source,java]
+----
+package org.superbiz.corn;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class FarmerBrownTest extends TestCase {
+
+    public void test() throws Exception {
+
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        final FarmerBrown farmerBrown = (FarmerBrown) context.lookup("java:global/schedule-methods/FarmerBrown");
+
+        // Give Farmer brown a chance to do some work
+        Thread.sleep(SECONDS.toMillis(5));
+
+        assertTrue(farmerBrown.getChecks() > 4);
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.corn.FarmerBrownTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/schedule-methods
+INFO - openejb.base = /Users/dblevins/examples/schedule-methods
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/schedule-methods/target/classes
+INFO - Beginning load: /Users/dblevins/examples/schedule-methods/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/schedule-methods
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean FarmerBrown: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.corn.FarmerBrownTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/schedule-methods" loaded.
+INFO - Assembling app: /Users/dblevins/examples/schedule-methods
+INFO - Jndi(name="java:global/schedule-methods/FarmerBrown!org.superbiz.corn.FarmerBrown")
+INFO - Jndi(name="java:global/schedule-methods/FarmerBrown")
+INFO - Jndi(name="java:global/EjbModule660493198/org.superbiz.corn.FarmerBrownTest!org.superbiz.corn.FarmerBrownTest")
+INFO - Jndi(name="java:global/EjbModule660493198/org.superbiz.corn.FarmerBrownTest")
+INFO - Created Ejb(deployment-id=org.superbiz.corn.FarmerBrownTest, ejb-name=org.superbiz.corn.FarmerBrownTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.corn.FarmerBrownTest, ejb-name=org.superbiz.corn.FarmerBrownTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=FarmerBrown, ejb-name=FarmerBrown, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/schedule-methods)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.121 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/server-events.adoc b/src/main/jbake/content/examples/server-events.adoc
new file mode 100755
index 0000000..94664cd
--- /dev/null
+++ b/src/main/jbake/content/examples/server-events.adoc
@@ -0,0 +1,9 @@
+= server-events
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example server-events can be browsed at https://github.com/apache/tomee/tree/master/examples/server-events
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/simple-cdi-interceptor.adoc b/src/main/jbake/content/examples/simple-cdi-interceptor.adoc
new file mode 100755
index 0000000..f29d9be
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-cdi-interceptor.adoc
@@ -0,0 +1,127 @@
+= simple-cdi-interceptor
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-cdi-interceptor can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-cdi-interceptor
+
+= Simple CDI Interceptor
+
+Let's write a simple application that would allow us to book tickets for a movie show. As with all applications, logging is one cross-cutting concern that we have. 
+
+(Relevant snippets are inlined but you can check out the complete code, from the links provided)
+
+How do we mark which methods are to be intercepted ? Wouldn't it be handy to annotate a method like 
+
+
+[source,java]
+----
+@Log
+public void aMethod(){...} 
+
+Let's create an  annotation that would "mark" a method for interception. 
+
+@InterceptorBinding
+@Target({ TYPE, METHOD })
+@Retention(RUNTIME)
+public @interface Log {
+}
+----
+
+
+Sure, you haven't missed the @InterceptorBinding annotation above ! Now that our custom annotation is created, lets attach it (or to use a better term for it, "bind it" )
+to an interceptor. 
+
+So here's our logging interceptor. An @AroundInvoke method and we are almost done.
+
+
+[source,java]
+----
+@Interceptor
+@Log  //binding the interceptor here. now any method annotated with @Log would be intercepted by logMethodEntry
+public class LoggingInterceptor {
+    @AroundInvoke
+    public Object logMethodEntry(InvocationContext ctx) throws Exception {
+        System.out.println("Entering method: " + ctx.getMethod().getName());
+        //or logger.info statement 
+        return ctx.proceed();
+    }
+}
+----
+
+
+Now the @Log annotation we created is bound to this interceptor.
+
+That done, let's annotate at class-level or method-level and have fun intercepting ! 
+
+
+[source,java]
+----
+@Log
+@Stateful
+public class BookShow implements Serializable {
+    private static final long serialVersionUID = 6350400892234496909L;
+    public List<String> getMoviesList() {
+        List<String> moviesAvailable = new ArrayList<String>();
+        moviesAvailable.add("12 Angry Men");
+        moviesAvailable.add("Kings speech");
+        return moviesAvailable;
+    }
+    public Integer getDiscountedPrice(int ticketPrice) {
+        return ticketPrice - 50;
+    }
+    // assume more methods are present
+}
+----
+
+
+The `@Log` annotation applied at class level denotes that all the methods should be intercepted with `LoggingInterceptor`.
+
+Before we say "all done" there's one last thing we are left with ! To enable the interceptors ! 
+
+Lets quickly put up a [beans.xml file]
+
+
+[source,xml]
+----
+<beans>
+  <interceptors>
+    <class>org.superbiz.cdi.bookshow.interceptors.LoggingInterceptor
+    </class>
+  </interceptors>
+</beans>
+----
+
+
+ in META-INF
+
+
+Those lines in beans.xml not only "enable" the interceptors, but also define the "order of execution" of the interceptors.
+But we'll see that in another example on multiple-cdi-interceptors.
+
+Fire up the test, and we should see a 'Entering method: getMoviesList' printed in the console.
+
+= Tests
+    Apache OpenEJB 4.0.0-beta-2    build: 20111103-01:00
+    http://tomee.apache.org/
+    INFO - openejb.home = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors
+    INFO - openejb.base = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors
+    INFO - Using 'javax.ejb.embeddable.EJBContainer=true' 
+    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Found EjbModule in classpath: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes
+    INFO - Beginning load: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes
+    INFO - Configuring enterprise application: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors
+    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+    INFO - Auto-creating a container for bean cdi-simple-interceptors.Comp: Container(type=MANAGED, id=Default Managed Container)
+    INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+    INFO - Auto-creating a container for bean BookShow: Container(type=STATEFUL, id=Default Stateful Container)
+    INFO - Enterprise application "/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors" loaded.
+    INFO - Assembling app: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors
+    INFO - Jndi(name="java:global/cdi-simple-interceptors/BookShow!org.superbiz.cdi.bookshow.beans.BookShow")
+    INFO - Jndi(name="java:global/cdi-simple-interceptors/BookShow")
+    INFO - Created Ejb(deployment-id=BookShow, ejb-name=BookShow, container=Default Stateful Container)
+    INFO - Started Ejb(deployment-id=BookShow, ejb-name=BookShow, container=Default Stateful Container)
+    INFO - Deployed Application(path=/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors)
+    Entering method: getMoviesList
diff --git a/src/main/jbake/content/examples/simple-cmp2.adoc b/src/main/jbake/content/examples/simple-cmp2.adoc
new file mode 100755
index 0000000..ffddbc9
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-cmp2.adoc
@@ -0,0 +1,361 @@
+= EJB 2.1 CMP EntityBeans (CMP2)
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-cmp2 can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-cmp2
+
+
+
+
+OpenEJB, the EJB Container for TomEE and Geronimo,  does support all of EJB 1.1 to 3.1, including CMP2.
+
+The CMP2 implementation is actually done by adapting the CMP2 bean into a JPA Entity dynamically at deploy time.
+
+Appropriate subclasses, a JPA persistence.xml file and a mapping.xml file are generated at deployment
+time for the CMP2 EntityBeans and all the Entities will be then run on OpenJPA.  This innovative code
+has been used as the sole CMP2 implementation in Geronimo for its J2EE 1.4, JavaEE 5 and JavaEE 6 certifications.
+
+The persistence.xml and mapping.xml files generated at deploy time can be saved to disk and included
+in the application, allowing you to:
+
+ - gain finer control over persistence options
+ - slowly convert individual entities from CMP2 to JPA
+
+Let's see an example.
+
+=  Movies application
+
+The following is a basic EJB 2.1 application consisting of one CMP2 Entity.  For those that are reading this example
+out of curiosity and are not familiar with CMP2 or EJB 2.x, each CMP2 Entity is composed of two parts
+
+ - **A Home interface** which has data access methods like "find", "create", and "remove".  This is essentially
+  what people use `@Stateless` beans for today, but with difference that you do not need to supply
+  the implementation of the interface -- the container will generate one for you.  This is partly what inspired
+  the creation of the OpenEJB-specific link:dynamic-dao-implementation.html[Dynamic DAO] feature.
+
+ - **An abstract EntityBean class** which declares the persistent "properties" of the entity without actually
+declaring any fields.  It is the container's job to implement the actual methods and create the appropriate
+fields.  OpenEJB will implement this bean as a JPA `@Entity` bean.
+
+As such a CMP2 EntityBean is really just the description of a persistent object and the description of a 
+data-access object.  There is no actual code to write.
+
+The majority of work in CMP2 is done in the xml:
+
+ - **ejb-jar.xml** mapping information, which describes the persistent properties of the entity and the queries
+ for all *Home* find, create and remove methods.  This information will be converted by OpenEJB into
+ a JPA mapping.xml file.  All queries in the cmp2 part of the ejb-jar.xml are converted 
+ into named queries in JPA and generally everything is converted to its JPA equivalent. 
+
+==  CMP2 EntityBean, MovieBean
+
+
+[source,java]
+----
+package org.superbiz.cmp2;
+
+import javax.ejb.EntityBean;
+
+public abstract class MovieBean implements EntityBean {
+
+    public MovieBean() {
+    }
+
+    public Integer ejbCreate(String director, String title, int year) {
+        this.setDirector(director);
+        this.setTitle(title);
+        this.setYear(year);
+        return null;
+    }
+
+    public abstract java.lang.Integer getId();
+
+    public abstract void setId(java.lang.Integer id);
+
+    public abstract String getDirector();
+
+    public abstract void setDirector(String director);
+
+    public abstract String getTitle();
+
+    public abstract void setTitle(String title);
+
+    public abstract int getYear();
+
+    public abstract void setYear(int year);
+
+}
+----
+
+
+==  CMP2 Home interface, Movies
+
+
+[source,java]
+----
+package org.superbiz.cmp2;
+
+import javax.ejb.CreateException;
+import javax.ejb.FinderException;
+import java.util.Collection;
+
+/**
+ * @version $Revision$ $Date$
+ */
+interface Movies extends javax.ejb.EJBLocalHome {
+    Movie create(String director, String title, int year) throws CreateException;
+
+    Movie findByPrimaryKey(Integer primarykey) throws FinderException;
+
+    Collection<Movie> findAll() throws FinderException;
+
+    Collection<Movie> findByDirector(String director) throws FinderException;
+}
+----
+
+
+==  CMP2 mapping in ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar>
+  <enterprise-beans>
+    <entity>
+      <ejb-name>MovieBean</ejb-name>
+      <local-home>org.superbiz.cmp2.Movies</local-home>
+      <local>org.superbiz.cmp2.Movie</local>
+      <ejb-class>org.superbiz.cmp2.MovieBean</ejb-class>
+      <persistence-type>Container</persistence-type>
+      <prim-key-class>java.lang.Integer</prim-key-class>
+      <reentrant>false</reentrant>
+      <cmp-version>2.x</cmp-version>
+      <abstract-schema-name>MovieBean</abstract-schema-name>
+      <cmp-field>
+        <field-name>id</field-name>
+      </cmp-field>
+      <cmp-field>
+        <field-name>director</field-name>
+      </cmp-field>
+      <cmp-field>
+        <field-name>year</field-name>
+      </cmp-field>
+      <cmp-field>
+        <field-name>title</field-name>
+      </cmp-field>
+      <primkey-field>id</primkey-field>
+      <query>
+        <query-method>
+          <method-name>findByDirector</method-name>
+          <method-params>
+            <method-param>java.lang.String</method-param>
+          </method-params>
+        </query-method>
+        <ejb-ql>SELECT m FROM MovieBean m WHERE m.director = ?1</ejb-ql>
+      </query>
+      <query>
+        <query-method>
+          <method-name>findAll</method-name>
+          <method-params/>
+        </query-method>
+        <ejb-ql>SELECT m FROM MovieBean as m</ejb-ql>
+      </query>
+    </entity>
+  </enterprise-beans>
+</ejb-jar>
+----
+
+    
+
+==  openejb-jar.xml
+
+
+[source,xml]
+----
+<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
+  <enterprise-beans>
+    <entity>
+      <ejb-name>MovieBean</ejb-name>
+      <key-generator xmlns="http://www.openejb.org/xml/ns/pkgen-2.1">
+        <uuid/>
+      </key-generator>
+    </entity>
+  </enterprise-beans>
+</openejb-jar>
+----
+
+    
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.cmp2;
+
+import junit.framework.TestCase;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Collection;
+import java.util.Properties;
+
+/**
+ * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class MoviesTest extends TestCase {
+
+    public void test() throws Exception {
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        p.put("movieDatabaseUnmanaged", "new://Resource?type=DataSource");
+        p.put("movieDatabaseUnmanaged.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabaseUnmanaged.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+        p.put("movieDatabaseUnmanaged.JtaManaged", "false");
+
+        Context context = new InitialContext(p);
+
+        Movies movies = (Movies) context.lookup("MovieBeanLocalHome");
+
+        movies.create("Quentin Tarantino", "Reservoir Dogs", 1992);
+        movies.create("Joel Coen", "Fargo", 1996);
+        movies.create("Joel Coen", "The Big Lebowski", 1998);
+
+        Collection<Movie> list = movies.findAll();
+        assertEquals("Collection.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.remove(movie.getPrimaryKey());
+        }
+
+        assertEquals("Movies.findAll()", 0, movies.findAll().size());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.cmp2.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/simple-cmp2/target
+INFO - openejb.base = /Users/dblevins/examples/simple-cmp2/target
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-cmp2/target/classes
+INFO - Beginning load: /Users/dblevins/examples/simple-cmp2/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/simple-cmp2/target/classpath.ear
+INFO - Configuring Service(id=Default CMP Container, type=Container, provider-id=Default CMP Container)
+INFO - Auto-creating a container for bean MovieBean: Container(type=CMP_ENTITY, id=Default CMP Container)
+INFO - Configuring PersistenceUnit(name=cmp)
+INFO - Adjusting PersistenceUnit cmp <jta-data-source> to Resource ID 'movieDatabase' from 'null'
+INFO - Adjusting PersistenceUnit cmp <non-jta-data-source> to Resource ID 'movieDatabaseUnmanaged' from 'null'
+INFO - Enterprise application "/Users/dblevins/examples/simple-cmp2/target/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/simple-cmp2/target/classpath.ear
+INFO - PersistenceUnit(name=cmp, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 160ms
+INFO - Jndi(name=MovieBeanLocalHome) --> Ejb(deployment-id=MovieBean)
+INFO - Jndi(name=global/classpath.ear/simple-cmp2/MovieBean!org.superbiz.cmp2.Movies) --> Ejb(deployment-id=MovieBean)
+INFO - Jndi(name=global/classpath.ear/simple-cmp2/MovieBean) --> Ejb(deployment-id=MovieBean)
+INFO - Created Ejb(deployment-id=MovieBean, ejb-name=MovieBean, container=Default CMP Container)
+INFO - Started Ejb(deployment-id=MovieBean, ejb-name=MovieBean, container=Default CMP Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/simple-cmp2/target/classpath.ear)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.919 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
+=  CMP2 to JPA
+
+As mentioned OpenEJB will implement the abstract CMP2 `EntityBean` as a JPA `@Entity`, create a `persistence.xml` file and convert all `ejb-jar.xml` mapping and queries to
+a JPA `entity-mappings.xml` file.
+
+Both of these files will be written to disk by setting the system property `openejb.descriptors.output` to `true`.  In the testcase
+above, this can be done via the `InitialContext` parameters via code like this:
+
+    Properties p = new Properties();
+    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+
+    // setup the data sources as usual...
+
+    // write the generated descriptors
+    p.put("openejb.descriptors.output", "true");
+
+    Context context = new InitialContext(p);
+
+Below are the generated `persistence.xml` and `mapping.xml` files for our CMP2 `EntityBean`
+
+==  CMP2 to JPA generated persistence.xml file
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+    <persistence-unit name="cmp" transaction-type="JTA">
+        <jta-data-source>movieDatabase</jta-data-source>
+        <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+        <mapping-file>META-INF/openejb-cmp-generated-orm.xml</mapping-file>
+        <class>openejb.org.superbiz.cmp2.MovieBean</class>
+        <properties>
+            <property name="openjpa.jdbc.SynchronizeMappings"
+            value="buildSchema(ForeignKeys=true, Indexes=false, IgnoreErrors=true)"/>
+            <property name="openjpa.Log" value="DefaultLevel=INFO"/>
+        </properties>
+    </persistence-unit>
+</persistence>
+----
+
+
+All of this `persitence.xml` can be changed, however the `persistence-unit` must have the `name` fixed to `cmp`.
+
+==  CMP2 to JPA generated mapping file
+
+Note that the `persistence.xml` above refers to this mappings file as `META-INF/openejb-cmp-generated-orm.xml`.  It is possible
+to rename this file to whatever name you prefer, just make sure to update the `<mapping-file>` element of the `cmp` persistence unit
+accordingly.
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" version="1.0">
+    <entity class="openejb.org.superbiz.cmp2.MovieBean" name="MovieBean">
+        <description>simple-cmp2#MovieBean</description>
+        <table/>
+        <named-query name="MovieBean.findByDirector(java.lang.String)">
+            <query>SELECT m FROM MovieBean m WHERE m.director = ?1</query>
+        </named-query>
+        <named-query name="MovieBean.findAll">
+            <query>SELECT m FROM MovieBean as m</query>
+        </named-query>
+        <attributes>
+            <id name="id">
+                <generated-value strategy="IDENTITY"/>
+            </id>
+            <basic name="director"/>
+            <basic name="year"/>
+            <basic name="title"/>
+        </attributes>
+    </entity>
+</entity-mappings>
+----
+
diff --git a/src/main/jbake/content/examples/simple-mdb-and-cdi.adoc b/src/main/jbake/content/examples/simple-mdb-and-cdi.adoc
new file mode 100755
index 0000000..e64b8c9
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-mdb-and-cdi.adoc
@@ -0,0 +1,211 @@
+= Simple MDB and CDI
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-mdb-and-cdi can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-mdb-and-cdi
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  ChatBean
+
+
+[source,java]
+----
+package org.superbiz.mdb;
+
+import javax.annotation.Resource;
+import javax.ejb.MessageDriven;
+import javax.inject.Inject;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+@MessageDriven
+public class ChatBean implements MessageListener {
+
+    @Resource
+    private ConnectionFactory connectionFactory;
+
+    @Resource(name = "AnswerQueue")
+    private Queue answerQueue;
+
+    @Inject
+    private ChatRespondCreator responder;
+
+    public void onMessage(Message message) {
+        try {
+
+            final TextMessage textMessage = (TextMessage) message;
+            final String question = textMessage.getText();
+            final String response = responder.respond(question);
+
+            if (response != null) {
+                respond(response);
+            }
+        } catch (JMSException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    private void respond(String text) throws JMSException {
+
+        Connection connection = null;
+        Session session = null;
+
+        try {
+            connection = connectionFactory.createConnection();
+            connection.start();
+
+            // Create a Session
+            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            // Create a MessageProducer from the Session to the Topic or Queue
+            MessageProducer producer = session.createProducer(answerQueue);
+            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+
+            // Create a message
+            TextMessage message = session.createTextMessage(text);
+
+            // Tell the producer to send the message
+            producer.send(message);
+        } finally {
+            // Clean up
+            if (session != null) session.close();
+            if (connection != null) connection.close();
+        }
+    }
+}
+----
+
+
+==  ChatRespondCreator
+
+
+[source,java]
+----
+package org.superbiz.mdb;
+
+public class ChatRespondCreator {
+    public String respond(String question) {
+        if ("Hello World!".equals(question)) {
+            return "Hello, Test Case!";
+        } else if ("How are you?".equals(question)) {
+            return "I'm doing well.";
+        } else if ("Still spinning?".equals(question)) {
+            return "Once every day, as usual.";
+        }
+        return null;
+    }
+}
+----
+
+
+==  beans.xml
+
+
+[source,xml]
+----
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<beans/>
+----
+
+    
+
+==  ChatBeanTest
+
+
+[source,java]
+----
+package org.superbiz.mdb;
+
+import junit.framework.TestCase;
+
+import javax.annotation.Resource;
+import javax.ejb.embeddable.EJBContainer;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+public class ChatBeanTest extends TestCase {
+
+    @Resource
+    private ConnectionFactory connectionFactory;
+
+    @Resource(name = "ChatBean")
+    private Queue questionQueue;
+
+    @Resource(name = "AnswerQueue")
+    private Queue answerQueue;
+
+    public void test() throws Exception {
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+
+
+        final Connection connection = connectionFactory.createConnection();
+
+        connection.start();
+
+        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        final MessageProducer questions = session.createProducer(questionQueue);
+
+        final MessageConsumer answers = session.createConsumer(answerQueue);
+
+
+        sendText("Hello World!", questions, session);
+
+        assertEquals("Hello, Test Case!", receiveText(answers));
+
+
+        sendText("How are you?", questions, session);
+
+        assertEquals("I'm doing well.", receiveText(answers));
+
+
+        sendText("Still spinning?", questions, session);
+
+        assertEquals("Once every day, as usual.", receiveText(answers));
+    }
+
+    private void sendText(String text, MessageProducer questions, Session session) throws JMSException {
+
+        questions.send(session.createTextMessage(text));
+    }
+
+    private String receiveText(MessageConsumer answers) throws JMSException {
+
+        return ((TextMessage) answers.receive(1000)).getText();
+    }
+}
+----
+
diff --git a/src/main/jbake/content/examples/simple-mdb-with-descriptor.adoc b/src/main/jbake/content/examples/simple-mdb-with-descriptor.adoc
new file mode 100755
index 0000000..1d37a81
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-mdb-with-descriptor.adoc
@@ -0,0 +1,268 @@
+= Simple MDB with Descriptor
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-mdb-with-descriptor can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-mdb-with-descriptor
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  ChatBean
+
+
+[source,java]
+----
+package org.superbiz.mdbdesc;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+public class ChatBean implements MessageListener {
+
+    private ConnectionFactory connectionFactory;
+
+    private Queue answerQueue;
+
+    public void onMessage(Message message) {
+        try {
+
+            final TextMessage textMessage = (TextMessage) message;
+            final String question = textMessage.getText();
+
+            if ("Hello World!".equals(question)) {
+
+                respond("Hello, Test Case!");
+            } else if ("How are you?".equals(question)) {
+
+                respond("I'm doing well.");
+            } else if ("Still spinning?".equals(question)) {
+
+                respond("Once every day, as usual.");
+            }
+        } catch (JMSException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    private void respond(String text) throws JMSException {
+
+        Connection connection = null;
+        Session session = null;
+
+        try {
+            connection = connectionFactory.createConnection();
+            connection.start();
+
+            // Create a Session
+            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            // Create a MessageProducer from the Session to the Topic or Queue
+            MessageProducer producer = session.createProducer(answerQueue);
+            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+
+            // Create a message
+            TextMessage message = session.createTextMessage(text);
+
+            // Tell the producer to send the message
+            producer.send(message);
+        } finally {
+            // Clean up
+            if (session != null) session.close();
+            if (connection != null) connection.close();
+        }
+    }
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" metadata-complete="true">
+  <enterprise-beans>
+
+    <message-driven>
+
+      <ejb-name>ChatBean</ejb-name>
+      <ejb-class>org.superbiz.mdbdesc.ChatBean</ejb-class>
+
+      <messaging-type>javax.jms.MessageListener</messaging-type>
+
+      <activation-config>
+        <activation-config-property>
+          <activation-config-property-name>destination</activation-config-property-name>
+          <activation-config-property-value>ChatBean</activation-config-property-value>
+        </activation-config-property>
+        <activation-config-property>
+          <activation-config-property-name>destinationType</activation-config-property-name>
+          <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
+        </activation-config-property>
+      </activation-config>
+
+      <resource-ref>
+        <res-ref-name>java:comp/env/org.superbiz.mdbdesc.ChatBean/connectionFactory</res-ref-name>
+        <res-type>javax.jms.ConnectionFactory</res-type>
+        <injection-target>
+          <injection-target-class>org.superbiz.mdbdesc.ChatBean</injection-target-class>
+          <injection-target-name>connectionFactory</injection-target-name>
+        </injection-target>
+      </resource-ref>
+
+      <resource-env-ref>
+        <resource-env-ref-name>java:comp/env/AnswerQueue</resource-env-ref-name>
+        <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
+        <mapped-name>AnswerQueue</mapped-name>
+        <injection-target>
+          <injection-target-class>org.superbiz.mdbdesc.ChatBean</injection-target-class>
+          <injection-target-name>answerQueue</injection-target-name>
+        </injection-target>
+      </resource-env-ref>
+
+    </message-driven>
+
+  </enterprise-beans>
+</ejb-jar>
+----
+
+    
+
+==  ChatBeanTest
+
+
+[source,java]
+----
+package org.superbiz.mdb;
+
+import junit.framework.TestCase;
+
+import javax.annotation.Resource;
+import javax.ejb.embeddable.EJBContainer;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+public class ChatBeanTest extends TestCase {
+
+    @Resource
+    private ConnectionFactory connectionFactory;
+
+    @Resource(name = "ChatBean")
+    private Queue questionQueue;
+
+    @Resource(name = "AnswerQueue")
+    private Queue answerQueue;
+
+    public void test() throws Exception {
+
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+
+        final Connection connection = connectionFactory.createConnection();
+
+        connection.start();
+
+        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        final MessageProducer questions = session.createProducer(questionQueue);
+
+        final MessageConsumer answers = session.createConsumer(answerQueue);
+
+
+        sendText("Hello World!", questions, session);
+
+        assertEquals("Hello, Test Case!", receiveText(answers));
+
+
+        sendText("How are you?", questions, session);
+
+        assertEquals("I'm doing well.", receiveText(answers));
+
+
+        sendText("Still spinning?", questions, session);
+
+        assertEquals("Once every day, as usual.", receiveText(answers));
+    }
+
+    private void sendText(String text, MessageProducer questions, Session session) throws JMSException {
+
+        questions.send(session.createTextMessage(text));
+    }
+
+    private String receiveText(MessageConsumer answers) throws JMSException {
+
+        return ((TextMessage) answers.receive(1000)).getText();
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.mdb.ChatBeanTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/simple-mdb-with-descriptor
+INFO - openejb.base = /Users/dblevins/examples/simple-mdb-with-descriptor
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-mdb-with-descriptor/target/classes
+INFO - Beginning load: /Users/dblevins/examples/simple-mdb-with-descriptor/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/simple-mdb-with-descriptor
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default MDB Container, type=Container, provider-id=Default MDB Container)
+INFO - Auto-creating a container for bean ChatBean: Container(type=MESSAGE, id=Default MDB Container)
+INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)
+INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)
+INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'ChatBean'.
+INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdbdesc.ChatBean/connectionFactory' in bean ChatBean to Resource(id=Default JMS Connection Factory)
+INFO - Configuring Service(id=AnswerQueue, type=Resource, provider-id=Default Queue)
+INFO - Auto-creating a Resource with id 'AnswerQueue' of type 'javax.jms.Queue for 'ChatBean'.
+INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean ChatBean to Resource(id=AnswerQueue)
+INFO - Configuring Service(id=ChatBean, type=Resource, provider-id=Default Queue)
+INFO - Auto-creating a Resource with id 'ChatBean' of type 'javax.jms.Queue for 'ChatBean'.
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.mdb.ChatBeanTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdb.ChatBeanTest/connectionFactory' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=Default JMS Connection Factory)
+INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=AnswerQueue)
+INFO - Auto-linking resource-env-ref 'java:comp/env/ChatBean' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=ChatBean)
+INFO - Enterprise application "/Users/dblevins/examples/simple-mdb-with-descriptor" loaded.
+INFO - Assembling app: /Users/dblevins/examples/simple-mdb-with-descriptor
+INFO - Jndi(name="java:global/EjbModule1842275169/org.superbiz.mdb.ChatBeanTest!org.superbiz.mdb.ChatBeanTest")
+INFO - Jndi(name="java:global/EjbModule1842275169/org.superbiz.mdb.ChatBeanTest")
+INFO - Created Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)
+INFO - Started Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/simple-mdb-with-descriptor)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.914 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/simple-mdb.adoc b/src/main/jbake/content/examples/simple-mdb.adoc
new file mode 100755
index 0000000..db6c6d0
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-mdb.adoc
@@ -0,0 +1,233 @@
+= Simple MDB
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-mdb can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-mdb
+
+
+Below is a fun app, a chat application that uses JMS. We create a message driven bean, by marking our class with `@MessageDriven`. A message driven bean has some similarities with a stateless session bean, in the part that it is pooled too.
+
+Well, lets tell our chat-app to listen for incoming messages. That we do by implementing `MessageListener` and overriding the `onMessage(Message message)`.
+
+Then this app "listens" for incoming messages, and the messages picked up are processed by `onMessage(Message message)` method.
+
+That finishes our message driven bean implementation. The "processing" part could be anything that fits your business-requirement.
+
+In this case, it is to respond to the user. The `respond` method shows how a Message can be sent.
+
+This sequence diagram shows how a message is sent.
+
+<img src="../../resources/mdb-flow.png" alt=""/>
+
+==  ChatBean
+
+
+[source,java]
+----
+package org.superbiz.mdb;
+
+import javax.annotation.Resource;
+import javax.ejb.MessageDriven;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+@MessageDriven
+public class ChatBean implements MessageListener {
+
+    @Resource
+    private ConnectionFactory connectionFactory;
+
+    @Resource(name = "AnswerQueue")
+    private Queue answerQueue;
+
+    public void onMessage(Message message) {
+        try {
+
+            final TextMessage textMessage = (TextMessage) message;
+            final String question = textMessage.getText();
+
+            if ("Hello World!".equals(question)) {
+
+                respond("Hello, Test Case!");
+            } else if ("How are you?".equals(question)) {
+
+                respond("I'm doing well.");
+            } else if ("Still spinning?".equals(question)) {
+
+                respond("Once every day, as usual.");
+            }
+        } catch (JMSException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    private void respond(String text) throws JMSException {
+
+        Connection connection = null;
+        Session session = null;
+
+        try {
+            connection = connectionFactory.createConnection();
+            connection.start();
+
+            // Create a Session
+            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            // Create a MessageProducer from the Session to the Topic or Queue
+            MessageProducer producer = session.createProducer(answerQueue);
+            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+
+            // Create a message
+            TextMessage message = session.createTextMessage(text);
+
+            // Tell the producer to send the message
+            producer.send(message);
+        } finally {
+            // Clean up
+            if (session != null) session.close();
+            if (connection != null) connection.close();
+        }
+    }
+}
+----
+
+
+==  ChatBeanTest
+
+
+[source,java]
+----
+package org.superbiz.mdb;
+
+import junit.framework.TestCase;
+
+import javax.annotation.Resource;
+import javax.ejb.embeddable.EJBContainer;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+public class ChatBeanTest extends TestCase {
+
+    @Resource
+    private ConnectionFactory connectionFactory;
+
+    @Resource(name = "ChatBean")
+    private Queue questionQueue;
+
+    @Resource(name = "AnswerQueue")
+    private Queue answerQueue;
+
+    public void test() throws Exception {
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+
+
+        final Connection connection = connectionFactory.createConnection();
+
+        connection.start();
+
+        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        final MessageProducer questions = session.createProducer(questionQueue);
+
+        final MessageConsumer answers = session.createConsumer(answerQueue);
+
+
+        sendText("Hello World!", questions, session);
+
+        assertEquals("Hello, Test Case!", receiveText(answers));
+
+
+        sendText("How are you?", questions, session);
+
+        assertEquals("I'm doing well.", receiveText(answers));
+
+
+        sendText("Still spinning?", questions, session);
+
+        assertEquals("Once every day, as usual.", receiveText(answers));
+    }
+
+    private void sendText(String text, MessageProducer questions, Session session) throws JMSException {
+
+        questions.send(session.createTextMessage(text));
+    }
+
+    private String receiveText(MessageConsumer answers) throws JMSException {
+
+        return ((TextMessage) answers.receive(1000)).getText();
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.mdb.ChatBeanTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/simple-mdb
+INFO - openejb.base = /Users/dblevins/examples/simple-mdb
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-mdb/target/classes
+INFO - Beginning load: /Users/dblevins/examples/simple-mdb/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/simple-mdb
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Auto-configuring a message driven bean ChatBean destination ChatBean to be destinationType javax.jms.Queue
+INFO - Configuring Service(id=Default MDB Container, type=Container, provider-id=Default MDB Container)
+INFO - Auto-creating a container for bean ChatBean: Container(type=MESSAGE, id=Default MDB Container)
+INFO - Configuring Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS Resource Adapter)
+INFO - Configuring Service(id=Default JMS Connection Factory, type=Resource, provider-id=Default JMS Connection Factory)
+INFO - Auto-creating a Resource with id 'Default JMS Connection Factory' of type 'javax.jms.ConnectionFactory for 'ChatBean'.
+INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdb.ChatBean/connectionFactory' in bean ChatBean to Resource(id=Default JMS Connection Factory)
+INFO - Configuring Service(id=AnswerQueue, type=Resource, provider-id=Default Queue)
+INFO - Auto-creating a Resource with id 'AnswerQueue' of type 'javax.jms.Queue for 'ChatBean'.
+INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean ChatBean to Resource(id=AnswerQueue)
+INFO - Configuring Service(id=ChatBean, type=Resource, provider-id=Default Queue)
+INFO - Auto-creating a Resource with id 'ChatBean' of type 'javax.jms.Queue for 'ChatBean'.
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.mdb.ChatBeanTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Auto-linking resource-ref 'java:comp/env/org.superbiz.mdb.ChatBeanTest/connectionFactory' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=Default JMS Connection Factory)
+INFO - Auto-linking resource-env-ref 'java:comp/env/AnswerQueue' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=AnswerQueue)
+INFO - Auto-linking resource-env-ref 'java:comp/env/ChatBean' in bean org.superbiz.mdb.ChatBeanTest to Resource(id=ChatBean)
+INFO - Enterprise application "/Users/dblevins/examples/simple-mdb" loaded.
+INFO - Assembling app: /Users/dblevins/examples/simple-mdb
+INFO - Jndi(name="java:global/EjbModule1515710343/org.superbiz.mdb.ChatBeanTest!org.superbiz.mdb.ChatBeanTest")
+INFO - Jndi(name="java:global/EjbModule1515710343/org.superbiz.mdb.ChatBeanTest")
+INFO - Created Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)
+INFO - Started Ejb(deployment-id=org.superbiz.mdb.ChatBeanTest, ejb-name=org.superbiz.mdb.ChatBeanTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=ChatBean, ejb-name=ChatBean, container=Default MDB Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/simple-mdb)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.547 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/simple-rest.adoc b/src/main/jbake/content/examples/simple-rest.adoc
new file mode 100755
index 0000000..f35d8df
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-rest.adoc
@@ -0,0 +1,148 @@
+= Simple REST
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-rest can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-rest
+
+
+Defining a REST service is pretty easy, simply ad @Path annotation to a class then define on methods
+the HTTP method to use (@GET, @POST, ...).
+
+= The Code
+
+==  The REST service: @Path, @GET, @POST
+
+Here we see a bean that uses the Bean-Managed Concurrency option as well as the @Startup annotation which causes the bean to be instantiated by the container when the application starts. Singleton beans with @ConcurrencyManagement(BEAN) are responsible for their own thread-safety. The bean shown is a simple properties "registry" and provides a place where options could be set and retrieved by all beans in the application.
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+@Path("/greeting")
+public class GreetingService {
+    @GET
+    public String message() {
+        return "Hi REST!";
+    }
+
+    @POST
+    public String lowerCase(final String message) {
+        return "Hi REST!".toLowerCase();
+    }
+}
+----
+
+
+=  Testing
+
+==  Test for the JAXRS service
+
+The test uses the OpenEJB ApplicationComposer to make it trivial.
+
+The idea is first to activate the jaxrs services. This is done using @EnableServices annotation.
+
+Then we create on the fly the application simply returning an object representing the web.xml. Here we simply
+use it to define the context root but you can use it to define your REST Application too. And to complete the
+application definition we add @Classes annotation to define the set of classes to use in this app.
+
+Finally to test it we use cxf client API to call the REST service in get() and post() methods.
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openejb.jee.SingletonBean;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.EnableServices;
+import org.apache.openejb.junit.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+@EnableServices(value = "jaxrs")
+@RunWith(ApplicationComposer.class)
+public class GreetingServiceTest {
+    @Module
+    public SingletonBean app() {
+        return (SingletonBean) new SingletonBean(GreetingService.class).localBean();
+    }
+
+    @Test
+    public void get() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/GreetingServiceTest/greeting/").get(String.class);
+        assertEquals("Hi REST!", message);
+    }
+
+    @Test
+    public void post() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/GreetingServiceTest/greeting/").post("Hi REST!", String.class);
+        assertEquals("hi rest!", message);
+    }
+}
+----
+
+
+= Running
+
+Running the example is fairly simple. In the "simple-rest" directory run:
+
+    $ mvn clean install
+
+Which should create output like the following.
+
+    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Creating TransactionManager(id=Default Transaction Manager)
+    INFO - Creating SecurityService(id=Default Security Service)
+    INFO - Initializing network services
+    INFO - Creating ServerService(id=httpejbd)
+    INFO - Creating ServerService(id=cxf-rs)
+    INFO - Initializing network services
+    INFO - Starting service httpejbd
+    INFO - Started service httpejbd
+    INFO - Starting service cxf-rs
+    INFO - Started service cxf-rs
+    INFO -   ** Bound Services **
+    INFO -   NAME                 IP              PORT
+    INFO -   httpejbd             127.0.0.1       4204
+    INFO - -------
+    INFO - Ready!
+    INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+    INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+    INFO - Creating Container(id=Default Managed Container)
+    INFO - Using directory /tmp for stateful session passivation
+    INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
+    INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+    INFO - Existing thread singleton service in SystemInstance() null
+    INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@12c9b196
+    INFO - Succeeded in installing singleton service
+    INFO - OpenWebBeans Container is starting...
+    INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+    INFO - All injection points are validated successfully.
+    INFO - OpenWebBeans Container has started, it took 11 ms.
+    INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
+    INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
+    INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+    INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+    INFO - Stopping network services
+    INFO - Stopping server services
+    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
+
+    Results :
+
+    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+
diff --git a/src/main/jbake/content/examples/simple-singleton.adoc b/src/main/jbake/content/examples/simple-singleton.adoc
new file mode 100755
index 0000000..7dac9e8
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-singleton.adoc
@@ -0,0 +1,376 @@
+= Simple Singleton
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-singleton can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-singleton
+
+
+As the name implies a `javax.ejb.Singleton` is a session bean with a guarantee that there is at most one instance in the application.
+
+What it gives that is completely missing in EJB 3.0 and prior versions is the ability to have an EJB that is notified when the application starts and notified when the application stops. So you can do all sorts of things that you previously could only do with a load-on-startup servlet. It also gives you a place to hold data that pertains to the entire application and all users using it, without the need for a static. Additionally, Singleton beans can be invoked by several threads at one time similar to a Servlet.
+
+See the link:../../singleton-beans.html[Singleton Beans] page for a full description of the javax.ejb.Singleton api.
+
+= The Code
+
+==  PropertyRegistry <small>Bean-Managed Concurrency</small>
+
+Here we see a bean that uses the Bean-Managed Concurrency option as well as the @Startup annotation which causes the bean to be instantiated by the container when the application starts. Singleton beans with @ConcurrencyManagement(BEAN) are responsible for their own thread-safety. The bean shown is a simple properties "registry" and provides a place where options could be set and retrieved by all beans in the application.
+
+
+[source,java]
+----
+package org.superbiz.registry;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ejb.ConcurrencyManagement;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import java.util.Properties;
+
+import static javax.ejb.ConcurrencyManagementType.BEAN;
+
+@Singleton
+@Startup
+@ConcurrencyManagement(BEAN)
+public class PropertyRegistry {
+
+    // Note the java.util.Properties object is a thread-safe
+    // collections that uses synchronization.  If it didn't
+    // you would have to use some form of synchronization
+    // to ensure the PropertyRegistryBean is thread-safe.
+    private final Properties properties = new Properties();
+
+    // The @Startup annotation ensures that this method is
+    // called when the application starts up.
+    @PostConstruct
+    public void applicationStartup() {
+        properties.putAll(System.getProperties());
+    }
+
+    @PreDestroy
+    public void applicationShutdown() {
+        properties.clear();
+    }
+
+    public String getProperty(final String key) {
+        return properties.getProperty(key);
+    }
+
+    public String setProperty(final String key, final String value) {
+        return (String) properties.setProperty(key, value);
+    }
+
+    public String removeProperty(final String key) {
+        return (String) properties.remove(key);
+    }
+}
+----
+
+
+==  ComponentRegistry  <small>Container-Managed Concurrency</small>
+
+Here we see a bean that uses the Container-Managed Concurrency option, the default. With @ConcurrencyManagement(CONTAINER) the container controls whether multi-threaded access should be allowed to the bean (`@Lock(READ)`) or if single-threaded access should be enforced (`@Lock(WRITE)`).
+
+
+[source,java]
+----
+package org.superbiz.registry;
+
+import javax.ejb.Lock;
+import javax.ejb.Singleton;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import static javax.ejb.LockType.READ;
+import static javax.ejb.LockType.WRITE;
+
+@Singleton
+@Lock(READ)
+public class ComponentRegistry {
+
+    private final Map<Class, Object> components = new HashMap<Class, Object>();
+
+    public <T> T getComponent(final Class<T> type) {
+        return (T) components.get(type);
+    }
+
+    public Collection<?> getComponents() {
+        return new ArrayList(components.values());
+    }
+
+    @Lock(WRITE)
+    public <T> T setComponent(final Class<T> type, final T value) {
+        return (T) components.put(type, value);
+    }
+
+    @Lock(WRITE)
+    public <T> T removeComponent(final Class<T> type) {
+        return (T) components.remove(type);
+    }
+}
+----
+
+
+Unless specified explicitly on the bean class or a method, the default `@Lock` value is `@Lock(WRITE)`. The code above uses the `@Lock(READ)` annotation on bean class to change the default so that multi-threaded access is granted by default. We then only need to apply the `@Lock(WRITE)` annotation to the methods that modify the state of the bean.
+
+Essentially `@Lock(READ)` allows multithreaded access to the Singleton bean instance unless someone is invoking an `@Lock(WRITE)` method. With `@Lock(WRITE)`, the thread invoking the bean will be guaranteed to have exclusive access to the Singleton bean instance for the duration of its invocation. This combination allows the bean instance to use data types that are not normally thread safe. Great care must still be used, though.
+
+In the example we see `ComponentRegistryBean` using a `java.util.HashMap` which is not synchronized. To make this ok we do three things:
+
+ 1. Encapsulation. We don't expose the HashMap instance directly; including its iterators, key set, value set or entry set.
+ 1. We use `@Lock(WRITE)` on the methods that mutate the map such as the `put()` and `remove()` methods.
+ 1. We use `@Lock(READ)` on the `get()` and `values()` methods as they do not change the map state and are guaranteed not to be called at the same as any of the `@Lock(WRITE)` methods, so we know the state of the HashMap is no being mutated and therefore safe for reading.
+
+The end result is that the threading model for this bean will switch from multi-threaded access to single-threaded access dynamically as needed, depending on the method being invoked. This gives Singletons a bit of an advantage over Servlets for processing multi-threaded requests.
+
+See the link:../../singleton-beans.html[Singleton Beans] page for  more advanced details on Container-Managed Concurrency.
+
+=  Testing
+
+
+==  ComponentRegistryTest
+
+
+[source,java]
+----
+package org.superbiz.registry;
+
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.net.URI;
+import java.util.Collection;
+import java.util.Date;
+
+public class ComponentRegistryTest {
+
+    private final static EJBContainer ejbContainer = EJBContainer.createEJBContainer();
+
+    @Test
+    public void oneInstancePerMultipleReferences() throws Exception {
+
+        final Context context = ejbContainer.getContext();
+
+        // Both references below will point to the exact same instance
+        final ComponentRegistry one = (ComponentRegistry) context.lookup("java:global/simple-singleton/ComponentRegistry");
+        final ComponentRegistry two = (ComponentRegistry) context.lookup("java:global/simple-singleton/ComponentRegistry");
+
+        final URI expectedUri = new URI("foo://bar/baz");
+        one.setComponent(URI.class, expectedUri);
+        final URI actualUri = two.getComponent(URI.class);
+        Assert.assertSame(expectedUri, actualUri);
+
+        two.removeComponent(URI.class);
+        URI uri = one.getComponent(URI.class);
+        Assert.assertNull(uri);
+
+        one.removeComponent(URI.class);
+        uri = two.getComponent(URI.class);
+        Assert.assertNull(uri);
+
+        final Date expectedDate = new Date();
+        two.setComponent(Date.class, expectedDate);
+        final Date actualDate = one.getComponent(Date.class);
+        Assert.assertSame(expectedDate, actualDate);
+
+        Collection<?> collection = one.getComponents();
+        System.out.println(collection);
+        Assert.assertEquals("Reference 'one' - ComponentRegistry contains one record", collection.size(), 1);
+
+        collection = two.getComponents();
+        Assert.assertEquals("Reference 'two' - ComponentRegistry contains one record", collection.size(), 1);
+    }
+
+    @AfterClass
+    public static void closeEjbContainer() {
+        ejbContainer.close();
+    }
+}
+----
+
+
+==  PropertiesRegistryTest
+
+
+[source,java]
+----
+package org.superbiz.registry;
+
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+public class PropertiesRegistryTest {
+
+    private final static EJBContainer ejbContainer = EJBContainer.createEJBContainer();
+
+    @Test
+    public void oneInstancePerMultipleReferences() throws Exception {
+
+        final Context context = ejbContainer.getContext();
+
+        final PropertyRegistry one = (PropertyRegistry) context.lookup("java:global/simple-singleton/PropertyRegistry");
+        final PropertyRegistry two = (PropertyRegistry) context.lookup("java:global/simple-singleton/PropertyRegistry");
+
+        one.setProperty("url", "http://superbiz.org");
+        String url = two.getProperty("url");
+        Assert.assertSame("http://superbiz.org", url);
+
+        two.removeProperty("url");
+        url = one.getProperty("url");
+        Assert.assertNull(url);
+
+        two.setProperty("version", "1.0.5");
+        String version = one.getProperty("version");
+        Assert.assertSame("1.0.5", version);
+
+        one.removeProperty("version");
+        version = two.getProperty("version");
+        Assert.assertNull(version);
+    }
+
+    @AfterClass
+    public static void closeEjbContainer() {
+        ejbContainer.close();
+    }
+}
+----
+
+
+
+= Running
+
+Running the example is fairly simple. In the "simple-singleton" directory run:
+
+    $ mvn clean install
+
+Which should create output like the following.
+
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.registry.ComponentRegistryTest
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Sun Jun 09 03:46:51 IDT 2013
+INFO - Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 7.0.0-SNAPSHOT
+INFO - Build date: 20130608
+INFO - Build time: 04:07
+INFO - ********************************************************************************
+INFO - openejb.home = C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - openejb.base = C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@448ad367
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Found EjbModule in classpath: c:\users\oz\desktop\ee-examples\simple-singleton\target\classes
+INFO - Beginning load: c:\users\oz\desktop\ee-examples\simple-singleton\target\classes
+INFO - Configuring enterprise application: C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - Auto-deploying ejb PropertyRegistry: EjbDeployment(deployment-id=PropertyRegistry)
+INFO - Auto-deploying ejb ComponentRegistry: EjbDeployment(deployment-id=ComponentRegistry)
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean PropertyRegistry: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Creating Container(id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.registry.ComponentRegistryTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory C:\Users\Oz\AppData\Local\Temp for stateful session passivation
+INFO - Enterprise application "C:\Users\Oz\Desktop\ee-examples\simple-singleton" loaded.
+INFO - Assembling app: C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - Jndi(name="java:global/simple-singleton/PropertyRegistry!org.superbiz.registry.PropertyRegistry")
+INFO - Jndi(name="java:global/simple-singleton/PropertyRegistry")
+INFO - Jndi(name="java:global/simple-singleton/ComponentRegistry!org.superbiz.registry.ComponentRegistry")
+INFO - Jndi(name="java:global/simple-singleton/ComponentRegistry")
+INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@448ad367
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took 68 ms.
+INFO - Created Ejb(deployment-id=PropertyRegistry, ejb-name=PropertyRegistry, container=Default Singleton Container)
+INFO - Created Ejb(deployment-id=ComponentRegistry, ejb-name=ComponentRegistry, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=PropertyRegistry, ejb-name=PropertyRegistry, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=ComponentRegistry, ejb-name=ComponentRegistry, container=Default Singleton Container)
+INFO - Deployed Application(path=C:\Users\Oz\Desktop\ee-examples\simple-singleton)
+[Sun Jun 09 03:46:52 IDT 2013]
+INFO - Undeploying app: C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - Destroying OpenEJB container
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.431 sec
+Running org.superbiz.registry.PropertiesRegistryTest
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Sun Jun 09 03:46:52 IDT 2013
+INFO - Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 7.0.0-SNAPSHOT
+INFO - Build date: 20130608
+INFO - Build time: 04:07
+INFO - ********************************************************************************
+INFO - openejb.home = C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - openejb.base = C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@448ad367
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Using 'java.security.auth.login.config=jar:file:/C:/Users/Oz/.m2/repository/org/apache/openejb/openejb-core/7.0.0-SNAPSHOT/openejb-core-7.0.0-SNAPSHOT.jar!/login.config'
+INFO - Found EjbModule in classpath: c:\users\oz\desktop\ee-examples\simple-singleton\target\classes
+INFO - Beginning load: c:\users\oz\desktop\ee-examples\simple-singleton\target\classes
+INFO - Configuring enterprise application: C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - Auto-deploying ejb ComponentRegistry: EjbDeployment(deployment-id=ComponentRegistry)
+INFO - Auto-deploying ejb PropertyRegistry: EjbDeployment(deployment-id=PropertyRegistry)
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean ComponentRegistry: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Creating Container(id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.registry.PropertiesRegistryTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory C:\Users\Oz\AppData\Local\Temp for stateful session passivation
+INFO - Enterprise application "C:\Users\Oz\Desktop\ee-examples\simple-singleton" loaded.
+INFO - Assembling app: C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - Jndi(name="java:global/simple-singleton/ComponentRegistry!org.superbiz.registry.ComponentRegistry")
+INFO - Jndi(name="java:global/simple-singleton/ComponentRegistry")
+INFO - Jndi(name="java:global/simple-singleton/PropertyRegistry!org.superbiz.registry.PropertyRegistry")
+INFO - Jndi(name="java:global/simple-singleton/PropertyRegistry")
+INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@448ad367
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took 4 ms.
+INFO - Created Ejb(deployment-id=PropertyRegistry, ejb-name=PropertyRegistry, container=Default Singleton Container)
+INFO - Created Ejb(deployment-id=ComponentRegistry, ejb-name=ComponentRegistry, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=PropertyRegistry, ejb-name=PropertyRegistry, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=ComponentRegistry, ejb-name=ComponentRegistry, container=Default Singleton Container)
+INFO - Deployed Application(path=C:\Users\Oz\Desktop\ee-examples\simple-singleton)
+INFO - Undeploying app: C:\Users\Oz\Desktop\ee-examples\simple-singleton
+INFO - Destroying OpenEJB container
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.171 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
diff --git a/src/main/jbake/content/examples/simple-stateful-callbacks.adoc b/src/main/jbake/content/examples/simple-stateful-callbacks.adoc
new file mode 100755
index 0000000..f3c4506
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-stateful-callbacks.adoc
@@ -0,0 +1,324 @@
+= Simple Stateful with callback methods
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-stateful-callbacks can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-stateful-callbacks
+
+
+This example shows how to create a stateful session bean that uses the @PrePassivate, @PostActivate, @PostConstruct, @PreDestroy and @AroundInvoke annotations.
+
+==  CallbackCounter
+
+
+[source,java]
+----
+package org.superbiz.counter;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ejb.PostActivate;
+import javax.ejb.PrePassivate;
+import javax.ejb.Stateful;
+import javax.ejb.StatefulTimeout;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+import java.io.Serializable;
+import java.util.concurrent.TimeUnit;
+
+@Stateful
+@StatefulTimeout(value = 1, unit = TimeUnit.SECONDS)
+public class CallbackCounter implements Serializable {
+
+    private int count = 0;
+
+    @PrePassivate
+    public void prePassivate() {
+        ExecutionChannel.getInstance().notifyObservers("prePassivate");
+    }
+
+    @PostActivate
+    public void postActivate() {
+        ExecutionChannel.getInstance().notifyObservers("postActivate");
+    }
+
+    @PostConstruct
+    public void postConstruct() {
+        ExecutionChannel.getInstance().notifyObservers("postConstruct");
+    }
+
+    @PreDestroy
+    public void preDestroy() {
+        ExecutionChannel.getInstance().notifyObservers("preDestroy");
+    }
+
+    @AroundInvoke
+    public Object intercept(InvocationContext ctx) throws Exception {
+        ExecutionChannel.getInstance().notifyObservers(ctx.getMethod().getName());
+        return ctx.proceed();
+    }
+
+    public int count() {
+        return count;
+    }
+
+    public int increment() {
+        return ++count;
+    }
+
+    public int reset() {
+        return (count = 0);
+    }
+}
+----
+
+
+==  ExecutionChannel
+
+
+[source,java]
+----
+package org.superbiz.counter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ExecutionChannel {
+    private static final ExecutionChannel INSTANCE = new ExecutionChannel();
+
+    private final List<ExecutionObserver> observers = new ArrayList<ExecutionObserver>();
+
+    public static ExecutionChannel getInstance() {
+        return INSTANCE;
+    }
+
+    public void addObserver(ExecutionObserver observer) {
+        this.observers.add(observer);
+    }
+
+    public void notifyObservers(Object value) {
+        for (ExecutionObserver observer : this.observers) {
+            observer.onExecution(value);
+        }
+    }
+}
+----
+
+
+==  ExecutionObserver
+
+
+[source,java]
+----
+package org.superbiz.counter;
+
+public interface ExecutionObserver {
+
+    void onExecution(Object value);
+
+}
+----
+
+
+==  CounterCallbacksTest
+
+
+[source,java]
+----
+package org.superbiz.counter;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.util.*;
+
+public class CounterCallbacksTest implements ExecutionObserver {
+    private static List<Object> received = new ArrayList<Object>();
+
+    public Context getContext() throws NamingException {
+        final Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        return new InitialContext(p);
+
+    }
+
+    @Test
+    public void test() throws Exception {
+        final Map<String, Object> p = new HashMap<String, Object>();
+        p.put("MySTATEFUL", "new://Container?type=STATEFUL");
+        p.put("MySTATEFUL.Capacity", "2"); //How many instances of Stateful beans can our server hold in memory?
+        p.put("MySTATEFUL.Frequency", "1"); //Interval in seconds between checks
+        p.put("MySTATEFUL.BulkPassivate", "0"); //No bulkPassivate - just passivate entities whenever it is needed
+        final EJBContainer container = EJBContainer.createEJBContainer(p);
+
+        //this is going to track the execution
+        ExecutionChannel.getInstance().addObserver(this);
+
+        {
+            final Context context = getContext();
+
+            CallbackCounter counterA = (CallbackCounter) context.lookup("java:global/simple-stateful-callbacks/CallbackCounter");
+            Assert.assertNotNull(counterA);
+            Assert.assertEquals("postConstruct", received.remove(0));
+
+            Assert.assertEquals(0, counterA.count());
+            Assert.assertEquals("count", received.remove(0));
+
+            Assert.assertEquals(1, counterA.increment());
+            Assert.assertEquals("increment", received.remove(0));
+
+            Assert.assertEquals(0, counterA.reset());
+            Assert.assertEquals("reset", received.remove(0));
+
+            Assert.assertEquals(1, counterA.increment());
+            Assert.assertEquals("increment", received.remove(0));
+
+            System.out.println("Waiting 2 seconds...");
+            Thread.sleep(2000);
+
+            Assert.assertEquals("preDestroy", received.remove(0));
+
+            try {
+                counterA.increment();
+                Assert.fail("The ejb is not supposed to be there.");
+            } catch (javax.ejb.NoSuchEJBException e) {
+                //excepted
+            }
+
+            context.close();
+        }
+
+        {
+            final Context context = getContext();
+
+            CallbackCounter counterA = (CallbackCounter) context.lookup("java:global/simple-stateful-callbacks/CallbackCounter");
+            Assert.assertEquals("postConstruct", received.remove(0));
+
+            Assert.assertEquals(1, counterA.increment());
+            Assert.assertEquals("increment", received.remove(0));
+
+            ((CallbackCounter) context.lookup("java:global/simple-stateful-callbacks/CallbackCounter")).count();
+            Assert.assertEquals("postConstruct", received.remove(0));
+            Assert.assertEquals("count", received.remove(0));
+
+            ((CallbackCounter) context.lookup("java:global/simple-stateful-callbacks/CallbackCounter")).count();
+            Assert.assertEquals("postConstruct", received.remove(0));
+            Assert.assertEquals("count", received.remove(0));
+
+            System.out.println("Waiting 2 seconds...");
+            Thread.sleep(2000);
+            Assert.assertEquals("prePassivate", received.remove(0));
+
+            context.close();
+        }
+        container.close();
+
+        Assert.assertEquals("preDestroy", received.remove(0));
+        Assert.assertEquals("preDestroy", received.remove(0));
+
+        Assert.assertTrue(received.toString(), received.isEmpty());
+    }
+
+    @Override
+    public void onExecution(Object value) {
+        System.out.println("Test step -> " + value);
+        received.add(value);
+    }
+}
+----
+
+
+=  Running
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.counter.CounterCallbacksTest
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Sat Jul 21 08:18:28 EDT 2012
+INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 4.1.0
+INFO - Build date: 20120721
+INFO - Build time: 04:06
+INFO - ********************************************************************************
+INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks
+INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=MySTATEFUL, type=Container, provider-id=Default Stateful Container)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Creating Container(id=MySTATEFUL)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks/target/classes
+INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks
+INFO - Auto-deploying ejb CallbackCounter: EjbDeployment(deployment-id=CallbackCounter)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.counter.CounterCallbacksTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks" loaded.
+INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks
+INFO - Jndi(name="java:global/simple-stateful-callbacks/CallbackCounter!org.superbiz.counter.CallbackCounter")
+INFO - Jndi(name="java:global/simple-stateful-callbacks/CallbackCounter")
+INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 225 ms.
+INFO - Created Ejb(deployment-id=CallbackCounter, ejb-name=CallbackCounter, container=MySTATEFUL)
+INFO - Started Ejb(deployment-id=CallbackCounter, ejb-name=CallbackCounter, container=MySTATEFUL)
+INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks)
+Test step -> postConstruct
+Test step -> count
+Test step -> increment
+Test step -> reset
+Test step -> increment
+Waiting 2 seconds...
+Test step -> preDestroy
+INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-8000
+INFO - Activation failed: file not found /tmp/583c10bfdbd326ba=57f94a9b=138a9798adf=-8000
+Test step -> postConstruct
+Test step -> increment
+Test step -> postConstruct
+Test step -> count
+Test step -> postConstruct
+Test step -> count
+Waiting 2 seconds...
+Test step -> prePassivate
+INFO - Passivating to file /tmp/583c10bfdbd326ba=57f94a9b=138a9798adf=-7fff
+Test step -> preDestroy
+INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-7ffe
+Test step -> preDestroy
+INFO - Removing the timed-out stateful session bean instance 583c10bfdbd326ba:57f94a9b:138a9798adf:-7ffd
+INFO - Undeploying app: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.487 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
+    [INFO] ------------------------------------------------------------------------
+    [INFO] BUILD SUCCESS
+    [INFO] ------------------------------------------------------------------------
+    [INFO] Total time: 15.803s
+    [INFO] Finished at: Sat Jul 21 08:18:35 EDT 2012
+    [INFO] Final Memory: 11M/247M
+    [INFO] ------------------------------------------------------------------------
+
+
diff --git a/src/main/jbake/content/examples/simple-stateful.adoc b/src/main/jbake/content/examples/simple-stateful.adoc
new file mode 100755
index 0000000..cc2b7d8
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-stateful.adoc
@@ -0,0 +1,160 @@
+= Simple Stateful
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-stateful can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-stateful
+
+
+This example demonstrates a simple deployment of a Stateful session bean.
+
+
+NOTE: "As its name suggests, a stateful session bean is similar to an interactive session. A stateful session bean is not shared; 
+
+it can have only one client, in the same way that an interactive session can have only one user. 
+When the client terminates, its stateful session bean appears to terminate and is no longer associated with the client."
+
+The `Counter` class is a Stateful session bean that maintains a state in a form of a `count` integer field.
+It exposes three methods: `count()`, `increment()` and `reset()` to manipulate and view its state.
+
+Typically, Stateful and Stateless beans implement Local and/or Remote interfaces to determine which methods should
+be exposed. In this case, the bean is using a no-interface view, which means that all public methods are exposed
+as a local view. 
+
+==  Counter
+
+
+[source,java]
+----
+package org.superbiz.counter;
+
+import javax.ejb.Stateful;
+
+/**
+ * This is an EJB 3 style pojo stateful session bean
+ * Every stateful session bean implementation must be annotated
+ * using the annotation @Stateful
+ * This EJB has 2 business interfaces: CounterRemote, a remote business
+ * interface, and CounterLocal, a local business interface
+ * <p/>
+ * Per EJB3 rules when the @Remote or @Local annotation isn't present
+ * in the bean class (this class), all interfaces are considered
+ * local unless explicitly annotated otherwise.  If you look
+ * in the CounterRemote interface, you'll notice it uses the @Remote
+ * annotation while the CounterLocal interface is not annotated relying
+ * on the EJB3 default rules to make it a local interface.
+ */
+//START SNIPPET: code
+@Stateful
+public class Counter {
+
+    private int count = 0;
+
+    public int count() {
+        return count;
+    }
+
+    public int increment() {
+        return ++count;
+    }
+
+    public int reset() {
+        return (count = 0);
+    }
+}
+----
+
+
+==  CounterTest
+
+The `Counter` class is tested by obtaining a `Context` object and performing a JNDI lookup on it, to retrieve
+an instance of the `Counter` bean. After some state manipulation, a new instance is fetched from the container
+and we can see that it's a new instance.
+
+
+[source,java]
+----
+package org.superbiz.counter;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+public class CounterTest extends TestCase {
+
+    //START SNIPPET: local
+    public void test() throws Exception {
+
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        Counter counterA = (Counter) context.lookup("java:global/simple-stateful/Counter");
+
+        assertEquals(0, counterA.count());
+        assertEquals(0, counterA.reset());
+        assertEquals(1, counterA.increment());
+        assertEquals(2, counterA.increment());
+        assertEquals(0, counterA.reset());
+
+        counterA.increment();
+        counterA.increment();
+        counterA.increment();
+        counterA.increment();
+
+        assertEquals(4, counterA.count());
+
+        // Get a new counter
+        Counter counterB = (Counter) context.lookup("java:global/simple-stateful/Counter");
+
+        // The new bean instance starts out at 0
+        assertEquals(0, counterB.count());
+    }
+    //END SNIPPET: local
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.counter.CounterTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/simple-stateful
+INFO - openejb.base = /Users/dblevins/examples/simple-stateful
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-stateful/target/classes
+INFO - Beginning load: /Users/dblevins/examples/simple-stateful/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/simple-stateful
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Counter: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.counter.CounterTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/simple-stateful" loaded.
+INFO - Assembling app: /Users/dblevins/examples/simple-stateful
+INFO - Jndi(name="java:global/simple-stateful/Counter!org.superbiz.counter.Counter")
+INFO - Jndi(name="java:global/simple-stateful/Counter")
+INFO - Jndi(name="java:global/EjbModule309142400/org.superbiz.counter.CounterTest!org.superbiz.counter.CounterTest")
+INFO - Jndi(name="java:global/EjbModule309142400/org.superbiz.counter.CounterTest")
+INFO - Created Ejb(deployment-id=Counter, ejb-name=Counter, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.counter.CounterTest, ejb-name=org.superbiz.counter.CounterTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Counter, ejb-name=Counter, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.counter.CounterTest, ejb-name=org.superbiz.counter.CounterTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/simple-stateful)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.098 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/simple-stateless-callbacks.adoc b/src/main/jbake/content/examples/simple-stateless-callbacks.adoc
new file mode 100755
index 0000000..62bda15
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-stateless-callbacks.adoc
@@ -0,0 +1,260 @@
+= Simple Stateless with callback methods
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-stateless-callbacks can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-stateless-callbacks
+
+
+This example shows how to create a stateless session bean that uses the @PostConstruct, @PreDestroy and @AroundInvoke annotations.
+
+==  CalculatorBean
+
+
+[source,java]
+----
+package org.superbiz.stateless.basic;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ejb.Stateless;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+@Stateless
+public class CalculatorBean {
+
+    @PostConstruct
+    public void postConstruct() {
+        ExecutionChannel.getInstance().notifyObservers("postConstruct");
+    }
+
+    @PreDestroy
+    public void preDestroy() {
+        ExecutionChannel.getInstance().notifyObservers("preDestroy");
+    }
+
+    @AroundInvoke
+    public Object intercept(InvocationContext ctx) throws Exception {
+        ExecutionChannel.getInstance().notifyObservers(ctx.getMethod().getName());
+        return ctx.proceed();
+    }
+
+    public int add(int a, int b) {
+        return a + b;
+    }
+
+    public int subtract(int a, int b) {
+        return a - b;
+    }
+
+    public int multiply(int a, int b) {
+        return a * b;
+    }
+
+    public int divide(int a, int b) {
+        return a / b;
+    }
+
+    public int remainder(int a, int b) {
+        return a % b;
+    }
+
+}
+----
+
+
+==  ExecutionChannel
+
+
+[source,java]
+----
+package org.superbiz.counter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ExecutionChannel {
+    private static final ExecutionChannel INSTANCE = new ExecutionChannel();
+
+    private final List<ExecutionObserver> observers = new ArrayList<ExecutionObserver>();
+
+    public static ExecutionChannel getInstance() {
+        return INSTANCE;
+    }
+
+    public void addObserver(ExecutionObserver observer) {
+        this.observers.add(observer);
+    }
+
+    public void notifyObservers(Object value) {
+        for (ExecutionObserver observer : this.observers) {
+            observer.onExecution(value);
+        }
+    }
+}
+----
+
+
+==  ExecutionObserver
+
+
+[source,java]
+----
+package org.superbiz.counter;
+
+public interface ExecutionObserver {
+
+    void onExecution(Object value);
+
+}
+----
+
+
+
+==  CalculatorTest
+
+
+[source,java]
+----
+package org.superbiz.stateless.basic;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+public class CalculatorTest implements ExecutionObserver {
+    private static final String JNDI = "java:global/simple-stateless-callbacks/CalculatorBean";
+
+    private List<Object> received = new ArrayList<Object>();
+
+    public Context getContext() throws NamingException {
+        final Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        return new InitialContext(p);
+
+    }
+
+    @Test
+    public void test() throws Exception {
+        ExecutionChannel.getInstance().addObserver(this);
+
+        final EJBContainer container = EJBContainer.createEJBContainer();
+
+        {
+            final CalculatorBean calculator = (CalculatorBean) getContext().lookup(JNDI);
+
+            Assert.assertEquals(10, calculator.add(4, 6));
+
+            //the bean is constructed only when it is used for the first time
+            Assert.assertEquals("postConstruct", this.received.remove(0));
+            Assert.assertEquals("add", this.received.remove(0));
+
+            Assert.assertEquals(-2, calculator.subtract(4, 6));
+            Assert.assertEquals("subtract", this.received.remove(0));
+
+            Assert.assertEquals(24, calculator.multiply(4, 6));
+            Assert.assertEquals("multiply", this.received.remove(0));
+
+            Assert.assertEquals(2, calculator.divide(12, 6));
+            Assert.assertEquals("divide", this.received.remove(0));
+
+            Assert.assertEquals(4, calculator.remainder(46, 6));
+            Assert.assertEquals("remainder", this.received.remove(0));
+        }
+
+        {
+            final CalculatorBean calculator = (CalculatorBean) getContext().lookup(JNDI);
+
+            Assert.assertEquals(10, calculator.add(4, 6));
+            Assert.assertEquals("add", this.received.remove(0));
+
+        }
+
+        container.close();
+        Assert.assertEquals("preDestroy", this.received.remove(0));
+        Assert.assertTrue(this.received.isEmpty());
+    }
+
+    @Override
+    public void onExecution(Object value) {
+        System.out.println("Test step -> " + value);
+        this.received.add(value);
+    }
+}
+----
+
+
+=  Running
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.stateless.basic.CalculatorTest
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Sat Jul 21 09:23:38 EDT 2012
+INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 4.1.0
+INFO - Build date: 20120721
+INFO - Build time: 04:06
+INFO - ********************************************************************************
+INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateless-callbacks
+INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateless-callbacks
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateless-callbacks/target/classes
+INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateless-callbacks
+INFO - Auto-deploying ejb CalculatorBean: EjbDeployment(deployment-id=CalculatorBean)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean CalculatorBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Creating Container(id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.stateless.basic.CalculatorTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Enterprise application "/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateless-callbacks" loaded.
+INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateless-callbacks
+INFO - Jndi(name="java:global/simple-stateless-callbacks/CalculatorBean!org.superbiz.stateless.basic.CalculatorBean")
+INFO - Jndi(name="java:global/simple-stateless-callbacks/CalculatorBean")
+INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 111 ms.
+INFO - Created Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container)
+INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateless-callbacks)
+Test step -> postConstruct
+Test step -> add
+Test step -> subtract
+Test step -> multiply
+Test step -> divide
+Test step -> remainder
+Test step -> add
+INFO - Undeploying app: /home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateless-callbacks
+Test step -> preDestroy
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.884 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/simple-stateless-with-descriptor.adoc b/src/main/jbake/content/examples/simple-stateless-with-descriptor.adoc
new file mode 100755
index 0000000..d91bf04
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-stateless-with-descriptor.adoc
@@ -0,0 +1,205 @@
+= Simple Stateless with Descriptor
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-stateless-with-descriptor can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-stateless-with-descriptor
+
+
+This test is similar to simple-stateless, with two major differences. In this case all the classes are regular POJOs without annotations.
+The EJB-specific metadata is provided via an XML descriptor. The second difference is the explicite use of Local and Remote interfaces. 
+
+==  CalculatorImpl
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+/**
+ * This is an EJB 3 stateless session bean, configured using an EJB 3
+ * deployment descriptor as opposed to using annotations.
+ * This EJB has 2 business interfaces: CalculatorRemote, a remote business
+ * interface, and CalculatorLocal, a local business interface
+ */
+public class CalculatorImpl implements CalculatorRemote, CalculatorLocal {
+
+    public int sum(int add1, int add2) {
+        return add1 + add2;
+    }
+
+    public int multiply(int mul1, int mul2) {
+        return mul1 * mul2;
+    }
+}
+----
+
+
+==  CalculatorLocal
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+/**
+ * This is an EJB 3 local business interface
+ * This interface is specified using the business-local tag in the deployment descriptor
+ */
+public interface CalculatorLocal {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  CalculatorRemote
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+
+/**
+ * This is an EJB 3 remote business interface
+ * This interface is specified using the business-local tag in the deployment descriptor
+ */
+public interface CalculatorRemote {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  ejb-jar.xml
+
+The XML descriptor defines the EJB class and both local and remote interfaces.
+
+
+[source,xml]
+----
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0">
+  <enterprise-beans>
+    <session>
+      <ejb-name>CalculatorImpl</ejb-name>
+      <business-local>org.superbiz.calculator.CalculatorLocal</business-local>
+      <business-remote>org.superbiz.calculator.CalculatorRemote</business-remote>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+  </enterprise-beans>
+</ejb-jar>
+----
+
+
+    
+
+==  CalculatorTest
+
+Two tests obtain a Local and Remote interface to the bean instance. This time an `InitialContext` object is directly created, 
+as opposed to getting the context from `EJBContainer`, as we did in the previous example. 
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import junit.framework.TestCase;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+public class CalculatorTest extends TestCase {
+
+    private InitialContext initialContext;
+
+    protected void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+
+        initialContext = new InitialContext(properties);
+    }
+
+    /**
+     * Lookup the Calculator bean via its remote home interface
+     *
+     * @throws Exception
+     */
+    public void testCalculatorViaRemoteInterface() throws Exception {
+        Object object = initialContext.lookup("CalculatorImplRemote");
+
+        assertNotNull(object);
+        assertTrue(object instanceof CalculatorRemote);
+        CalculatorRemote calc = (CalculatorRemote) object;
+        assertEquals(10, calc.sum(4, 6));
+        assertEquals(12, calc.multiply(3, 4));
+    }
+
+    /**
+     * Lookup the Calculator bean via its local home interface
+     *
+     * @throws Exception
+     */
+    public void testCalculatorViaLocalInterface() throws Exception {
+        Object object = initialContext.lookup("CalculatorImplLocal");
+
+        assertNotNull(object);
+        assertTrue(object instanceof CalculatorLocal);
+        CalculatorLocal calc = (CalculatorLocal) object;
+        assertEquals(10, calc.sum(4, 6));
+        assertEquals(12, calc.multiply(3, 4));
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.calculator.CalculatorTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/simple-stateless-with-descriptor
+INFO - openejb.base = /Users/dblevins/examples/simple-stateless-with-descriptor
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-stateless-with-descriptor/target/classes
+INFO - Beginning load: /Users/dblevins/examples/simple-stateless-with-descriptor/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean CalculatorImpl: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear
+INFO - Jndi(name=CalculatorImplLocal) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl!org.superbiz.calculator.CalculatorLocal) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=global/classpath.ear/simple-stateless-with-descriptor/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/simple-stateless-with-descriptor/classpath.ear)
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.475 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/simple-stateless.adoc b/src/main/jbake/content/examples/simple-stateless.adoc
new file mode 100755
index 0000000..0845b5e
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-stateless.adoc
@@ -0,0 +1,221 @@
+= Simple Stateless
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-stateless can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-stateless
+
+
+
+NOTE: "Stateless session beans are session beans whose instances have no conversational state.
+
+This means that all bean instances are equivalent when they are not involved in servicing
+a client-invoked method. The term 'stateless' signifies that an instance has no state for a
+specific client."
+
+What this means is quite simply that stateless beans are shared. They do in fact have state
+as you can assign values to the variables, etc. in the bean instance. The only catch is there
+are a pool of identical instances and you are not guaranteed to get the exact same instance on
+every call. For each call, you get whatever instance happens to be available. This is identical
+to checking out a book from the library or renting a movie from the video store. You are essentially
+checking out or renting a new bean instance on each method call.
+
+==  CalculatorBean
+
+
+[source,java]
+----
+package org.superbiz.stateless.basic;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class CalculatorBean {
+
+    public int add(int a, int b) {
+        return a + b;
+    }
+
+    public int subtract(int a, int b) {
+        return a - b;
+    }
+
+    public int multiply(int a, int b) {
+        return a * b;
+    }
+
+    public int divide(int a, int b) {
+        return a / b;
+    }
+
+    public int remainder(int a, int b) {
+        return a % b;
+    }
+}
+----
+
+
+==  CalculatorTest
+
+Our `CalculatorBean` can be easily tested using the `EJBContainer` API in EJB 3.1
+
+
+[source,java]
+----
+package org.superbiz.stateless.basic;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.NamingException;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class CalculatorTest {
+
+    private static EJBContainer ejbContainer;
+
+    private CalculatorBean calculator;
+
+    @BeforeClass
+    public static void startTheContainer() {
+        ejbContainer = EJBContainer.createEJBContainer();
+    }
+
+    @Before
+    public void lookupABean() throws NamingException {
+        Object object = ejbContainer.getContext().lookup("java:global/simple-stateless/CalculatorBean");
+
+        assertTrue(object instanceof CalculatorBean);
+
+        calculator = (CalculatorBean) object;
+    }
+
+    @AfterClass
+    public static void stopTheContainer() {
+        if (ejbContainer != null) {
+            ejbContainer.close();
+        }
+    }
+
+    /**
+     * Test Add method
+     */
+    @Test
+    public void testAdd() {
+
+        assertEquals(10, calculator.add(4, 6));
+
+    }
+
+    /**
+     * Test Subtract method
+     */
+    @Test
+    public void testSubtract() {
+
+        assertEquals(-2, calculator.subtract(4, 6));
+
+    }
+
+    /**
+     * Test Multiply method
+     */
+    @Test
+    public void testMultiply() {
+
+        assertEquals(24, calculator.multiply(4, 6));
+
+    }
+
+    /**
+     * Test Divide method
+     */
+    @Test
+    public void testDivide() {
+
+        assertEquals(2, calculator.divide(12, 6));
+
+    }
+
+    /**
+     * Test Remainder method
+     */
+    @Test
+    public void testRemainder() {
+
+        assertEquals(4, calculator.remainder(46, 6));
+
+    }
+
+}
+----
+
+
+=  Running
+
+
+Running the example should generate output similar to the following
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.stateless.basic.CalculatorTest
+Infos - ********************************************************************************
+Infos - OpenEJB http://tomee.apache.org/
+Infos - Startup: Tue Aug 14 13:28:12 CEST 2012
+Infos - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+Infos - Version: 4.1.0
+Infos - Build date: 20120814
+Infos - Build time: 01:06
+Infos - ********************************************************************************
+Infos - openejb.home = /home/a185558/Development/Apache/openejb-trunk/examples/simple-stateless
+Infos - openejb.base = /home/a185558/Development/Apache/openejb-trunk/examples/simple-stateless
+Infos - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@33bb11
+Infos - Succeeded in installing singleton service
+Infos - Using 'javax.ejb.embeddable.EJBContainer=true'
+Infos - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+Infos - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+Infos - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+Infos - Creating TransactionManager(id=Default Transaction Manager)
+Infos - Creating SecurityService(id=Default Security Service)
+Infos - Beginning load: /home/a185558/Development/Apache/openejb-trunk/examples/simple-stateless/target/classes
+Infos - Configuring enterprise application: /home/a185558/Development/Apache/openejb-trunk/examples/simple-stateless
+Infos - Auto-deploying ejb CalculatorBean: EjbDeployment(deployment-id=CalculatorBean)
+Infos - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+Infos - Auto-creating a container for bean CalculatorBean: Container(type=STATELESS, id=Default Stateless Container)
+Infos - Creating Container(id=Default Stateless Container)
+Infos - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+Infos - Auto-creating a container for bean org.superbiz.stateless.basic.CalculatorTest: Container(type=MANAGED, id=Default Managed Container)
+Infos - Creating Container(id=Default Managed Container)
+Infos - Using directory /tmp for stateful session passivation
+Infos - Enterprise application "/home/a185558/Development/Apache/openejb-trunk/examples/simple-stateless" loaded.
+Infos - Assembling app: /home/a185558/Development/Apache/openejb-trunk/examples/simple-stateless
+Infos - Jndi(name="java:global/simple-stateless/CalculatorBean!org.superbiz.stateless.basic.CalculatorBean")
+Infos - Jndi(name="java:global/simple-stateless/CalculatorBean")
+Infos - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@33bb11
+Infos - OpenWebBeans Container is starting...
+Infos - Adding OpenWebBeansPlugin : [CdiPlugin]
+Infos - All injection points are validated successfully.
+Infos - OpenWebBeans Container has started, it took 135 ms.
+Infos - Created Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container)
+Infos - Started Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container)
+Infos - Deployed Application(path=/home/a185558/Development/Apache/openejb-trunk/examples/simple-stateless)
+Infos - Undeploying app: /home/a185558/Development/Apache/openejb-trunk/examples/simple-stateless
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.068 sec
+
+Results :
+
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/simple-webservice-without-interface.adoc b/src/main/jbake/content/examples/simple-webservice-without-interface.adoc
new file mode 100755
index 0000000..fc17728
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-webservice-without-interface.adoc
@@ -0,0 +1,110 @@
+= Simple Webservice Without Interface
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-webservice-without-interface can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-webservice-without-interface
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Calculator
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+
+@Stateless
+@WebService(
+        portName = "CalculatorPort",
+        serviceName = "CalculatorWsService",
+        targetNamespace = "http://superbiz.org/wsdl")
+public class Calculator {
+    public int sum(int add1, int add2) {
+        return add1 + add2;
+    }
+
+    public int multiply(int mul1, int mul2) {
+        return mul1 * mul2;
+    }
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar/>
+----
+
+
+==  CalculatorTest
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.NamingException;
+import java.net.URL;
+import java.util.Properties;
+
+import static org.junit.Assert.assertTrue;
+
+public class CalculatorTest {
+    private static EJBContainer container;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        final Properties properties = new Properties();
+        properties.setProperty("openejb.embedded.remotable", "true");
+
+        container = EJBContainer.createEJBContainer(properties);
+    }
+
+    @Before
+    public void inject() throws NamingException {
+        if (container != null) {
+            container.getContext().bind("inject", this);
+        }
+    }
+
+    @AfterClass
+    public static void close() {
+        if (container != null) {
+            container.close();
+        }
+    }
+
+    @Test
+    public void wsdlExists() throws Exception {
+        final URL url = new URL("http://127.0.0.1:4204/Calculator?wsdl");
+        assertTrue(IOUtils.readLines(url.openStream()).size() > 0);
+        assertTrue(IOUtils.readLines(url.openStream()).toString().contains("CalculatorWsService"));
+    }
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar/>
+----
+
diff --git a/src/main/jbake/content/examples/simple-webservice.adoc b/src/main/jbake/content/examples/simple-webservice.adoc
new file mode 100755
index 0000000..172fd4a
--- /dev/null
+++ b/src/main/jbake/content/examples/simple-webservice.adoc
@@ -0,0 +1,386 @@
+= JAX-WS @WebService example
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example simple-webservice can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-webservice
+
+
+Creating Web Services with JAX-WS is quite easy.  Little has to be done aside from annotating a class with `@WebService`.  For
+the purposes of this example we will also annotate our component with `@Stateless` which takes some of the configuration out of
+the process and gives us some nice options such as transactions and security.
+
+==  @WebService
+
+The following is all that is required.  No external xml files are needed.  This class placed in a jar or war and deployed into a compliant Java EE server like TomEE is enough to have the Calculator class discovered and deployed and the webservice online.
+
+
+[source,java]
+----
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+
+@Stateless
+@WebService(
+        portName = "CalculatorPort",
+        serviceName = "CalculatorService",
+        targetNamespace = "http://superbiz.org/wsdl",
+        endpointInterface = "org.superbiz.calculator.ws.CalculatorWs")
+public class Calculator implements CalculatorWs {
+
+    public int sum(int add1, int add2) {
+        return add1 + add2;
+    }
+
+    public int multiply(int mul1, int mul2) {
+        return mul1 * mul2;
+    }
+}
+----
+
+
+==  @WebService Endpoint Interface
+
+Having an endpoint interface is not required, but it can make testing and using the web service from other Java clients far easier.
+
+
+[source,java]
+----
+import javax.jws.WebService;
+
+@WebService(targetNamespace = "http://superbiz.org/wsdl")
+public interface CalculatorWs {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  Calculator WSDL
+
+The wsdl for our service is autmatically created for us and available at `http://127.0.0.1:4204/Calculator?wsdl`.  In TomEE or Tomcat this would be at `http://127.0.0.1:8080/simple-webservice/Calculator?wsdl`
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="CalculatorService"
+                  targetNamespace="http://superbiz.org/wsdl"
+                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+                  xmlns:tns="http://superbiz.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <wsdl:types>
+    <xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"
+                targetNamespace="http://superbiz.org/wsdl" xmlns:tns="http://superbiz.org/wsdl"
+                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <xsd:element name="multiply" type="tns:multiply"/>
+      <xsd:complexType name="multiply">
+        <xsd:sequence>
+          <xsd:element name="arg0" type="xsd:int"/>
+          <xsd:element name="arg1" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="multiplyResponse" type="tns:multiplyResponse"/>
+      <xsd:complexType name="multiplyResponse">
+        <xsd:sequence>
+          <xsd:element name="return" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="sum" type="tns:sum"/>
+      <xsd:complexType name="sum">
+        <xsd:sequence>
+          <xsd:element name="arg0" type="xsd:int"/>
+          <xsd:element name="arg1" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="sumResponse" type="tns:sumResponse"/>
+      <xsd:complexType name="sumResponse">
+        <xsd:sequence>
+          <xsd:element name="return" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="multiplyResponse">
+    <wsdl:part element="tns:multiplyResponse" name="parameters"/>
+  </wsdl:message>
+  <wsdl:message name="sumResponse">
+    <wsdl:part element="tns:sumResponse" name="parameters"/>
+  </wsdl:message>
+  <wsdl:message name="sum">
+    <wsdl:part element="tns:sum" name="parameters"/>
+  </wsdl:message>
+  <wsdl:message name="multiply">
+    <wsdl:part element="tns:multiply" name="parameters"/>
+  </wsdl:message>
+  <wsdl:portType name="CalculatorWs">
+    <wsdl:operation name="multiply">
+      <wsdl:input message="tns:multiply" name="multiply"/>
+      <wsdl:output message="tns:multiplyResponse" name="multiplyResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="sum">
+      <wsdl:input message="tns:sum" name="sum"/>
+      <wsdl:output message="tns:sumResponse" name="sumResponse"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="CalculatorServiceSoapBinding" type="tns:CalculatorWs">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="multiply">
+      <soap:operation soapAction="" style="document"/>
+      <wsdl:input name="multiply">
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="multiplyResponse">
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="sum">
+      <soap:operation soapAction="" style="document"/>
+      <wsdl:input name="sum">
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="sumResponse">
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="CalculatorService">
+    <wsdl:port binding="tns:CalculatorServiceSoapBinding" name="CalculatorPort">
+      <soap:address location="http://127.0.0.1:4204/Calculator?wsdl"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
+----
+
+
+==  Accessing the @WebService with javax.xml.ws.Service
+
+In our testcase we see how to create a client for our `Calculator` service via the `javax.xml.ws.Service` class and leveraging our `CalculatorWs` endpoint interface.
+
+With this we can get an implementation of the interfacce generated dynamically for us that can be used to send compliant SOAP messages to our service.
+
+
+[source,java]
+----
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import java.net.URL;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class CalculatorTest {
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty("openejb.embedded.remotable", "true");
+        //properties.setProperty("httpejbd.print", "true");
+        //properties.setProperty("httpejbd.indent.xml", "true");
+        EJBContainer.createEJBContainer(properties);
+    }
+
+    @Test
+    public void test() throws Exception {
+        Service calculatorService = Service.create(
+                new URL("http://127.0.0.1:4204/Calculator?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorService"));
+
+        assertNotNull(calculatorService);
+
+        CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);
+        assertEquals(10, calculator.sum(4, 6));
+        assertEquals(12, calculator.multiply(3, 4));
+    }
+}
+----
+
+
+For easy testing we'll use the Embeddable EJBContainer API part of EJB 3.1 to boot CXF in our testcase.  This will deploy our application in the embedded container and bring the web service online so we can invoke it.
+
+=  Running
+
+Running the example can be done from maven with a simple 'mvn clean install' command run from the 'simple-webservice' directory.
+
+When run you should see output similar to the following.
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.calculator.ws.CalculatorTest
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Sat Feb 18 19:11:50 PST 2012
+INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 4.0.0-beta-3
+INFO - Build date: 20120218
+INFO - Build time: 03:32
+INFO - ********************************************************************************
+INFO - openejb.home = /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice
+INFO - openejb.base = /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@16bdb503
+INFO - succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Beginning load: /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice/target/classes
+INFO - Using 'openejb.embedded=true'
+INFO - Configuring enterprise application: /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice
+INFO - Auto-deploying ejb Calculator: EjbDeployment(deployment-id=Calculator)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Calculator: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Creating Container(id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.calculator.ws.CalculatorTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T for stateful session passivation
+INFO - Enterprise application "/Users/dblevins/work/all/trunk/openejb/examples/simple-webservice" loaded.
+INFO - Assembling app: /Users/dblevins/work/all/trunk/openejb/examples/simple-webservice
+INFO - ignoreXmlConfiguration == true
+INFO - ignoreXmlConfiguration == true
+INFO - existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@16bdb503
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took [62] ms.
+INFO - Created Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/work/all/trunk/openejb/examples/simple-webservice)
+INFO - Initializing network services
+INFO - can't find log4j MDC class
+INFO - Creating ServerService(id=httpejbd)
+INFO - Creating ServerService(id=cxf)
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Initializing network services
+INFO -   ** Starting Services **
+INFO -   NAME                 IP              PORT
+INFO -   httpejbd             127.0.0.1       4204
+INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from class org.superbiz.calculator.ws.CalculatorWs
+INFO - Setting the server's publish address to be http://nopath:80
+INFO - Webservice(wsdl=http://127.0.0.1:4204/Calculator, qname={http://superbiz.org/wsdl}CalculatorService) --> Ejb(id=Calculator)
+INFO -   admin thread         127.0.0.1       4200
+INFO -   ejbd                 127.0.0.1       4201
+INFO -   ejbd                 127.0.0.1       4203
+INFO - -------
+INFO - Ready!
+INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl
+INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl
+INFO - Default SAAJ universe not set
+INFO - TX NotSupported: Suspended transaction null
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.584 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
+==  Inspecting the messages
+
+The above test case will result in the following SOAP messages being sent between the clien and server.
+
+===  sum(int, int)
+
+Request SOAP message:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:sum xmlns:ns1="http://superbiz.org/wsdl">
+      <arg0>4</arg0>
+      <arg1>6</arg1>
+    </ns1:sum>
+  </soap:Body>
+</soap:Envelope>
+----
+
+
+Response SOAP message:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:sumResponse xmlns:ns1="http://superbiz.org/wsdl">
+      <return>10</return>
+    </ns1:sumResponse>
+  </soap:Body>
+</soap:Envelope>
+----
+
+
+===  multiply(int, int)
+
+Request SOAP message:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:multiply xmlns:ns1="http://superbiz.org/wsdl">
+      <arg0>3</arg0>
+      <arg1>4</arg1>
+    </ns1:multiply>
+  </soap:Body>
+</soap:Envelope>
+----
+
+
+Response SOAP message:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:multiplyResponse xmlns:ns1="http://superbiz.org/wsdl">
+      <return>12</return>
+    </ns1:multiplyResponse>
+  </soap:Body>
+</soap:Envelope>
+----
+
+
+==  Inside the jar
+
+With so much going on it can make things look more complex than they are.  It can be hard to believe that so much can happen with such little code.  That's the benefit of having an app server.
+
+If we look at the jar built by maven, we'll see the application itself is quite small:
+
+    $ jar tvf target/simple-webservice-1.1.0-SNAPSHOT.jar
+         0 Sat Feb 18 19:17:06 PST 2012 META-INF/
+       127 Sat Feb 18 19:17:04 PST 2012 META-INF/MANIFEST.MF
+         0 Sat Feb 18 19:17:02 PST 2012 org/
+         0 Sat Feb 18 19:17:02 PST 2012 org/superbiz/
+         0 Sat Feb 18 19:17:02 PST 2012 org/superbiz/calculator/
+         0 Sat Feb 18 19:17:02 PST 2012 org/superbiz/calculator/ws/
+       855 Sat Feb 18 19:17:02 PST 2012 org/superbiz/calculator/ws/Calculator.class
+       288 Sat Feb 18 19:17:02 PST 2012 org/superbiz/calculator/ws/CalculatorWs.class
+
+This single jar could be deployed any any compliant Java EE implementation.  In TomEE you'd simply place it in the `tomee.home/webapps/` directory.  No war file necessary.  If you did want to create a war, you'd simply place the jar in the `WEB-INF/lib/` directory of the war.
+
+The server already contains the right libraries to run the code, such as Apache CXF, so no need to include anything extra beyond your own application code.
+
diff --git a/src/main/jbake/content/examples/spring-data-proxy-meta.adoc b/src/main/jbake/content/examples/spring-data-proxy-meta.adoc
new file mode 100755
index 0000000..f71dfc8
--- /dev/null
+++ b/src/main/jbake/content/examples/spring-data-proxy-meta.adoc
@@ -0,0 +1,20 @@
+= spring-data-proxy-meta
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example spring-data-proxy-meta can be browsed at https://github.com/apache/tomee/tree/master/examples/spring-data-proxy-meta
+
+=  Spring Data With Meta sample #
+
+This example simply simplifies the usage of spring-data sample
+providing a meta annotation @SpringRepository to do all the dynamic procy EJB job.
+
+It replaces @Proxy and @Stateless annotations.
+
+Isn't it more comfortable?
+
+To do it we defined a meta annotation "Metatype" and used it.
+
+The proxy implementation is the same than for spring-data sample.
diff --git a/src/main/jbake/content/examples/spring-data-proxy.adoc b/src/main/jbake/content/examples/spring-data-proxy.adoc
new file mode 100755
index 0000000..59437f7
--- /dev/null
+++ b/src/main/jbake/content/examples/spring-data-proxy.adoc
@@ -0,0 +1,22 @@
+= spring-data-proxy
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example spring-data-proxy can be browsed at https://github.com/apache/tomee/tree/master/examples/spring-data-proxy
+
+=  Spring Data sample #
+
+This example uses OpenEJB hooks to replace an EJB implementation by a proxy
+to uses Spring Data in your preferred container.
+
+It is pretty simple: simply provide to OpenEJB an InvocationHandler using delegating to spring data
+and that's it!
+
+It is what is done in org.superbiz.dynamic.SpringDataProxy.
+
+It contains a little trick: even if it is not annotated "implementingInterfaceClass" attribute
+is injected by OpenEJB to get the interface.
+
+Then we simply create the Spring Data repository and delegate to it.
diff --git a/src/main/jbake/content/examples/struts.adoc b/src/main/jbake/content/examples/struts.adoc
new file mode 100755
index 0000000..4de6de7
--- /dev/null
+++ b/src/main/jbake/content/examples/struts.adoc
@@ -0,0 +1,439 @@
+= Struts
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example struts can be browsed at https://github.com/apache/tomee/tree/master/examples/struts
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  AddUser
+
+
+[source,java]
+----
+package org.superbiz.struts;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+
+public class AddUser {
+
+    private int id;
+    private String firstName;
+    private String lastName;
+    private String errorMessage;
+
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String execute() {
+
+        try {
+            UserService service = null;
+            Properties props = new Properties();
+            props.put(Context.INITIAL_CONTEXT_FACTORY,
+                    "org.apache.openejb.core.LocalInitialContextFactory");
+            Context ctx = new InitialContext(props);
+            service = (UserService) ctx.lookup("UserServiceImplLocal");
+            service.add(new User(id, firstName, lastName));
+        } catch (Exception e) {
+            this.errorMessage = e.getMessage();
+            return "failure";
+        }
+
+        return "success";
+    }
+}
+----
+
+
+==  AddUserForm
+
+
+[source,java]
+----
+package org.superbiz.struts;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+
+public class AddUserForm extends ActionSupport {
+}
+----
+
+
+==  FindUser
+
+
+[source,java]
+----
+package org.superbiz.struts;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+public class FindUser {
+
+    private int id;
+    private String errorMessage;
+    private User user;
+
+    public User getUser() {
+        return user;
+    }
+
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String execute() {
+
+        try {
+            UserService service = null;
+            Properties props = new Properties();
+            props.put(Context.INITIAL_CONTEXT_FACTORY,
+                    "org.apache.openejb.core.LocalInitialContextFactory");
+            Context ctx = new InitialContext(props);
+            service = (UserService) ctx.lookup("UserServiceImplLocal");
+            this.user = service.find(id);
+        } catch (Exception e) {
+            this.errorMessage = e.getMessage();
+            return "failure";
+        }
+
+        return "success";
+    }
+}
+----
+
+
+==  FindUserForm
+
+
+[source,java]
+----
+package org.superbiz.struts;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+
+public class FindUserForm extends ActionSupport {
+}
+----
+
+
+==  ListAllUsers
+
+
+[source,java]
+----
+package org.superbiz.struts;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.List;
+import java.util.Properties;
+
+public class ListAllUsers {
+
+    private int id;
+    private String errorMessage;
+    private List<User> users;
+
+    public List<User> getUsers() {
+        return users;
+    }
+
+    public void setUsers(List<User> users) {
+        this.users = users;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String execute() {
+
+        try {
+            UserService service = null;
+            Properties props = new Properties();
+            props.put(Context.INITIAL_CONTEXT_FACTORY,
+                    "org.apache.openejb.core.LocalInitialContextFactory");
+            Context ctx = new InitialContext(props);
+            service = (UserService) ctx.lookup("UserServiceImplLocal");
+            this.users = service.findAll();
+        } catch (Exception e) {
+            this.errorMessage = e.getMessage();
+            return "failure";
+        }
+
+        return "success";
+    }
+}
+----
+
+
+==  User
+
+
+[source,java]
+----
+package org.superbiz.struts;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "USER")
+public class User implements Serializable {
+    private long id;
+    private String firstName;
+    private String lastName;
+
+    public User(long id, String firstName, String lastName) {
+        super();
+        this.id = id;
+        this.firstName = firstName;
+        this.lastName = lastName;
+    }
+
+    public User() {
+    }
+
+    @Id
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+}
+----
+
+
+==  UserService
+
+
+[source,java]
+----
+package org.superbiz.struts;
+
+import java.util.List;
+
+public interface UserService {
+    public void add(User user);
+
+    public User find(int id);
+
+    public List<User> findAll();
+}
+----
+
+
+==  UserServiceImpl
+
+
+[source,java]
+----
+package org.superbiz.struts;
+
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.util.List;
+
+@Stateless
+public class UserServiceImpl implements UserService {
+
+    @PersistenceContext(unitName = "user")
+    private EntityManager manager;
+
+    public void add(User user) {
+        manager.persist(user);
+    }
+
+    public User find(int id) {
+        return manager.find(User.class, id);
+    }
+
+    public List<User> findAll() {
+        return manager.createQuery("select u from User u").getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+</persistence-unit>
+
+  -->
+</persistence>
+
+## struts.xml
+
+<struts>
+  <constant name="struts.devMode" value="true"></constant>
+  <package name="default" namespace="/" extends="struts-default">
+    <action name="addUserForm" class="org.superbiz.struts.AddUserForm">
+      <result>/addUserForm.jsp</result>
+    </action>
+    <action name="addUser" class="org.superbiz.struts.AddUser">
+      <result name="success">/addedUser.jsp</result>
+      <result name='failure'>/addUserForm.jsp</result>
+    </action>
+    <action name="findUserForm" class="org.superbiz.struts.FindUserForm">
+      <result>/findUserForm.jsp</result>
+    </action>
+    <action name="findUser" class="org.superbiz.struts.FindUser">
+      <result name='success'>/displayUser.jsp</result>
+      <result name='failure'>/findUserForm.jsp</result>
+    </action>
+    <action name="listAllUsers" class="org.superbiz.struts.ListAllUsers">
+      <result>/displayUsers.jsp</result>
+    </action>
+
+  </package>
+</struts>
+
+## decorators.xml
+
+<decorators defaultdir="/decorators">
+  <decorator name="main" page="layout.jsp">
+    <pattern>/*</pattern>
+  </decorator>
+</decorators>
+
+## web.xml
+
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         version="2.5">
+  <display-name>Learn EJB3 and Struts2</display-name>
+  <filter>
+    <filter-name>struts2</filter-name>
+    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
+    <init-param>
+      <param-name>actionPackages</param-name>
+      <param-value>com.lq</param-value>
+    </init-param>
+  </filter>
+  <filter>
+    <filter-name>struts-cleanup</filter-name>
+    <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
+  </filter>
+  <filter>
+    <filter-name>sitemesh</filter-name>
+    <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>struts-cleanup</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+  <filter-mapping>
+    <filter-name>sitemesh</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+  <filter-mapping>
+    <filter-name>struts2</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+  <welcome-file-list>
+    <welcome-file>index.jsp</welcome-file>
+  </welcome-file-list>
+  <jsp-config>
+    <jsp-property-group>
+      <description>JSP configuration of all the JSP's</description>
+      <url-pattern>*.jsp</url-pattern>
+      <include-prelude>/prelude.jspf</include-prelude>
+    </jsp-property-group>
+  </jsp-config>
+</web-app>
+
+
diff --git a/src/main/jbake/content/examples/telephone-stateful.adoc b/src/main/jbake/content/examples/telephone-stateful.adoc
new file mode 100755
index 0000000..ac38237
--- /dev/null
+++ b/src/main/jbake/content/examples/telephone-stateful.adoc
@@ -0,0 +1,248 @@
+= Telephone Stateful
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example telephone-stateful can be browsed at https://github.com/apache/tomee/tree/master/examples/telephone-stateful
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+This example shows how to use OpenEJB's remoting capabilities in an embedded scenario.
+
+The basic recipe is the same for a standard embedded scenario but with these added
+ingreditents:
+
+  * `openejb.embedded.remotable` property
+  * `openejb-ejbd` jar
+
+While creating the InitialContext, pass in the openejb.embedded.remotable property with
+the value of "true".  When this is seen by the LocalInitialContextFactory, it will boot up
+the Server ServiceManager in the VM which will in turn look for ServerServices in the
+classpath.
+
+Provided you have the openejb-ejbd jar in your classpath along with it's dependencies
+(openejb-server, openejb-client, openejb-core), then those services will be brought online
+and remote clients will be able to connect into your vm and invoke beans.
+
+If you want to add more ServerServices such as the http version of the ejbd protocol you'd
+simply add the openejb-httpejbd jar to your classpath.  A number of ServerServices are
+available currently:
+
+  * openejb-ejbd
+  * openejb-http
+  * openejb-telnet
+  * openejb-derbynet
+  * openejb-hsql
+  * openejb-activemq
+
+
+==  Telephone
+
+
+[source,java]
+----
+package org.superbiz.telephone;
+
+public interface Telephone {
+
+    void speak(String words);
+
+    String listen();
+}
+----
+
+
+==  TelephoneBean
+
+
+[source,java]
+----
+package org.superbiz.telephone;
+
+import javax.ejb.Remote;
+import javax.ejb.Stateful;
+import java.util.ArrayList;
+import java.util.List;
+
+@Remote
+@Stateful
+public class TelephoneBean implements Telephone {
+
+    private static final String[] answers = {
+            "How nice.",
+            "Oh, of course.",
+            "Interesting.",
+            "Really?",
+            "No.",
+            "Definitely.",
+            "I wondered about that.",
+            "Good idea.",
+            "You don't say!",
+    };
+
+    private List<String> conversation = new ArrayList<String>();
+
+    public void speak(String words) {
+        conversation.add(words);
+    }
+
+    public String listen() {
+        if (conversation.size() == 0) {
+            return "Nothing has been said";
+        }
+
+        String lastThingSaid = conversation.get(conversation.size() - 1);
+        return answers[Math.abs(lastThingSaid.hashCode()) % answers.length];
+    }
+}
+----
+
+
+==  TelephoneTest
+
+
+[source,java]
+----
+package org.superbiz.telephone;
+
+import junit.framework.TestCase;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class TelephoneTest extends TestCase {
+
+    protected void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.embedded.remotable", "true");
+        // Uncomment these properties to change the defaults
+        //properties.setProperty("ejbd.port", "4202");
+        //properties.setProperty("ejbd.bind", "localhost");
+        //properties.setProperty("ejbd.threads", "200");
+        //properties.setProperty("ejbd.disabled", "false");
+        //properties.setProperty("ejbd.only_from", "127.0.0.1,192.168.1.1");
+
+        new InitialContext(properties);
+    }
+
+    /**
+     * Lookup the Telephone bean via its remote interface but using the LocalInitialContextFactory
+     *
+     * @throws Exception
+     */
+    public void testTalkOverLocalNetwork() throws Exception {
+
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        InitialContext localContext = new InitialContext(properties);
+
+        Telephone telephone = (Telephone) localContext.lookup("TelephoneBeanRemote");
+
+        telephone.speak("Did you know I am talking directly through the embedded container?");
+
+        assertEquals("Interesting.", telephone.listen());
+
+
+        telephone.speak("Yep, I'm using the bean's remote interface but since the ejb container is embedded " +
+                "in the same vm I'm just using the LocalInitialContextFactory.");
+
+        assertEquals("Really?", telephone.listen());
+
+
+        telephone.speak("Right, you really only have to use the RemoteInitialContextFactory if you're in a different vm.");
+
+        assertEquals("Oh, of course.", telephone.listen());
+    }
+
+    /**
+     * Lookup the Telephone bean via its remote interface using the RemoteInitialContextFactory
+     *
+     * @throws Exception
+     */
+    public void testTalkOverRemoteNetwork() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
+        properties.setProperty(Context.PROVIDER_URL, "ejbd://localhost:4201");
+        InitialContext remoteContext = new InitialContext(properties);
+
+        Telephone telephone = (Telephone) remoteContext.lookup("TelephoneBeanRemote");
+
+        telephone.speak("Is this a local call?");
+
+        assertEquals("No.", telephone.listen());
+
+
+        telephone.speak("This would be a lot cooler if I was connecting from another VM then, huh?");
+
+        assertEquals("I wondered about that.", telephone.listen());
+
+
+        telephone.speak("I suppose I should hangup and call back over the LocalInitialContextFactory.");
+
+        assertEquals("Good idea.", telephone.listen());
+
+
+        telephone.speak("I'll remember this though in case I ever have to call you accross a network.");
+
+        assertEquals("Definitely.", telephone.listen());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.telephone.TelephoneTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/telephone-stateful
+INFO - openejb.base = /Users/dblevins/examples/telephone-stateful
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/telephone-stateful/target/classes
+INFO - Beginning load: /Users/dblevins/examples/telephone-stateful/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/telephone-stateful/classpath.ear
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean TelephoneBean: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Enterprise application "/Users/dblevins/examples/telephone-stateful/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/telephone-stateful/classpath.ear
+INFO - Jndi(name=TelephoneBeanRemote) --> Ejb(deployment-id=TelephoneBean)
+INFO - Jndi(name=global/classpath.ear/telephone-stateful/TelephoneBean!org.superbiz.telephone.Telephone) --> Ejb(deployment-id=TelephoneBean)
+INFO - Jndi(name=global/classpath.ear/telephone-stateful/TelephoneBean) --> Ejb(deployment-id=TelephoneBean)
+INFO - Created Ejb(deployment-id=TelephoneBean, ejb-name=TelephoneBean, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=TelephoneBean, ejb-name=TelephoneBean, container=Default Stateful Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/telephone-stateful/classpath.ear)
+INFO - Initializing network services
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Initializing network services
+  ** Starting Services **
+  NAME                 IP              PORT  
+  admin thread         127.0.0.1       4200  
+  ejbd                 127.0.0.1       4201  
+  ejbd                 127.0.0.1       4203  
+-------
+Ready!
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.448 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/testcase-injection.adoc b/src/main/jbake/content/examples/testcase-injection.adoc
new file mode 100755
index 0000000..bc6e704
--- /dev/null
+++ b/src/main/jbake/content/examples/testcase-injection.adoc
@@ -0,0 +1,240 @@
+= Testcase Injection
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testcase-injection can be browsed at https://github.com/apache/tomee/tree/master/examples/testcase-injection
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.testinjection;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.testinjection;
+
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+import static javax.ejb.TransactionAttributeType.MANDATORY;
+
+//START SNIPPET: code
+@Stateful
+@TransactionAttribute(MANDATORY)
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.testinjection.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.testinjection;
+
+import junit.framework.TestCase;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.transaction.UserTransaction;
+import java.util.List;
+import java.util.Properties;
+
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @Resource
+    private UserTransaction userTransaction;
+
+    @PersistenceContext
+    private EntityManager entityManager;
+
+    public void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void test() throws Exception {
+
+        userTransaction.begin();
+
+        try {
+            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                movies.deleteMovie(movie);
+            }
+
+            assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+        } finally {
+            userTransaction.commit();
+        }
+
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.testinjection.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testcase-injection
+INFO - openejb.base = /Users/dblevins/examples/testcase-injection
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/testcase-injection/target/classes
+INFO - Beginning load: /Users/dblevins/examples/testcase-injection/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/testcase-injection
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.testinjection.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testcase-injection" loaded.
+INFO - Assembling app: /Users/dblevins/examples/testcase-injection
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 408ms
+INFO - Jndi(name="java:global/testcase-injection/Movies!org.superbiz.testinjection.Movies")
+INFO - Jndi(name="java:global/testcase-injection/Movies")
+INFO - Jndi(name="java:global/EjbModule1583515396/org.superbiz.testinjection.MoviesTest!org.superbiz.testinjection.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1583515396/org.superbiz.testinjection.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.testinjection.MoviesTest, ejb-name=org.superbiz.testinjection.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.testinjection.MoviesTest, ejb-name=org.superbiz.testinjection.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/testcase-injection)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.24 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/testing-security-2.adoc b/src/main/jbake/content/examples/testing-security-2.adoc
new file mode 100755
index 0000000..c8a2491
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security-2.adoc
@@ -0,0 +1,306 @@
+= Testing Security 2
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security-2 can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-security-2
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+//START SNIPPET: code
+
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    @RolesAllowed({"Employee", "Manager"})
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @RolesAllowed({"Manager"})
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @PermitAll
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.secure.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MovieTest
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import junit.framework.TestCase;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.List;
+import java.util.Properties;
+
+//START SNIPPET: code
+public class MovieTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    protected void setUp() throws Exception {
+
+        // Uncomment this line to set the login/logout functionality on Debug
+        //System.setProperty("log4j.category.OpenEJB.security", "debug");
+
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void testAsManager() throws Exception {
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        p.put(Context.SECURITY_PRINCIPAL, "jane");
+        p.put(Context.SECURITY_CREDENTIALS, "waterfall");
+
+        InitialContext context = new InitialContext(p);
+
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+            movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                movies.deleteMovie(movie);
+            }
+
+            assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+        } finally {
+            context.close();
+        }
+    }
+
+    public void testAsEmployee() throws Exception {
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        p.put(Context.SECURITY_PRINCIPAL, "joe");
+        p.put(Context.SECURITY_CREDENTIALS, "cool");
+
+        InitialContext context = new InitialContext(p);
+
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+            movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                try {
+                    movies.deleteMovie(movie);
+                    fail("Employees should not be allowed to delete");
+                } catch (EJBAccessException e) {
+                    // Good, Employees cannot delete things
+                }
+            }
+
+            // The list should still be three movies long
+            assertEquals("Movies.getMovies()", 3, movies.getMovies().size());
+        } finally {
+            context.close();
+        }
+    }
+
+    public void testUnauthenticated() throws Exception {
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            fail("Unauthenticated users should not be able to add movies");
+        } catch (EJBAccessException e) {
+            // Good, guests cannot add things
+        }
+
+        try {
+            movies.deleteMovie(null);
+            fail("Unauthenticated users should not be allowed to delete");
+        } catch (EJBAccessException e) {
+            // Good, Unauthenticated users cannot delete things
+        }
+
+        try {
+            // Read access should be allowed
+
+            List<Movie> list = movies.getMovies();
+        } catch (EJBAccessException e) {
+            fail("Read access should be allowed");
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.secure.MovieTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testing-security-2
+INFO - openejb.base = /Users/dblevins/examples/testing-security-2
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-2/target/classes
+INFO - Beginning load: /Users/dblevins/examples/testing-security-2/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/testing-security-2
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testing-security-2" loaded.
+INFO - Assembling app: /Users/dblevins/examples/testing-security-2
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 413ms
+INFO - Jndi(name="java:global/testing-security-2/Movies!org.superbiz.injection.secure.Movies")
+INFO - Jndi(name="java:global/testing-security-2/Movies")
+INFO - Jndi(name="java:global/EjbModule1634151355/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest")
+INFO - Jndi(name="java:global/EjbModule1634151355/org.superbiz.injection.secure.MovieTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/testing-security-2)
+INFO - Logging in
+INFO - Logging out
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+INFO - Logging in
+INFO - Logging out
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.546 sec
+
+Results :
+
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/testing-security-3.adoc b/src/main/jbake/content/examples/testing-security-3.adoc
new file mode 100755
index 0000000..7a1fdbe
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security-3.adoc
@@ -0,0 +1,381 @@
+= Testing Security 3
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security-3 can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-security-3
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+//START SNIPPET: code
+
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    @RolesAllowed({"Employee", "Manager"})
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @RolesAllowed({"Manager"})
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @PermitAll
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  MyLoginProvider
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import org.apache.openejb.core.security.jaas.LoginProvider;
+
+import javax.security.auth.login.FailedLoginException;
+import java.util.Arrays;
+import java.util.List;
+
+public class MyLoginProvider implements LoginProvider {
+
+
+    @Override
+    public List<String> authenticate(String user, String password) throws FailedLoginException {
+        if ("paul".equals(user) && "michelle".equals(password)) {
+            return Arrays.asList("Manager", "rockstar", "beatle");
+        }
+
+        if ("eddie".equals(user) && "jump".equals(password)) {
+            return Arrays.asList("Employee", "rockstar", "vanhalen");
+        }
+
+        throw new FailedLoginException("Bad user or password!");
+    }
+}
+----
+
+
+==  org.apache.openejb.core.security.jaas.LoginProvider
+
+    org.superbiz.injection.secure.MyLoginProvider
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.secure.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MovieTest
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import junit.framework.TestCase;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.util.List;
+import java.util.Properties;
+
+public class MovieTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    private Context getContext(String user, String pass) throws NamingException {
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        p.setProperty("openejb.authentication.realmName", "ServiceProviderLogin");
+        p.put(Context.SECURITY_PRINCIPAL, user);
+        p.put(Context.SECURITY_CREDENTIALS, pass);
+
+        return new InitialContext(p);
+    }
+
+    protected void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void testAsManager() throws Exception {
+        final Context context = getContext("paul", "michelle");
+
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+            movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                movies.deleteMovie(movie);
+            }
+
+            assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+        } finally {
+            context.close();
+        }
+    }
+
+    public void testAsEmployee() throws Exception {
+        final Context context = getContext("eddie", "jump");
+
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+            movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                try {
+                    movies.deleteMovie(movie);
+                    fail("Employees should not be allowed to delete");
+                } catch (EJBAccessException e) {
+                    // Good, Employees cannot delete things
+                }
+            }
+
+            // The list should still be three movies long
+            assertEquals("Movies.getMovies()", 3, movies.getMovies().size());
+        } finally {
+            context.close();
+        }
+    }
+
+    public void testUnauthenticated() throws Exception {
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            fail("Unauthenticated users should not be able to add movies");
+        } catch (EJBAccessException e) {
+            // Good, guests cannot add things
+        }
+
+        try {
+            movies.deleteMovie(null);
+            fail("Unauthenticated users should not be allowed to delete");
+        } catch (EJBAccessException e) {
+            // Good, Unauthenticated users cannot delete things
+        }
+
+        try {
+            // Read access should be allowed
+
+            List<Movie> list = movies.getMovies();
+
+        } catch (EJBAccessException e) {
+            fail("Read access should be allowed");
+        }
+
+    }
+
+    public void testLoginFailure() throws NamingException {
+        try {
+            getContext("eddie", "panama");
+            fail("supposed to have a login failure here");
+        } catch (javax.naming.AuthenticationException e) {
+            //expected
+        }
+
+        try {
+            getContext("jimmy", "foxylady");
+            fail("supposed to have a login failure here");
+        } catch (javax.naming.AuthenticationException e) {
+            //expected
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.secure.MovieTest
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Fri Jul 20 08:42:53 EDT 2012
+INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 4.1.0
+INFO - Build date: 20120720
+INFO - Build time: 08:33
+INFO - ********************************************************************************
+INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3
+INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@38ee6681
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Creating Resource(id=movieDatabase)
+INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3/target/classes
+INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3
+INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Creating Container(id=Default Stateful Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Creating Resource(id=movieDatabaseNonJta)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3" loaded.
+INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3
+SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested installation of a ClassFileTransformer which requires a JavaAgent.  See http://tomee.apache.org/3.0/javaagent.html
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 268ms
+INFO - Jndi(name="java:global/testing-security-3/Movies!org.superbiz.injection.secure.Movies")
+INFO - Jndi(name="java:global/testing-security-3/Movies")
+INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@38ee6681
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 170 ms.
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3)
+20-Jul-2012 8:42:55 AM null openjpa.Runtime
+INFO: Starting OpenJPA 2.2.0
+20-Jul-2012 8:42:56 AM null openjpa.jdbc.JDBC
+INFO: Using dictionary class "org.apache.openjpa.jdbc.sql.HSQLDictionary" (HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).
+20-Jul-2012 8:42:57 AM null openjpa.Enhance
+INFO: Creating subclass and redefining methods for "[class org.superbiz.injection.secure.Movie]". This means that your application will be less efficient than it would if you ran the OpenJPA enhancer.
+INFO - Logging in
+INFO - Logging out
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+INFO - Logging in
+INFO - Logging out
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.069 sec
+
+Results :
+
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
diff --git a/src/main/jbake/content/examples/testing-security-4.adoc b/src/main/jbake/content/examples/testing-security-4.adoc
new file mode 100755
index 0000000..69af878
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security-4.adoc
@@ -0,0 +1,9 @@
+= testing-security-4
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security-4 can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-security-4
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/testing-security-meta.adoc b/src/main/jbake/content/examples/testing-security-meta.adoc
new file mode 100755
index 0000000..5f234d6
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security-meta.adoc
@@ -0,0 +1,517 @@
+= Testing Security Meta
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security-meta can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-security-meta
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  AddPermission
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.RolesAllowed;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface AddPermission {
+    public static interface $ {
+
+        @AddPermission
+        @RolesAllowed({"Employee", "Manager"})
+        public void method();
+    }
+}
+----
+
+
+==  DeletePermission
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.RolesAllowed;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface DeletePermission {
+    public static interface $ {
+
+        @DeletePermission
+        @RolesAllowed("Manager")
+        public void method();
+    }
+}
+----
+
+
+==  Metatype
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.ANNOTATION_TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Metatype {
+}
+----
+
+
+==  MovieUnit
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target({ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+
+@PersistenceContext(name = "movie-unit", unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+public @interface MovieUnit {
+}
+----
+
+
+==  ReadPermission
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.PermitAll;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface ReadPermission {
+    public static interface $ {
+
+        @ReadPermission
+        @PermitAll
+        @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+        public void method();
+    }
+}
+----
+
+
+==  RunAsEmployee
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.RunAs;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+
+@RunAs("Employee")
+public @interface RunAsEmployee {
+}
+----
+
+
+==  RunAsManager
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.RunAs;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+
+@RunAs("Manager")
+public @interface RunAsManager {
+}
+----
+
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+//START SNIPPET: code
+
+import org.superbiz.injection.secure.api.AddPermission;
+import org.superbiz.injection.secure.api.DeletePermission;
+import org.superbiz.injection.secure.api.MovieUnit;
+import org.superbiz.injection.secure.api.ReadPermission;
+
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @MovieUnit
+    private EntityManager entityManager;
+
+    @AddPermission
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @DeletePermission
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @ReadPermission
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.secure.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MovieTest
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import junit.framework.TestCase;
+import org.superbiz.injection.secure.api.RunAsEmployee;
+import org.superbiz.injection.secure.api.RunAsManager;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.ejb.Stateless;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+//START SNIPPET: code
+
+public class MovieTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB(beanName = "ManagerBean")
+    private Caller manager;
+
+    @EJB(beanName = "EmployeeBean")
+    private Caller employee;
+
+    protected void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void testAsManager() throws Exception {
+        manager.call(new Callable() {
+            public Object call() throws Exception {
+
+                movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+                movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+                movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+                List<Movie> list = movies.getMovies();
+                assertEquals("List.size()", 3, list.size());
+
+                for (Movie movie : list) {
+                    movies.deleteMovie(movie);
+                }
+
+                assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+                return null;
+            }
+        });
+    }
+
+    public void testAsEmployee() throws Exception {
+        employee.call(new Callable() {
+            public Object call() throws Exception {
+
+                movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+                movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+                movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+                List<Movie> list = movies.getMovies();
+                assertEquals("List.size()", 3, list.size());
+
+                for (Movie movie : list) {
+                    try {
+                        movies.deleteMovie(movie);
+                        fail("Employees should not be allowed to delete");
+                    } catch (EJBAccessException e) {
+                        // Good, Employees cannot delete things
+                    }
+                }
+
+                // The list should still be three movies long
+                assertEquals("Movies.getMovies()", 3, movies.getMovies().size());
+                return null;
+            }
+        });
+    }
+
+    public void testUnauthenticated() throws Exception {
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            fail("Unauthenticated users should not be able to add movies");
+        } catch (EJBAccessException e) {
+            // Good, guests cannot add things
+        }
+
+        try {
+            movies.deleteMovie(null);
+            fail("Unauthenticated users should not be allowed to delete");
+        } catch (EJBAccessException e) {
+            // Good, Unauthenticated users cannot delete things
+        }
+
+        try {
+            // Read access should be allowed
+
+            List<Movie> list = movies.getMovies();
+        } catch (EJBAccessException e) {
+            fail("Read access should be allowed");
+        }
+    }
+
+    public interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the desired security scope.
+     */
+
+    @Stateless
+    @RunAsManager
+    public static class ManagerBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+
+    @Stateless
+    @RunAsEmployee
+    public static class EmployeeBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.secure.MovieTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testing-security-meta
+INFO - openejb.base = /Users/dblevins/examples/testing-security-meta
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-meta/target/classes
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security-meta/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/testing-security-meta/target/classes
+INFO - Beginning load: /Users/dblevins/examples/testing-security-meta/target/test-classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/testing-security-meta
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean ManagerBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testing-security-meta" loaded.
+INFO - Assembling app: /Users/dblevins/examples/testing-security-meta
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 419ms
+INFO - Jndi(name="java:global/testing-security-meta/Movies!org.superbiz.injection.secure.Movies")
+INFO - Jndi(name="java:global/testing-security-meta/Movies")
+INFO - Jndi(name="java:global/testing-security-meta/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller")
+INFO - Jndi(name="java:global/testing-security-meta/ManagerBean")
+INFO - Jndi(name="java:global/testing-security-meta/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller")
+INFO - Jndi(name="java:global/testing-security-meta/EmployeeBean")
+INFO - Jndi(name="java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest")
+INFO - Jndi(name="java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/testing-security-meta)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.754 sec
+
+Results :
+
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/testing-security.adoc b/src/main/jbake/content/examples/testing-security.adoc
new file mode 100755
index 0000000..657ea8b
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security.adoc
@@ -0,0 +1,336 @@
+= Testing Security
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-security
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+//START SNIPPET: code
+
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    @RolesAllowed({"Employee", "Manager"})
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @RolesAllowed({"Manager"})
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @PermitAll
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.secure.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MovieTest
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import junit.framework.TestCase;
+
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.ejb.Stateless;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+//START SNIPPET: code
+
+public class MovieTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB(name = "ManagerBean")
+    private Caller manager;
+
+    @EJB(name = "EmployeeBean")
+    private Caller employee;
+
+    protected void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void testAsManager() throws Exception {
+        manager.call(new Callable() {
+            public Object call() throws Exception {
+
+                movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+                movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+                movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+                List<Movie> list = movies.getMovies();
+                assertEquals("List.size()", 3, list.size());
+
+                for (Movie movie : list) {
+                    movies.deleteMovie(movie);
+                }
+
+                assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+                return null;
+            }
+        });
+    }
+
+    public void testAsEmployee() throws Exception {
+        employee.call(new Callable() {
+            public Object call() throws Exception {
+
+                movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+                movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+                movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+                List<Movie> list = movies.getMovies();
+                assertEquals("List.size()", 3, list.size());
+
+                for (Movie movie : list) {
+                    try {
+                        movies.deleteMovie(movie);
+                        fail("Employees should not be allowed to delete");
+                    } catch (EJBAccessException e) {
+                        // Good, Employees cannot delete things
+                    }
+                }
+
+                // The list should still be three movies long
+                assertEquals("Movies.getMovies()", 3, movies.getMovies().size());
+                return null;
+            }
+        });
+    }
+
+    public void testUnauthenticated() throws Exception {
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            fail("Unauthenticated users should not be able to add movies");
+        } catch (EJBAccessException e) {
+            // Good, guests cannot add things
+        }
+
+        try {
+            movies.deleteMovie(null);
+            fail("Unauthenticated users should not be allowed to delete");
+        } catch (EJBAccessException e) {
+            // Good, Unauthenticated users cannot delete things
+        }
+
+        try {
+            // Read access should be allowed
+
+            List<Movie> list = movies.getMovies();
+        } catch (EJBAccessException e) {
+            fail("Read access should be allowed");
+        }
+    }
+
+
+    public static interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the desired security scope.
+     */
+
+    @Stateless
+    @RunAs("Manager")
+    public static class ManagerBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+
+    @Stateless
+    @RunAs("Employee")
+    public static class EmployeeBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.secure.MovieTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testing-security
+INFO - openejb.base = /Users/dblevins/examples/testing-security
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security/target/classes
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-security/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/testing-security/target/classes
+INFO - Beginning load: /Users/dblevins/examples/testing-security/target/test-classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/testing-security
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean ManagerBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testing-security" loaded.
+INFO - Assembling app: /Users/dblevins/examples/testing-security
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 405ms
+INFO - Jndi(name="java:global/testing-security/Movies!org.superbiz.injection.secure.Movies")
+INFO - Jndi(name="java:global/testing-security/Movies")
+INFO - Jndi(name="java:global/testing-security/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller")
+INFO - Jndi(name="java:global/testing-security/ManagerBean")
+INFO - Jndi(name="java:global/testing-security/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller")
+INFO - Jndi(name="java:global/testing-security/EmployeeBean")
+INFO - Jndi(name="java:global/EjbModule26174809/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest")
+INFO - Jndi(name="java:global/EjbModule26174809/org.superbiz.injection.secure.MovieTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/testing-security)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.574 sec
+
+Results :
+
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/testing-transactions-bmt.adoc b/src/main/jbake/content/examples/testing-transactions-bmt.adoc
new file mode 100755
index 0000000..010f218
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-transactions-bmt.adoc
@@ -0,0 +1,280 @@
+= Testing Transactions BMT
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-transactions-bmt can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-transactions-bmt
+
+
+Shows how to begin, commit and rollback transactions using a UserTransaction via a Stateful Bean.
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+@Entity
+public class Movie {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public Movie() {
+
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.annotation.Resource;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionManagement;
+import javax.ejb.TransactionManagementType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import javax.transaction.UserTransaction;
+
+@Stateful(name = "Movies")
+@TransactionManagement(TransactionManagementType.BEAN)
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    @Resource
+    private UserTransaction userTransaction;
+
+    public void addMovie(Movie movie) throws Exception {
+        try {
+            userTransaction.begin();
+            entityManager.persist(movie);
+
+            //For some dummy reason, this db can have only 5 titles. :O)
+            if (countMovies() > 5) {
+                userTransaction.rollback();
+            } else {
+                userTransaction.commit();
+            }
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            userTransaction.rollback();
+        }
+    }
+
+    public Long countMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT COUNT(m) FROM Movie m");
+        return Long.class.cast(query.getSingleResult());
+    }
+}
+----
+
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.tx.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.Properties;
+
+public class MoviesTest {
+
+    @EJB
+    private Movies movies;
+
+    @Test
+    public void testMe() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+
+        movies.addMovie(new Movie("Asif Kapadia", "Senna", 2010));
+        movies.addMovie(new Movie("José Padilha", "Tropa de Elite", 2007));
+        movies.addMovie(new Movie("Andy Wachowski/Lana Wachowski", "The Matrix", 1999));
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        Assert.assertEquals(5L, movies.countMovies().longValue());
+    }
+
+}
+----
+
+
+
+=  Running
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.tx.MoviesTest
+INFO - ********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Sat Jul 21 16:39:28 EDT 2012
+INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 4.1.0
+INFO - Build date: 20120721
+INFO - Build time: 12:06
+INFO - ********************************************************************************
+INFO - openejb.home = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt
+INFO - openejb.base = /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Creating Resource(id=movieDatabase)
+INFO - Beginning load: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt/target/classes
+INFO - Configuring enterprise application: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt
+WARNING - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Creating Container(id=Default Stateful Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Creating Resource(id=movieDatabaseNonJta)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt" loaded.
+INFO - Assembling app: /home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt
+SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested installation of a ClassFileTransformer which requires a JavaAgent.  See http://tomee.apache.org/3.0/javaagent.html
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 399ms
+INFO - Jndi(name="java:global/testing-transactions-bmt/Movies!org.superbiz.injection.tx.Movies")
+INFO - Jndi(name="java:global/testing-transactions-bmt/Movies")
+INFO - Existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 157 ms.
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Deployed Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt)
+INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@709a1411
+21-Jul-2012 4:39:32 PM null openjpa.Runtime
+INFO: Starting OpenJPA 2.2.0
+21-Jul-2012 4:39:32 PM null openjpa.jdbc.JDBC
+INFO: Using dictionary class "org.apache.openjpa.jdbc.sql.HSQLDictionary" (HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).
+21-Jul-2012 4:39:33 PM null openjpa.Enhance
+INFO: Creating subclass and redefining methods for "[class org.superbiz.injection.tx.Movie]". This means that your application will be less efficient than it would if you ran the OpenJPA enhancer.
+INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@709a1411
+INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70
+INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70
+INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@627b5c
+INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@627b5c
+INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2f031310
+INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@2f031310
+INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da
+INFO - Committing user transaction org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da
+INFO - Started user transaction org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4
+INFO - Rolling back user transaction org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.471 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
diff --git a/src/main/jbake/content/examples/testing-transactions.adoc b/src/main/jbake/content/examples/testing-transactions.adoc
new file mode 100755
index 0000000..a32ce8f
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-transactions.adoc
@@ -0,0 +1,279 @@
+= Testing Transactions
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-transactions can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-transactions
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+import static javax.ejb.TransactionAttributeType.MANDATORY;
+
+//START SNIPPET: code
+@Stateful(name = "Movies")
+@TransactionAttribute(MANDATORY)
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.tx.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import junit.framework.TestCase;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
+
+/**
+ * See the transaction-rollback example as it does the same thing
+ * via UserTransaction and shows more techniques for rollback 
+ */
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB
+    private Caller transactionalCaller;
+
+    protected void setUp() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    private void doWork() throws Exception {
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+
+    public void testWithTransaction() throws Exception {
+        transactionalCaller.call(new Callable() {
+            public Object call() throws Exception {
+                doWork();
+                return null;
+            }
+        });
+    }
+
+    public void testWithoutTransaction() throws Exception {
+        try {
+            doWork();
+            fail("The Movies bean should be using TransactionAttributeType.MANDATORY");
+        } catch (javax.ejb.EJBTransactionRequiredException e) {
+            // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want
+        }
+    }
+
+
+    public static interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the scope of a container controlled transaction.
+     */
+    @Stateless
+    @TransactionAttribute(REQUIRES_NEW)
+    public static class TransactionBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.tx.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testing-transactions
+INFO - openejb.base = /Users/dblevins/examples/testing-transactions
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-transactions/target/classes
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/testing-transactions/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/testing-transactions/target/classes
+INFO - Beginning load: /Users/dblevins/examples/testing-transactions/target/test-classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/testing-transactions
+INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testing-transactions" loaded.
+INFO - Assembling app: /Users/dblevins/examples/testing-transactions
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 406ms
+INFO - Jndi(name="java:global/testing-transactions/Movies!org.superbiz.injection.tx.Movies")
+INFO - Jndi(name="java:global/testing-transactions/Movies")
+INFO - Jndi(name="java:global/testing-transactions/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller")
+INFO - Jndi(name="java:global/testing-transactions/TransactionBean")
+INFO - Jndi(name="java:global/EjbModule2036741132/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule2036741132/org.superbiz.injection.tx.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/testing-transactions)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow reinitialization
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.403 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/tomee-jersey-eclipselink.adoc b/src/main/jbake/content/examples/tomee-jersey-eclipselink.adoc
new file mode 100755
index 0000000..adb73b0
--- /dev/null
+++ b/src/main/jbake/content/examples/tomee-jersey-eclipselink.adoc
@@ -0,0 +1,9 @@
+= tomee-jersey-eclipselink
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example tomee-jersey-eclipselink can be browsed at https://github.com/apache/tomee/tree/master/examples/tomee-jersey-eclipselink
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/examples/transaction-rollback.adoc b/src/main/jbake/content/examples/transaction-rollback.adoc
new file mode 100755
index 0000000..6b8088d
--- /dev/null
+++ b/src/main/jbake/content/examples/transaction-rollback.adoc
@@ -0,0 +1,584 @@
+= Transaction Rollback
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example transaction-rollback can be browsed at https://github.com/apache/tomee/tree/master/examples/transaction-rollback
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  CustomRuntimeException
+
+
+[source,java]
+----
+package org.superbiz.txrollback;
+
+import javax.ejb.ApplicationException;
+
+@ApplicationException
+public class CustomRuntimeException extends RuntimeException {
+
+    public CustomRuntimeException() {
+    }
+
+    public CustomRuntimeException(String s) {
+        super(s);
+    }
+
+    public CustomRuntimeException(String s, Throwable throwable) {
+        super(s, throwable);
+    }
+
+    public CustomRuntimeException(Throwable throwable) {
+        super(throwable);
+    }
+}
+----
+
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.txrollback;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity(name = "Movie")
+public class Movie {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.txrollback;
+
+import javax.annotation.Resource;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+//START SNIPPET: code
+@Stateless
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    @Resource
+    private SessionContext sessionContext;
+
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+
+    public void callSetRollbackOnly() {
+        sessionContext.setRollbackOnly();
+    }
+
+    public void throwUncheckedException() {
+        throw new RuntimeException("Throwing unchecked exceptions will rollback a transaction");
+    }
+
+    public void throwApplicationException() {
+        throw new CustomRuntimeException("This is marked @ApplicationException, so no TX rollback");
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.testinjection.MoviesTest.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.txrollback;
+
+import junit.framework.TestCase;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.transaction.RollbackException;
+import javax.transaction.UserTransaction;
+import java.util.List;
+import java.util.Properties;
+
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @Resource
+    private UserTransaction userTransaction;
+
+    @PersistenceContext
+    private EntityManager entityManager;
+
+    private EJBContainer ejbContainer;
+
+    public void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb" + System.currentTimeMillis());
+
+        ejbContainer = EJBContainer.createEJBContainer(p);
+        ejbContainer.getContext().bind("inject", this);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        ejbContainer.close();
+    }
+
+    /**
+     * Standard successful transaction scenario.  The data created inside
+     * the transaction is visible after the transaction completes.
+     * <p/>
+     * Note that UserTransaction is only usable by Bean-Managed Transaction
+     * beans, which can be specified with @TransactionManagement(BEAN)
+     */
+    public void testCommit() throws Exception {
+
+        userTransaction.begin();
+
+        try {
+            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+        } finally {
+            userTransaction.commit();
+        }
+
+        // Transaction was committed
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+    }
+
+    /**
+     * Standard transaction rollback scenario.  The data created inside
+     * the transaction is not visible after the transaction completes.
+     */
+    public void testUserTransactionRollback() throws Exception {
+
+        userTransaction.begin();
+
+        try {
+            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+        } finally {
+            userTransaction.rollback();
+        }
+
+        // Transaction was rolled back
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 0, list.size());
+    }
+
+    /**
+     * Transaction is marked for rollback inside the bean via
+     * calling the javax.ejb.SessionContext.setRollbackOnly() method
+     * <p/>
+     * This is the cleanest way to make a transaction rollback.
+     */
+    public void testMarkedRollback() throws Exception {
+
+        userTransaction.begin();
+
+        try {
+            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            movies.callSetRollbackOnly();
+        } finally {
+            try {
+                userTransaction.commit();
+                fail("A RollbackException should have been thrown");
+            } catch (RollbackException e) {
+                // Pass
+            }
+        }
+
+        // Transaction was rolled back
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 0, list.size());
+    }
+
+    /**
+     * Throwing an unchecked exception from a bean will cause
+     * the container to call setRollbackOnly() and discard the
+     * bean instance from further use without calling any @PreDestroy
+     * methods on the bean instance.
+     */
+    public void testExceptionBasedRollback() throws Exception {
+
+        userTransaction.begin();
+
+        try {
+            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            try {
+                movies.throwUncheckedException();
+            } catch (RuntimeException e) {
+                // Good, this will cause the tx to rollback
+            }
+        } finally {
+            try {
+                userTransaction.commit();
+                fail("A RollbackException should have been thrown");
+            } catch (RollbackException e) {
+                // Pass
+            }
+        }
+
+        // Transaction was rolled back
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 0, list.size());
+    }
+
+    /**
+     * It is still possible to throw unchecked (runtime) exceptions
+     * without dooming the transaction by marking the exception
+     * with the @ApplicationException annotation or in the ejb-jar.xml
+     * deployment descriptor via the <application-exception> tag
+     */
+    public void testCommit2() throws Exception {
+
+        userTransaction.begin();
+
+        try {
+            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            try {
+                movies.throwApplicationException();
+            } catch (RuntimeException e) {
+                // This will *not* cause the tx to rollback
+                // because it is marked as an @ApplicationException
+            }
+        } finally {
+            userTransaction.commit();
+        }
+
+        // Transaction was committed
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.txrollback.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/transaction-rollback
+INFO - openejb.base = /Users/dblevins/examples/transaction-rollback
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/transaction-rollback" loaded.
+INFO - Assembling app: /Users/dblevins/examples/transaction-rollback
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 412ms
+INFO - Jndi(name="java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies")
+INFO - Jndi(name="java:global/transaction-rollback/Movies")
+INFO - Jndi(name="java:global/EjbModule1718375554/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1718375554/org.superbiz.txrollback.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback
+INFO - Closing DataSource: movieDatabase
+INFO - Closing DataSource: movieDatabaseNonJta
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/transaction-rollback
+INFO - openejb.base = /Users/dblevins/examples/transaction-rollback
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/transaction-rollback" loaded.
+INFO - Assembling app: /Users/dblevins/examples/transaction-rollback
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms
+INFO - Jndi(name="java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies")
+INFO - Jndi(name="java:global/transaction-rollback/Movies")
+INFO - Jndi(name="java:global/EjbModule935567559/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule935567559/org.superbiz.txrollback.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback
+INFO - Closing DataSource: movieDatabase
+INFO - Closing DataSource: movieDatabaseNonJta
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/transaction-rollback
+INFO - openejb.base = /Users/dblevins/examples/transaction-rollback
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/transaction-rollback" loaded.
+INFO - Assembling app: /Users/dblevins/examples/transaction-rollback
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms
+INFO - Jndi(name="java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies")
+INFO - Jndi(name="java:global/transaction-rollback/Movies")
+INFO - Jndi(name="java:global/EjbModule1961109485/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1961109485/org.superbiz.txrollback.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback
+INFO - Closing DataSource: movieDatabase
+INFO - Closing DataSource: movieDatabaseNonJta
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/transaction-rollback
+INFO - openejb.base = /Users/dblevins/examples/transaction-rollback
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/transaction-rollback" loaded.
+INFO - Assembling app: /Users/dblevins/examples/transaction-rollback
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 5ms
+INFO - Jndi(name="java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies")
+INFO - Jndi(name="java:global/transaction-rollback/Movies")
+INFO - Jndi(name="java:global/EjbModule419651577/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule419651577/org.superbiz.txrollback.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback
+INFO - Closing DataSource: movieDatabase
+INFO - Closing DataSource: movieDatabaseNonJta
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/transaction-rollback
+INFO - openejb.base = /Users/dblevins/examples/transaction-rollback
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Beginning load: /Users/dblevins/examples/transaction-rollback/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/transaction-rollback
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.txrollback.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/transaction-rollback" loaded.
+INFO - Assembling app: /Users/dblevins/examples/transaction-rollback
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 4ms
+INFO - Jndi(name="java:global/transaction-rollback/Movies!org.superbiz.txrollback.Movies")
+INFO - Jndi(name="java:global/transaction-rollback/Movies")
+INFO - Jndi(name="java:global/EjbModule15169271/org.superbiz.txrollback.MoviesTest!org.superbiz.txrollback.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule15169271/org.superbiz.txrollback.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.txrollback.MoviesTest, ejb-name=org.superbiz.txrollback.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/transaction-rollback)
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+WARN - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@39172e08; ignoring.
+INFO - Undeploying app: /Users/dblevins/examples/transaction-rollback
+INFO - Closing DataSource: movieDatabase
+INFO - Closing DataSource: movieDatabaseNonJta
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.586 sec
+
+Results :
+
+Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/troubleshooting.adoc b/src/main/jbake/content/examples/troubleshooting.adoc
new file mode 100755
index 0000000..681f79f
--- /dev/null
+++ b/src/main/jbake/content/examples/troubleshooting.adoc
@@ -0,0 +1,480 @@
+= Troubleshooting
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example troubleshooting can be browsed at https://github.com/apache/tomee/tree/master/examples/troubleshooting
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.troubleshooting;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity(name = "Movie")
+public class Movie {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.troubleshooting;
+
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+//START SNIPPET: code
+@Stateless
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.testinjection.MoviesTest.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.troubleshooting;
+
+import junit.framework.TestCase;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.transaction.UserTransaction;
+import java.util.List;
+import java.util.Properties;
+
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @Resource
+    private UserTransaction userTransaction;
+
+    @PersistenceContext
+    private EntityManager entityManager;
+
+    public void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+
+        // These two debug levels will get you the basic log information
+        // on the deployment of applications. Good first step in troubleshooting.
+        p.put("log4j.category.OpenEJB.startup", "debug");
+        p.put("log4j.category.OpenEJB.startup.config", "debug");
+
+        // This log category is a good way to see what "openejb.foo" options
+        // and flags are available and what their default values are
+        p.put("log4j.category.OpenEJB.options", "debug");
+
+        // This will output the full configuration of all containers
+        // resources and other openejb.xml configurable items.  A good
+        // way to see what the final configuration looks like after all
+        // overriding has been applied.
+        p.put("log4j.category.OpenEJB.startup.service", "debug");
+
+        // Will output a generated ejb-jar.xml file that represents
+        // 100% of the annotations used in the code.  This is a great
+        // way to figure out how to do something in xml for overriding
+        // or just to "see" all your application meta-data in one place.
+        // Look for log lines like this "Dumping Generated ejb-jar.xml to"
+        p.put("openejb.descriptors.output", "true");
+
+        // Setting the validation output level to verbose results in
+        // validation messages that attempt to provide explanations
+        // and information on what steps can be taken to remedy failures.
+        // A great tool for those learning EJB.
+        p.put("openejb.validation.output.level", "verbose");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void test() throws Exception {
+
+        userTransaction.begin();
+
+        try {
+            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
+            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+        } finally {
+            userTransaction.commit();
+        }
+
+        // Transaction was committed
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.troubleshooting.MoviesTest
+2011-10-29 11:50:19,482 - DEBUG - Using default 'openejb.nobanner=true'
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+2011-10-29 11:50:19,482 - INFO  - openejb.home = /Users/dblevins/examples/troubleshooting
+2011-10-29 11:50:19,482 - INFO  - openejb.base = /Users/dblevins/examples/troubleshooting
+2011-10-29 11:50:19,483 - DEBUG - Using default 'openejb.assembler=org.apache.openejb.assembler.classic.Assembler'
+2011-10-29 11:50:19,483 - DEBUG - Instantiating assembler class org.apache.openejb.assembler.classic.Assembler
+2011-10-29 11:50:19,517 - DEBUG - Using default 'openejb.jndiname.failoncollision=true'
+2011-10-29 11:50:19,517 - INFO  - Using 'javax.ejb.embeddable.EJBContainer=true'
+2011-10-29 11:50:19,520 - DEBUG - Using default 'openejb.configurator=org.apache.openejb.config.ConfigurationFactory'
+2011-10-29 11:50:19,588 - DEBUG - Using default 'openejb.validation.skip=false'
+2011-10-29 11:50:19,589 - DEBUG - Using default 'openejb.deploymentId.format={ejbName}'
+2011-10-29 11:50:19,589 - DEBUG - Using default 'openejb.debuggable-vm-hackery=false'
+2011-10-29 11:50:19,589 - DEBUG - Using default 'openejb.webservices.enabled=true'
+2011-10-29 11:50:19,594 - DEBUG - Using default 'openejb.vendor.config=ALL'  Possible values are: geronimo, glassfish, jboss, weblogic or NONE or ALL
+2011-10-29 11:50:19,612 - DEBUG - Using default 'openejb.provider.default=org.apache.openejb.embedded'
+2011-10-29 11:50:19,658 - INFO  - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+2011-10-29 11:50:19,662 - INFO  - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+2011-10-29 11:50:19,665 - INFO  - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+2011-10-29 11:50:19,665 - DEBUG - Override [JdbcDriver=org.hsqldb.jdbcDriver]
+2011-10-29 11:50:19,666 - DEBUG - Using default 'openejb.deployments.classpath=false'
+2011-10-29 11:50:19,666 - INFO  - Creating TransactionManager(id=Default Transaction Manager)
+2011-10-29 11:50:19,676 - DEBUG - defaultTransactionTimeoutSeconds=600
+2011-10-29 11:50:19,676 - DEBUG - TxRecovery=false
+2011-10-29 11:50:19,676 - DEBUG - bufferSizeKb=32
+2011-10-29 11:50:19,676 - DEBUG - checksumEnabled=true
+2011-10-29 11:50:19,676 - DEBUG - adler32Checksum=true
+2011-10-29 11:50:19,676 - DEBUG - flushSleepTimeMilliseconds=50
+2011-10-29 11:50:19,676 - DEBUG - logFileDir=txlog
+2011-10-29 11:50:19,676 - DEBUG - logFileExt=log
+2011-10-29 11:50:19,676 - DEBUG - logFileName=howl
+2011-10-29 11:50:19,676 - DEBUG - maxBlocksPerFile=-1
+2011-10-29 11:50:19,677 - DEBUG - maxBuffers=0
+2011-10-29 11:50:19,677 - DEBUG - maxLogFiles=2
+2011-10-29 11:50:19,677 - DEBUG - minBuffers=4
+2011-10-29 11:50:19,677 - DEBUG - threadsWaitingForceThreshold=-1
+2011-10-29 11:50:19,724 - DEBUG - createService.success
+2011-10-29 11:50:19,724 - INFO  - Creating SecurityService(id=Default Security Service)
+2011-10-29 11:50:19,724 - DEBUG - DefaultUser=guest
+2011-10-29 11:50:19,750 - DEBUG - createService.success
+2011-10-29 11:50:19,750 - INFO  - Creating Resource(id=movieDatabase)
+2011-10-29 11:50:19,750 - DEBUG - Definition=
+2011-10-29 11:50:19,750 - DEBUG - JtaManaged=true
+2011-10-29 11:50:19,750 - DEBUG - JdbcDriver=org.hsqldb.jdbcDriver
+2011-10-29 11:50:19,750 - DEBUG - JdbcUrl=jdbc:hsqldb:mem:hsqldb
+2011-10-29 11:50:19,750 - DEBUG - UserName=sa
+2011-10-29 11:50:19,750 - DEBUG - Password=
+2011-10-29 11:50:19,750 - DEBUG - PasswordCipher=PlainText
+2011-10-29 11:50:19,750 - DEBUG - ConnectionProperties=
+2011-10-29 11:50:19,750 - DEBUG - DefaultAutoCommit=true
+2011-10-29 11:50:19,750 - DEBUG - InitialSize=0
+2011-10-29 11:50:19,750 - DEBUG - MaxActive=20
+2011-10-29 11:50:19,750 - DEBUG - MaxIdle=20
+2011-10-29 11:50:19,751 - DEBUG - MinIdle=0
+2011-10-29 11:50:19,751 - DEBUG - MaxWait=-1
+2011-10-29 11:50:19,751 - DEBUG - TestOnBorrow=true
+2011-10-29 11:50:19,751 - DEBUG - TestOnReturn=false
+2011-10-29 11:50:19,751 - DEBUG - TestWhileIdle=false
+2011-10-29 11:50:19,751 - DEBUG - TimeBetweenEvictionRunsMillis=-1
+2011-10-29 11:50:19,751 - DEBUG - NumTestsPerEvictionRun=3
+2011-10-29 11:50:19,751 - DEBUG - MinEvictableIdleTimeMillis=1800000
+2011-10-29 11:50:19,751 - DEBUG - PoolPreparedStatements=false
+2011-10-29 11:50:19,751 - DEBUG - MaxOpenPreparedStatements=0
+2011-10-29 11:50:19,751 - DEBUG - AccessToUnderlyingConnectionAllowed=false
+2011-10-29 11:50:19,781 - DEBUG - createService.success
+2011-10-29 11:50:19,783 - DEBUG - Containers        : 0
+2011-10-29 11:50:19,785 - DEBUG - Deployments       : 0
+2011-10-29 11:50:19,785 - DEBUG - SecurityService   : org.apache.openejb.core.security.SecurityServiceImpl
+2011-10-29 11:50:19,786 - DEBUG - TransactionManager: org.apache.geronimo.transaction.manager.GeronimoTransactionManager
+2011-10-29 11:50:19,786 - DEBUG - OpenEJB Container System ready.
+2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.validation.skip=false'
+2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.deploymentId.format={ejbName}'
+2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.debuggable-vm-hackery=false'
+2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.webservices.enabled=true'
+2011-10-29 11:50:19,786 - DEBUG - Using default 'openejb.vendor.config=ALL'  Possible values are: geronimo, glassfish, jboss, weblogic or NONE or ALL
+2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.include=.*'
+2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.exclude='
+2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.require.descriptor=client'  Possible values are: ejb, client or NONE or ALL
+2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.filter.descriptors=false'
+2011-10-29 11:50:19,789 - DEBUG - Using default 'openejb.deployments.classpath.filter.systemapps=true'
+2011-10-29 11:50:19,828 - DEBUG - Inspecting classpath for applications: 5 urls.
+2011-10-29 11:50:19,846 - INFO  - Found EjbModule in classpath: /Users/dblevins/examples/troubleshooting/target/classes
+2011-10-29 11:50:20,011 - DEBUG - URLs after filtering: 55
+2011-10-29 11:50:20,011 - DEBUG - Annotations path: file:/Users/dblevins/examples/troubleshooting/target/classes/
+2011-10-29 11:50:20,011 - DEBUG - Annotations path: jar:file:/Users/dblevins/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.2/surefire-api-2.7.2.jar!/
+2011-10-29 11:50:20,011 - DEBUG - Annotations path: jar:file:/Users/dblevins/.m2/repository/org/apache/openejb/mbean-annotation-api/4.0.0-beta-1/mbean-annotation-api-4.0.0-beta-1.jar!/
+2011-10-29 11:50:20,011 - DEBUG - Annotations path: jar:file:/Users/dblevins/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.2/surefire-booter-2.7.2.jar!/
+2011-10-29 11:50:20,011 - DEBUG - Annotations path: file:/Users/dblevins/examples/troubleshooting/target/test-classes/
+2011-10-29 11:50:20,011 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar!/
+2011-10-29 11:50:20,011 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/bval/bval-core/0.3-incubating/bval-core-0.3-incubating.jar!/
+2011-10-29 11:50:20,011 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-management_1.1_spec/1.0.1/geronimo-j2ee-management_1.1_spec-1.0.1.jar!/
+2011-10-29 11:50:20,011 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/activemq-core/5.4.2/activemq-core-5.4.2.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-bundleutils/3.8/xbean-bundleutils-3.8.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/net/sf/scannotation/scannotation/1.0.2/scannotation-1.0.2.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openejb/javaee-api/6.0-2/javaee-api-6.0-2.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-beanutils/commons-beanutils-core/1.8.3/commons-beanutils-core-1.8.3.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-web/1.1.1/openwebbeans-web-1.1.1.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/com/ibm/icu/icu4j/4.0.1/icu4j-4.0.1.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-asm-shaded/3.8/xbean-asm-shaded-3.8.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-ee-common/1.1.1/openwebbeans-ee-common-1.1.1.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-pool/commons-pool/1.5.6/commons-pool-1.5.6.jar!/
+2011-10-29 11:50:20,012 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-impl/1.1.1/openwebbeans-impl-1.1.1.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-finder-shaded/3.8/xbean-finder-shaded-3.8.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-connector_1.6_spec/1.0/geronimo-j2ee-connector_1.6_spec-1.0.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/kahadb/5.4.2/kahadb-5.4.2.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/hsqldb/hsqldb/1.8.0.10/hsqldb-1.8.0.10.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/components/geronimo-connector/3.1.1/geronimo-connector-3.1.1.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/activemq-ra/5.4.2/activemq-ra-5.4.2.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/net/sourceforge/serp/serp/1.13.1/serp-1.13.1.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar!/
+2011-10-29 11:50:20,013 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/activeio-core/3.1.2/activeio-core-3.1.2.jar!/
+2011-10-29 11:50:20,014 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/quartz-scheduler/quartz/1.8.5/quartz-1.8.5.jar!/
+2011-10-29 11:50:20,014 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-ee/1.1.1/openwebbeans-ee-1.1.1.jar!/
+2011-10-29 11:50:20,014 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar!/
+2011-10-29 11:50:20,014 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-spi/1.1.1/openwebbeans-spi-1.1.1.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/codehaus/swizzle/swizzle-stream/1.0.2/swizzle-stream-1.0.2.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openjpa/openjpa/2.1.1/openjpa-2.1.1.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-naming/3.8/xbean-naming-3.8.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/components/geronimo-transaction/3.1.1/geronimo-transaction-3.1.1.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/javassist/javassist/3.12.0.GA/javassist-3.12.0.GA.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/objectweb/howl/howl/1.0.1-1/howl-1.0.1-1.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/xbean/xbean-reflect/3.8/xbean-reflect-3.8.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/openwebbeans/openwebbeans-ejb/1.1.1/openwebbeans-ejb-1.1.1.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar!/
+2011-10-29 11:50:20,016 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-net/commons-net/2.0/commons-net-2.0.jar!/
+2011-10-29 11:50:20,017 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/activemq/protobuf/activemq-protobuf/1.1/activemq-protobuf-1.1.jar!/
+2011-10-29 11:50:20,017 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.jar!/
+2011-10-29 11:50:20,017 - DEBUG - Descriptors path: jar:file:/Users/dblevins/.m2/repository/org/apache/geronimo/javamail/geronimo-javamail_1.4_mail/1.8.2/geronimo-javamail_1.4_mail-1.8.2.jar!/
+2011-10-29 11:50:20,017 - DEBUG - Searched 5 classpath urls in 80 milliseconds.  Average 16 milliseconds per url.
+2011-10-29 11:50:20,023 - INFO  - Beginning load: /Users/dblevins/examples/troubleshooting/target/classes
+2011-10-29 11:50:20,028 - DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL
+2011-10-29 11:50:20,030 - DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL
+2011-10-29 11:50:20,099 - INFO  - Configuring enterprise application: /Users/dblevins/examples/troubleshooting
+2011-10-29 11:50:20,099 - DEBUG - No ejb-jar.xml found assuming annotated beans present: /Users/dblevins/examples/troubleshooting, module: troubleshooting
+2011-10-29 11:50:20,213 - DEBUG - Searching for annotated application exceptions (see OPENEJB-980)
+2011-10-29 11:50:20,214 - DEBUG - Searching for annotated application exceptions (see OPENEJB-980)
+2011-10-29 11:50:20,248 - WARN  - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+2011-10-29 11:50:20,249 - DEBUG - looking for annotated MBeans in 
+2011-10-29 11:50:20,249 - DEBUG - registered 0 annotated MBeans in 
+2011-10-29 11:50:20,278 - INFO  - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+2011-10-29 11:50:20,278 - INFO  - Auto-creating a container for bean Movies: Container(type=STATELESS, id=Default Stateless Container)
+2011-10-29 11:50:20,278 - INFO  - Creating Container(id=Default Stateless Container)
+2011-10-29 11:50:20,279 - DEBUG - AccessTimeout=30 seconds
+2011-10-29 11:50:20,279 - DEBUG - MaxSize=10
+2011-10-29 11:50:20,279 - DEBUG - MinSize=0
+2011-10-29 11:50:20,279 - DEBUG - StrictPooling=true
+2011-10-29 11:50:20,279 - DEBUG - MaxAge=0 hours
+2011-10-29 11:50:20,279 - DEBUG - ReplaceAged=true
+2011-10-29 11:50:20,279 - DEBUG - ReplaceFlushed=false
+2011-10-29 11:50:20,279 - DEBUG - MaxAgeOffset=-1
+2011-10-29 11:50:20,279 - DEBUG - IdleTimeout=0 minutes
+2011-10-29 11:50:20,279 - DEBUG - GarbageCollection=false
+2011-10-29 11:50:20,279 - DEBUG - SweepInterval=5 minutes
+2011-10-29 11:50:20,279 - DEBUG - CallbackThreads=5
+2011-10-29 11:50:20,279 - DEBUG - CloseTimeout=5 minutes
+2011-10-29 11:50:20,295 - DEBUG - createService.success
+2011-10-29 11:50:20,296 - INFO  - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+2011-10-29 11:50:20,296 - INFO  - Auto-creating a container for bean org.superbiz.troubleshooting.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+2011-10-29 11:50:20,296 - INFO  - Creating Container(id=Default Managed Container)
+2011-10-29 11:50:20,310 - DEBUG - createService.success
+2011-10-29 11:50:20,310 - INFO  - Configuring PersistenceUnit(name=movie-unit)
+2011-10-29 11:50:20,310 - DEBUG - raw <jta-data-source>movieDatabase</jta-datasource>
+2011-10-29 11:50:20,310 - DEBUG - raw <non-jta-data-source>movieDatabaseUnmanaged</non-jta-datasource>
+2011-10-29 11:50:20,310 - DEBUG - normalized <jta-data-source>movieDatabase</jta-datasource>
+2011-10-29 11:50:20,310 - DEBUG - normalized <non-jta-data-source>movieDatabaseUnmanaged</non-jta-datasource>
+2011-10-29 11:50:20,310 - DEBUG - Available DataSources
+2011-10-29 11:50:20,310 - DEBUG - DataSource(name=movieDatabase, JtaManaged=true)
+2011-10-29 11:50:20,311 - INFO  - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+2011-10-29 11:50:20,311 - INFO  - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+2011-10-29 11:50:20,311 - INFO  - Creating Resource(id=movieDatabaseNonJta)
+2011-10-29 11:50:20,311 - DEBUG - Definition=
+2011-10-29 11:50:20,312 - DEBUG - JtaManaged=false
+2011-10-29 11:50:20,312 - DEBUG - JdbcDriver=org.hsqldb.jdbcDriver
+2011-10-29 11:50:20,312 - DEBUG - JdbcUrl=jdbc:hsqldb:mem:hsqldb
+2011-10-29 11:50:20,312 - DEBUG - UserName=sa
+2011-10-29 11:50:20,312 - DEBUG - Password=
+2011-10-29 11:50:20,312 - DEBUG - PasswordCipher=PlainText
+2011-10-29 11:50:20,312 - DEBUG - ConnectionProperties=
+2011-10-29 11:50:20,312 - DEBUG - DefaultAutoCommit=true
+2011-10-29 11:50:20,312 - DEBUG - InitialSize=0
+2011-10-29 11:50:20,312 - DEBUG - MaxActive=20
+2011-10-29 11:50:20,312 - DEBUG - MaxIdle=20
+2011-10-29 11:50:20,312 - DEBUG - MinIdle=0
+2011-10-29 11:50:20,312 - DEBUG - MaxWait=-1
+2011-10-29 11:50:20,312 - DEBUG - TestOnBorrow=true
+2011-10-29 11:50:20,312 - DEBUG - TestOnReturn=false
+2011-10-29 11:50:20,312 - DEBUG - TestWhileIdle=false
+2011-10-29 11:50:20,312 - DEBUG - TimeBetweenEvictionRunsMillis=-1
+2011-10-29 11:50:20,312 - DEBUG - NumTestsPerEvictionRun=3
+2011-10-29 11:50:20,312 - DEBUG - MinEvictableIdleTimeMillis=1800000
+2011-10-29 11:50:20,312 - DEBUG - PoolPreparedStatements=false
+2011-10-29 11:50:20,312 - DEBUG - MaxOpenPreparedStatements=0
+2011-10-29 11:50:20,312 - DEBUG - AccessToUnderlyingConnectionAllowed=false
+2011-10-29 11:50:20,316 - DEBUG - createService.success
+2011-10-29 11:50:20,316 - INFO  - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+2011-10-29 11:50:20,317 - INFO  - Using 'openejb.descriptors.output=true'
+2011-10-29 11:50:20,317 - INFO  - Using 'openejb.descriptors.output=true'
+2011-10-29 11:50:20,642 - INFO  - Dumping Generated ejb-jar.xml to: /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T/ejb-jar-4107959830671443055troubleshooting.xml
+2011-10-29 11:50:20,657 - INFO  - Dumping Generated openejb-jar.xml to: /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T/openejb-jar-5369342778223971127troubleshooting.xml
+2011-10-29 11:50:20,657 - INFO  - Using 'openejb.descriptors.output=true'
+2011-10-29 11:50:20,658 - INFO  - Dumping Generated ejb-jar.xml to: /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T/ejb-jar-5569422837673302173EjbModule837053032.xml
+2011-10-29 11:50:20,659 - INFO  - Dumping Generated openejb-jar.xml to: /var/folders/bd/f9ntqy1m8xj_fs006s6crtjh0000gn/T/openejb-jar-560959152015048895EjbModule837053032.xml
+2011-10-29 11:50:20,665 - DEBUG - Adding persistence-unit movie-unit property openjpa.Log=log4j
+2011-10-29 11:50:20,665 - DEBUG - Adjusting PersistenceUnit(name=movie-unit) property to openjpa.RuntimeUnenhancedClasses=supported
+2011-10-29 11:50:20,674 - INFO  - Using 'openejb.validation.output.level=VERBOSE'
+2011-10-29 11:50:20,674 - INFO  - Enterprise application "/Users/dblevins/examples/troubleshooting" loaded.
+2011-10-29 11:50:20,674 - INFO  - Assembling app: /Users/dblevins/examples/troubleshooting
+2011-10-29 11:50:20,678 - DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL
+2011-10-29 11:50:20,757 - DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL
+2011-10-29 11:50:21,137 - INFO  - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 407ms
+2011-10-29 11:50:21,138 - DEBUG - openjpa.jdbc.SynchronizeMappings=buildSchema(ForeignKeys=true)
+2011-10-29 11:50:21,138 - DEBUG - openjpa.Log=log4j
+2011-10-29 11:50:21,138 - DEBUG - openjpa.RuntimeUnenhancedClasses=supported
+2011-10-29 11:50:21,262 - DEBUG - Using default 'openejb.jndiname.strategy.class=org.apache.openejb.assembler.classic.JndiBuilder$TemplatedStrategy'
+2011-10-29 11:50:21,262 - DEBUG - Using default 'openejb.jndiname.format={deploymentId}{interfaceType.annotationName}'
+2011-10-29 11:50:21,267 - DEBUG - Using default 'openejb.localcopy=true'
+2011-10-29 11:50:21,270 - DEBUG - bound ejb at name: openejb/Deployment/Movies/org.superbiz.troubleshooting.Movies!LocalBean, ref: org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference@2569a1c5
+2011-10-29 11:50:21,270 - DEBUG - bound ejb at name: openejb/Deployment/Movies/org.superbiz.troubleshooting.Movies!LocalBeanHome, ref: org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference@2569a1c5
+2011-10-29 11:50:21,272 - INFO  - Jndi(name="java:global/troubleshooting/Movies!org.superbiz.troubleshooting.Movies")
+2011-10-29 11:50:21,272 - INFO  - Jndi(name="java:global/troubleshooting/Movies")
+2011-10-29 11:50:21,277 - DEBUG - Using default 'openejb.jndiname.strategy.class=org.apache.openejb.assembler.classic.JndiBuilder$TemplatedStrategy'
+2011-10-29 11:50:21,277 - DEBUG - Using default 'openejb.jndiname.format={deploymentId}{interfaceType.annotationName}'
+2011-10-29 11:50:21,277 - DEBUG - bound ejb at name: openejb/Deployment/org.superbiz.troubleshooting.MoviesTest/org.superbiz.troubleshooting.MoviesTest!LocalBean, ref: org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference@3f78e13f
+2011-10-29 11:50:21,277 - DEBUG - bound ejb at name: openejb/Deployment/org.superbiz.troubleshooting.MoviesTest/org.superbiz.troubleshooting.MoviesTest!LocalBeanHome, ref: org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference@3f78e13f
+2011-10-29 11:50:21,277 - INFO  - Jndi(name="java:global/EjbModule837053032/org.superbiz.troubleshooting.MoviesTest!org.superbiz.troubleshooting.MoviesTest")
+2011-10-29 11:50:21,277 - INFO  - Jndi(name="java:global/EjbModule837053032/org.superbiz.troubleshooting.MoviesTest")
+2011-10-29 11:50:21,291 - DEBUG - CDI Service not installed: org.apache.webbeans.spi.ConversationService
+2011-10-29 11:50:21,399 - INFO  - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+2011-10-29 11:50:21,428 - INFO  - Created Ejb(deployment-id=org.superbiz.troubleshooting.MoviesTest, ejb-name=org.superbiz.troubleshooting.MoviesTest, container=Default Managed Container)
+2011-10-29 11:50:21,463 - INFO  - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateless Container)
+2011-10-29 11:50:21,463 - INFO  - Started Ejb(deployment-id=org.superbiz.troubleshooting.MoviesTest, ejb-name=org.superbiz.troubleshooting.MoviesTest, container=Default Managed Container)
+2011-10-29 11:50:21,463 - INFO  - Deployed Application(path=/Users/dblevins/examples/troubleshooting)
+2011-10-29 11:50:21,728 - WARN  - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@27a8c4e7; ignoring.
+2011-10-29 11:50:21,834 - WARN  - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@27a8c4e7; ignoring.
+2011-10-29 11:50:21,846 - WARN  - The class "org.superbiz.testinjection.MoviesTest.Movie" listed in the openjpa.MetaDataFactory configuration property could not be loaded by sun.misc.Launcher$AppClassLoader@27a8c4e7; ignoring.
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.642 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/webservice-attachments.adoc b/src/main/jbake/content/examples/webservice-attachments.adoc
new file mode 100755
index 0000000..384f3fd
--- /dev/null
+++ b/src/main/jbake/content/examples/webservice-attachments.adoc
@@ -0,0 +1,234 @@
+= Webservice Attachments
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-attachments can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-attachments
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  AttachmentImpl
+
+
+[source,java]
+----
+package org.superbiz.attachment;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.soap.SOAPBinding;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * This is an EJB 3 style pojo stateless session bean
+ * Every stateless session bean implementation must be annotated
+ * using the annotation @Stateless
+ * This EJB has a single interface: {@link AttachmentWs} a webservice interface.
+ */
+@Stateless
+@WebService(
+        portName = "AttachmentPort",
+        serviceName = "AttachmentWsService",
+        targetNamespace = "http://superbiz.org/wsdl",
+        endpointInterface = "org.superbiz.attachment.AttachmentWs")
+@BindingType(value = SOAPBinding.SOAP12HTTP_MTOM_BINDING)
+public class AttachmentImpl implements AttachmentWs {
+
+    public String stringFromBytes(byte[] data) {
+        return new String(data);
+    }
+
+    public String stringFromDataSource(DataSource source) {
+
+        try {
+            InputStream inStr = source.getInputStream();
+            int size = inStr.available();
+            byte[] data = new byte[size];
+            inStr.read(data);
+            inStr.close();
+            return new String(data);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
+    public String stringFromDataHandler(DataHandler handler) {
+
+        try {
+            return (String) handler.getContent();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+}
+----
+
+
+==  AttachmentWs
+
+
+[source,java]
+----
+package org.superbiz.attachment;
+
+import javax.activation.DataHandler;
+import javax.jws.WebService;
+
+/**
+ * This is an EJB 3 webservice interface to send attachments throughout SAOP.
+ */
+@WebService(targetNamespace = "http://superbiz.org/wsdl")
+public interface AttachmentWs {
+
+    public String stringFromBytes(byte[] data);
+
+    // Not working at the moment with SUN saaj provider and CXF
+    //public String stringFromDataSource(DataSource source);
+
+    public String stringFromDataHandler(DataHandler handler);
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar/>
+----
+
+
+==  AttachmentTest
+
+
+[source,java]
+----
+package org.superbiz.attachment;
+
+import junit.framework.TestCase;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.mail.util.ByteArrayDataSource;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Service;
+import javax.xml.ws.soap.SOAPBinding;
+import java.net.URL;
+import java.util.Properties;
+
+public class AttachmentTest extends TestCase {
+
+    //START SNIPPET: setup	
+    private InitialContext initialContext;
+
+    protected void setUp() throws Exception {
+
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.embedded.remotable", "true");
+
+        initialContext = new InitialContext(properties);
+    }
+    //END SNIPPET: setup    
+
+    /**
+     * Create a webservice client using wsdl url
+     *
+     * @throws Exception
+     */
+    //START SNIPPET: webservice
+    public void testAttachmentViaWsInterface() throws Exception {
+        Service service = Service.create(
+                new URL("http://127.0.0.1:4204/AttachmentImpl?wsdl"),
+                new QName("http://superbiz.org/wsdl", "AttachmentWsService"));
+        assertNotNull(service);
+
+        AttachmentWs ws = service.getPort(AttachmentWs.class);
+
+        // retrieve the SOAPBinding
+        SOAPBinding binding = (SOAPBinding) ((BindingProvider) ws).getBinding();
+        binding.setMTOMEnabled(true);
+
+        String request = "tsztelak@gmail.com";
+
+        // Byte array
+        String response = ws.stringFromBytes(request.getBytes());
+        assertEquals(request, response);
+
+        // Data Source
+        DataSource source = new ByteArrayDataSource(request.getBytes(), "text/plain; charset=UTF-8");
+
+        // not yet supported !
+//        response = ws.stringFromDataSource(source);
+//        assertEquals(request, response);
+
+        // Data Handler
+        response = ws.stringFromDataHandler(new DataHandler(source));
+        assertEquals(request, response);
+    }
+    //END SNIPPET: webservice
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.attachment.AttachmentTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/webservice-attachments
+INFO - openejb.base = /Users/dblevins/examples/webservice-attachments
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-attachments/target/classes
+INFO - Beginning load: /Users/dblevins/examples/webservice-attachments/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-attachments/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean AttachmentImpl: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/webservice-attachments/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/webservice-attachments/classpath.ear
+INFO - Created Ejb(deployment-id=AttachmentImpl, ejb-name=AttachmentImpl, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=AttachmentImpl, ejb-name=AttachmentImpl, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/webservice-attachments/classpath.ear)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Creating ServerService(id=cxf)
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Initializing network services
+  ** Starting Services **
+  NAME                 IP              PORT  
+  httpejbd             127.0.0.1       4204  
+  admin thread         127.0.0.1       4200  
+  ejbd                 127.0.0.1       4201  
+  ejbd                 127.0.0.1       4203  
+-------
+Ready!
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.034 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/webservice-handlerchain.adoc b/src/main/jbake/content/examples/webservice-handlerchain.adoc
new file mode 100755
index 0000000..67ac69a
--- /dev/null
+++ b/src/main/jbake/content/examples/webservice-handlerchain.adoc
@@ -0,0 +1,409 @@
+= @WebService handlers with @HandlerChain
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-handlerchain can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-handlerchain
+
+
+In this example we see a basic JAX-WS `@WebService` component use a handler chain to alter incoming and outgoing SOAP messages.  SOAP Handlers are similar to Servlet Filters or EJB/CDI Interceptors.
+
+At high level, the steps involved are:
+
+ 1. Create handler(s) implementing `javax.xml.ws.handler.soap.SOAPHandler`
+ 1. Declare and order them in an xml file via `<handler-chain>`
+ 1. Associate the xml file with an `@WebService` component via `@HandlerChain`
+
+==  The @HandlerChain
+
+First we'll start with our plain `@WebService` bean, called `Calculator`, which is annotated with `@HandlerChain`
+
+
+[source,java]
+----
+@Singleton
+@WebService(
+        portName = "CalculatorPort",
+        serviceName = "CalculatorService",
+        targetNamespace = "http://superbiz.org/wsdl",
+        endpointInterface = "org.superbiz.calculator.wsh.CalculatorWs")
+@HandlerChain(file = "handlers.xml")
+public class Calculator implements CalculatorWs {
+
+    public int sum(int add1, int add2) {
+        return add1 + add2;
+    }
+
+    public int multiply(int mul1, int mul2) {
+        return mul1 * mul2;
+    }
+}
+----
+
+
+Here we see `@HandlerChain` pointing to a file called `handlers.xml`.  This file could be called anything, but it must be in the same jar and java package as our `Calculator` component.
+
+==  The &lt;handler-chains> file
+
+Our `Calculator` service is in the package `org.superbiz.calculator.wsh`, which means our handler chain xml file must be at `org/superbiz/calculator/wsh/handlers.xml` in our application's classpath or the file will not be found and no handlers will be used.
+
+In maven we achieve this by putting our handlers.xml in `src/main/resources` like so:
+
+ - `src/main/resources/org/superbiz/calculator/wsh/handlers.xml`
+
+With this file we declare and **order** our handler chain.
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
+  <handler-chain>
+    <handler>
+      <handler-name>org.superbiz.calculator.wsh.Inflate</handler-name>
+      <handler-class>org.superbiz.calculator.wsh.Inflate</handler-class>
+    </handler>
+    <handler>
+      <handler-name>org.superbiz.calculator.wsh.Increment</handler-name>
+      <handler-class>org.superbiz.calculator.wsh.Increment</handler-class>
+    </handler>
+  </handler-chain>
+</handler-chains>
+----
+
+
+The order as you might suspect is:
+
+ - `Inflate`
+ - `Increment`
+
+==  The SOAPHandler implementation
+
+Our `Inflate` handler has the job of monitoring *responses* to the `sum` and `multiply` operations and making them 1000 times better.  Manipulation of the message is done by walking the `SOAPBody` and editing the nodes.  The `handleMessage` method is invoked for both requests and responses, so it is important to check the `SOAPBody` before attempting to naviage the nodes.
+
+
+[source,java]
+----
+import org.w3c.dom.Node;
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+import java.util.Collections;
+import java.util.Set;
+
+public class Inflate implements SOAPHandler<SOAPMessageContext> {
+
+    public boolean handleMessage(SOAPMessageContext mc) {
+        try {
+            final SOAPMessage message = mc.getMessage();
+            final SOAPBody body = message.getSOAPBody();
+            final String localName = body.getFirstChild().getLocalName();
+
+            if ("sumResponse".equals(localName) || "multiplyResponse".equals(localName)) {
+                final Node responseNode = body.getFirstChild();
+                final Node returnNode = responseNode.getFirstChild();
+                final Node intNode = returnNode.getFirstChild();
+
+                final int value = new Integer(intNode.getNodeValue());
+                intNode.setNodeValue(Integer.toString(value * 1000));
+            }
+
+            return true;
+        } catch (SOAPException e) {
+            return false;
+        }
+    }
+
+    public Set<QName> getHeaders() {
+        return Collections.emptySet();
+    }
+
+    public void close(MessageContext mc) {
+    }
+
+    public boolean handleFault(SOAPMessageContext mc) {
+        return true;
+    }
+}
+----
+
+
+The `Increment` handler is identical in code and therefore not shown.  Instead of multiplying by 1000, it simply adds 1.
+
+==  The TestCase
+
+We use the JAX-WS API to create a Java client for our `Calculator` web service and use it to invoke both the `sum` and `multiply` operations.  Note the clever use of math to assert both the existence and order of our handlers.  If `Inflate` and `Increment` were reversed, the responses would be 11000 and 13000 respectively.
+
+
+[source,java]
+----
+public class CalculatorTest {
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty("openejb.embedded.remotable", "true");
+        EJBContainer.createEJBContainer(properties);
+    }
+
+    @Test
+    public void testCalculatorViaWsInterface() throws Exception {
+        final Service calculatorService = Service.create(
+                new URL("http://127.0.0.1:4204/Calculator?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorService"));
+
+        assertNotNull(calculatorService);
+
+        final CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);
+
+        // we expect our answers to come back 1000 times better, plus one!
+        assertEquals(10001, calculator.sum(4, 6));
+        assertEquals(12001, calculator.multiply(3, 4));
+    }
+}
+----
+
+
+==  Running the example
+
+Simply run `mvn clean install` and you should see output similar to the following:
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.calculator.wsh.CalculatorTest
+INFO - openejb.home = /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers
+INFO - openejb.base = /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Beginning load: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers/target/test-classes
+INFO - Beginning load: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers
+INFO - Auto-deploying ejb Calculator: EjbDeployment(deployment-id=Calculator)
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean Calculator: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Creating Container(id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.calculator.wsh.CalculatorTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers" loaded.
+INFO - Assembling app: /Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers
+INFO - Created Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=Calculator, ejb-name=Calculator, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/work/all/trunk/openejb/examples/webservice-handlers)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Creating ServerService(id=cxf)
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Initializing network services
+INFO -   ** Starting Services **
+INFO -   NAME                 IP              PORT
+INFO -   httpejbd             127.0.0.1       4204
+INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from class org.superbiz.calculator.wsh.CalculatorWs
+INFO - Setting the server's publish address to be http://nopath:80
+INFO - Webservice(wsdl=http://127.0.0.1:4204/Calculator, qname={http://superbiz.org/wsdl}CalculatorService) --> Ejb(id=Calculator)
+INFO -   admin thread         127.0.0.1       4200
+INFO -   ejbd                 127.0.0.1       4201
+INFO -   ejbd                 127.0.0.1       4203
+INFO - -------
+INFO - Ready!
+INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl
+INFO - Creating Service {http://superbiz.org/wsdl}CalculatorService from WSDL: http://127.0.0.1:4204/Calculator?wsdl
+INFO - Default SAAJ universe not set
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.783 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+
+==  Inspecting the messages
+
+The above would generate the following messages.
+
+===  Calculator wsdl
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+                  name="CalculatorService" targetNamespace="http://superbiz.org/wsdl"
+                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+                  xmlns:tns="http://superbiz.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <wsdl:types>
+    <xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"
+                targetNamespace="http://superbiz.org/wsdl" xmlns:tns="http://superbiz.org/wsdl"
+                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <xsd:element name="multiply" type="tns:multiply"/>
+      <xsd:complexType name="multiply">
+        <xsd:sequence>
+          <xsd:element name="arg0" type="xsd:int"/>
+          <xsd:element name="arg1" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="multiplyResponse" type="tns:multiplyResponse"/>
+      <xsd:complexType name="multiplyResponse">
+        <xsd:sequence>
+          <xsd:element name="return" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="sum" type="tns:sum"/>
+      <xsd:complexType name="sum">
+        <xsd:sequence>
+          <xsd:element name="arg0" type="xsd:int"/>
+          <xsd:element name="arg1" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="sumResponse" type="tns:sumResponse"/>
+      <xsd:complexType name="sumResponse">
+        <xsd:sequence>
+          <xsd:element name="return" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="multiplyResponse">
+    <wsdl:part element="tns:multiplyResponse" name="parameters">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="sumResponse">
+    <wsdl:part element="tns:sumResponse" name="parameters">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="sum">
+    <wsdl:part element="tns:sum" name="parameters">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="multiply">
+    <wsdl:part element="tns:multiply" name="parameters">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:portType name="CalculatorWs">
+    <wsdl:operation name="multiply">
+      <wsdl:input message="tns:multiply" name="multiply">
+      </wsdl:input>
+      <wsdl:output message="tns:multiplyResponse" name="multiplyResponse">
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="sum">
+      <wsdl:input message="tns:sum" name="sum">
+      </wsdl:input>
+      <wsdl:output message="tns:sumResponse" name="sumResponse">
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="CalculatorServiceSoapBinding" type="tns:CalculatorWs">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="multiply">
+      <soap:operation soapAction="" style="document"/>
+      <wsdl:input name="multiply">
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="multiplyResponse">
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="sum">
+      <soap:operation soapAction="" style="document"/>
+      <wsdl:input name="sum">
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="sumResponse">
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="CalculatorService">
+    <wsdl:port binding="tns:CalculatorServiceSoapBinding" name="CalculatorPort">
+      <soap:address location="http://127.0.0.1:4204/Calculator?wsdl"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
+----
+
+
+===  SOAP sum and sumResponse
+
+Request:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:sum xmlns:ns1="http://superbiz.org/wsdl">
+      <arg0>4</arg0>
+      <arg1>6</arg1>
+    </ns1:sum>
+  </soap:Body>
+</soap:Envelope>
+----
+
+
+Response:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:sumResponse xmlns:ns1="http://superbiz.org/wsdl">
+      <return>10001</return>
+    </ns1:sumResponse>
+  </soap:Body>
+</soap:Envelope>
+----
+
+
+===  SOAP multiply and multiplyResponse
+
+Request:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:multiply xmlns:ns1="http://superbiz.org/wsdl">
+      <arg0>3</arg0>
+      <arg1>4</arg1>
+    </ns1:multiply>
+  </soap:Body>
+</soap:Envelope>
+----
+
+
+Response:
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:multiplyResponse xmlns:ns1="http://superbiz.org/wsdl">
+      <return>12001</return>
+    </ns1:multiplyResponse>
+  </soap:Body>
+</soap:Envelope>
+----
+
diff --git a/src/main/jbake/content/examples/webservice-holder.adoc b/src/main/jbake/content/examples/webservice-holder.adoc
new file mode 100755
index 0000000..bb4a5f4
--- /dev/null
+++ b/src/main/jbake/content/examples/webservice-holder.adoc
@@ -0,0 +1,201 @@
+= @WebService OUT params via javax.xml.ws.Holder
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-holder can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-holder
+
+
+With SOAP it is possible to return multiple values in a single request.  This is impossible in Java as a method can only return one object.
+
+JAX-WS solves this problem with the concept of Holders.  A `javax.xml.ws.Holder` is a simple wrapper object that can be passed into the `@WebService` method as a parameter.  The application sets the value of the holder during the request and the server will send the value back as an OUT parameter.
+
+==  Using @WebParam and javax.xml.ws.Holder
+
+The `@WebParam` annotation allows us to declare the `sum` and `multiply` Holders as `WebParam.Mode.OUT` parameters.  As mentioned, these holders are simply empty buckets the application can fill in with data to have sent to the client.  The server will pass them in uninitialized.
+
+
+[source,java]
+----
+@Stateless
+@WebService(
+        portName = "CalculatorPort",
+        serviceName = "CalculatorService",
+        targetNamespace = "http://superbiz.org/wsdl",
+        endpointInterface = "org.superbiz.ws.out.CalculatorWs")
+public class Calculator implements CalculatorWs {
+
+    public void sumAndMultiply(int a, int b,
+                               @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holder<Integer> sum,
+                               @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder<Integer> multiply) {
+        sum.value = a + b;
+        multiply.value = a * b;
+    }
+}
+----
+
+
+If the Holders were specified as `WebParam.Mode.INOUT` params, then the client could use them to send data and the application as well.  The `Holder` instances would then be initialized with the data from the client request.  The application could check the data before eventually overriting it with the response values.
+
+==  The WSDL
+
+The above JAX-WS `@WebService` component results in the folliwing WSDL that will be created automatically.  Note the `sumAndMultiplyResponse` complext type returns two elements.  These match the `@WebParam` declarations and our two `Holder<Integer>` params.
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+                  name="CalculatorService"
+                  targetNamespace="http://superbiz.org/wsdl"
+                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+                  xmlns:tns="http://superbiz.org/wsdl"
+                  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <wsdl:types>
+    <xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"
+                targetNamespace="http://superbiz.org/wsdl"
+                xmlns:tns="http://superbiz.org/wsdl"
+                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+      <xsd:element name="sumAndMultiply" type="tns:sumAndMultiply"/>
+      <xsd:complexType name="sumAndMultiply">
+        <xsd:sequence>
+          <xsd:element name="arg0" type="xsd:int"/>
+          <xsd:element name="arg1" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="sumAndMultiplyResponse" type="tns:sumAndMultiplyResponse"/>
+      <xsd:complexType name="sumAndMultiplyResponse">
+        <xsd:sequence>
+          <xsd:element minOccurs="0" name="sum" type="xsd:int"/>
+          <xsd:element minOccurs="0" name="multiply" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="sumAndMultiplyResponse">
+    <wsdl:part element="tns:sumAndMultiplyResponse" name="parameters"/>
+  </wsdl:message>
+  <wsdl:message name="sumAndMultiply">
+    <wsdl:part element="tns:sumAndMultiply" name="parameters"/>
+  </wsdl:message>
+  <wsdl:portType name="CalculatorWs">
+    <wsdl:operation name="sumAndMultiply">
+      <wsdl:input message="tns:sumAndMultiply" name="sumAndMultiply"/>
+      <wsdl:output message="tns:sumAndMultiplyResponse" name="sumAndMultiplyResponse"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="CalculatorServiceSoapBinding" type="tns:CalculatorWs">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="sumAndMultiply">
+      <soap:operation soapAction="" style="document"/>
+      <wsdl:input name="sumAndMultiply">
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="sumAndMultiplyResponse">
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="CalculatorService">
+    <wsdl:port binding="tns:CalculatorServiceSoapBinding" name="CalculatorPort">
+      <soap:address location="http://127.0.0.1:4204/Calculator?wsdl"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
+----
+
+
+==  Testing the OUT params
+
+Here we see a JAX-WS client executing the `sumAndMultiply` operation.  Two empty `Holder` instances are created and passed in as parameters.  The data from the `sumAndMultiplyResponse` is placed in the `Holder` instances and is then available to the client after the operation completes.
+
+The holders themselves are not actually sent in the request unless they are configured as INOUT params via WebParam.Mode.INOUT on `@WebParam`
+
+
+[source,java]
+----
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Holder;
+import javax.xml.ws.Service;
+import java.net.URL;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class CalculatorTest {
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty("openejb.embedded.remotable", "true");
+        //properties.setProperty("httpejbd.print", "true");
+        //properties.setProperty("httpejbd.indent.xml", "true");
+        EJBContainer.createEJBContainer(properties);
+    }
+
+    @Test
+    public void outParams() throws Exception {
+        final Service calculatorService = Service.create(
+                new URL("http://127.0.0.1:4204/Calculator?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorService"));
+
+        assertNotNull(calculatorService);
+
+        final CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);
+
+        final Holder<Integer> sum = new Holder<Integer>();
+        final Holder<Integer> multiply = new Holder<Integer>();
+
+        calculator.sumAndMultiply(4, 6, sum, multiply);
+
+        assertEquals(10, (int) sum.value);
+        assertEquals(24, (int) multiply.value);
+    }
+}
+----
+
+
+
+==  Inspecting the messages
+
+The above execution results in the following SOAP message.
+
+===  SOAP sumAndMultiply <small>client request</small>
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:sumAndMultiply xmlns:ns1="http://superbiz.org/wsdl">
+      <arg0>4</arg0>
+      <arg1>6</arg1>
+    </ns1:sumAndMultiply>
+  </soap:Body>
+</soap:Envelope>
+----
+
+
+===  SOAP sumAndMultiplyResponse <small>server response</small>
+
+
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <ns1:sumAndMultiplyResponse xmlns:ns1="http://superbiz.org/wsdl">
+      <sum>10</sum>
+      <multiply>24</multiply>
+    </ns1:sumAndMultiplyResponse>
+  </soap:Body>
+</soap:Envelope>
+----
+
diff --git a/src/main/jbake/content/examples/webservice-inheritance.adoc b/src/main/jbake/content/examples/webservice-inheritance.adoc
new file mode 100755
index 0000000..cc8c4cb
--- /dev/null
+++ b/src/main/jbake/content/examples/webservice-inheritance.adoc
@@ -0,0 +1,476 @@
+= Webservice Inheritance
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-inheritance can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-inheritance
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Item
+
+
+[source,java]
+----
+package org.superbiz.inheritance;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import java.io.Serializable;
+
+@Entity
+@Inheritance(strategy = InheritanceType.JOINED)
+public class Item implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+    private String brand;
+    private String itemName;
+    private double price;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getBrand() {
+        return brand;
+    }
+
+    public void setBrand(String brand) {
+        this.brand = brand;
+    }
+
+    public String getItemName() {
+        return itemName;
+    }
+
+    public void setItemName(String itemName) {
+        this.itemName = itemName;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+}
+----
+
+
+==  Tower
+
+
+[source,java]
+----
+package org.superbiz.inheritance;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Tower extends Item {
+    private Fit fit;
+    private String tubing;
+
+    public static enum Fit {
+        Custom, Exact, Universal
+    }
+
+    public Fit getFit() {
+        return fit;
+    }
+
+    public void setFit(Fit fit) {
+        this.fit = fit;
+    }
+
+    public String getTubing() {
+        return tubing;
+    }
+
+    public void setTubing(String tubing) {
+        this.tubing = tubing;
+    }
+
+    ;
+}
+----
+
+
+==  Wakeboard
+
+
+[source,java]
+----
+package org.superbiz.inheritance;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Wakeboard extends Wearable {
+}
+----
+
+
+==  WakeboardBinding
+
+
+[source,java]
+----
+package org.superbiz.inheritance;
+
+import javax.persistence.Entity;
+
+@Entity
+public class WakeboardBinding extends Wearable {
+}
+----
+
+
+==  WakeRiderImpl
+
+
+[source,java]
+----
+package org.superbiz.inheritance;
+
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+/**
+ * This is an EJB 3 style pojo stateless session bean Every stateless session
+ * bean implementation must be annotated using the annotation @Stateless This
+ * EJB has a single interface: {@link WakeRiderWs} a webservice interface.
+ */
+@Stateless
+@WebService(
+        portName = "InheritancePort",
+        serviceName = "InheritanceWsService",
+        targetNamespace = "http://superbiz.org/wsdl",
+        endpointInterface = "org.superbiz.inheritance.WakeRiderWs")
+public class WakeRiderImpl implements WakeRiderWs {
+
+    @PersistenceContext(unitName = "wakeboard-unit", type = PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    public void addItem(Item item) throws Exception {
+        entityManager.persist(item);
+    }
+
+    public void deleteMovie(Item item) throws Exception {
+        entityManager.remove(item);
+    }
+
+    public List<Item> getItems() throws Exception {
+        Query query = entityManager.createQuery("SELECT i FROM Item i");
+        List<Item> items = query.getResultList();
+        return items;
+    }
+}
+----
+
+
+==  WakeRiderWs
+
+
+[source,java]
+----
+package org.superbiz.inheritance;
+
+import javax.jws.WebService;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import java.util.List;
+
+/**
+ * This is an EJB 3 webservice interface that uses inheritance.
+ */
+@WebService(targetNamespace = "http://superbiz.org/wsdl")
+@XmlSeeAlso({Wakeboard.class, WakeboardBinding.class, Tower.class})
+public interface WakeRiderWs {
+    public void addItem(Item item) throws Exception;
+
+    public void deleteMovie(Item item) throws Exception;
+
+    public List<Item> getItems() throws Exception;
+}
+----
+
+
+==  Wearable
+
+
+[source,java]
+----
+package org.superbiz.inheritance;
+
+import javax.persistence.MappedSuperclass;
+
+@MappedSuperclass
+public abstract class Wearable extends Item {
+    protected String size;
+
+    public String getSize() {
+        return size;
+    }
+
+    public void setSize(String size) {
+        this.size = size;
+    }
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar/>
+----
+
+    
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+  <persistence-unit name="wakeboard-unit">
+
+    <jta-data-source>wakeBoardDatabase</jta-data-source>
+    <non-jta-data-source>wakeBoardDatabaseUnmanaged</non-jta-data-source>
+
+    <class>org.superbiz.inheritance.Item</class>
+    <class>org.superbiz.inheritance.Tower</class>
+    <class>org.superbiz.inheritance.Wakeboard</class>
+    <class>org.superbiz.inheritance.WakeboardBinding</class>
+    <class>org.superbiz.inheritance.Wearable</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+
+  </persistence-unit>
+</persistence>
+----
+
+
+==  InheritanceTest
+
+
+[source,java]
+----
+package org.superbiz.inheritance;
+
+import junit.framework.TestCase;
+import org.superbiz.inheritance.Tower.Fit;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import java.net.URL;
+import java.util.List;
+import java.util.Properties;
+
+public class InheritanceTest extends TestCase {
+
+    //START SNIPPET: setup	
+    private InitialContext initialContext;
+
+    protected void setUp() throws Exception {
+
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        p.put("wakeBoardDatabase", "new://Resource?type=DataSource");
+        p.put("wakeBoardDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("wakeBoardDatabase.JdbcUrl", "jdbc:hsqldb:mem:wakeBoarddb");
+
+        p.put("wakeBoardDatabaseUnmanaged", "new://Resource?type=DataSource");
+        p.put("wakeBoardDatabaseUnmanaged.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("wakeBoardDatabaseUnmanaged.JdbcUrl", "jdbc:hsqldb:mem:wakeBoarddb");
+        p.put("wakeBoardDatabaseUnmanaged.JtaManaged", "false");
+
+        p.put("openejb.embedded.remotable", "true");
+
+        initialContext = new InitialContext(p);
+    }
+    //END SNIPPET: setup    
+
+    /**
+     * Create a webservice client using wsdl url
+     *
+     * @throws Exception
+     */
+    //START SNIPPET: webservice
+    public void testInheritanceViaWsInterface() throws Exception {
+        Service service = Service.create(
+                new URL("http://127.0.0.1:4204/WakeRiderImpl?wsdl"),
+                new QName("http://superbiz.org/wsdl", "InheritanceWsService"));
+        assertNotNull(service);
+
+        WakeRiderWs ws = service.getPort(WakeRiderWs.class);
+
+        Tower tower = createTower();
+        Item item = createItem();
+        Wakeboard wakeBoard = createWakeBoard();
+        WakeboardBinding wakeBoardbinding = createWakeboardBinding();
+
+        ws.addItem(tower);
+        ws.addItem(item);
+        ws.addItem(wakeBoard);
+        ws.addItem(wakeBoardbinding);
+
+
+        List<Item> returnedItems = ws.getItems();
+
+        assertEquals("testInheritanceViaWsInterface, nb Items", 4, returnedItems.size());
+
+        //check tower
+        assertEquals("testInheritanceViaWsInterface, first Item", returnedItems.get(0).getClass(), Tower.class);
+        tower = (Tower) returnedItems.get(0);
+        assertEquals("testInheritanceViaWsInterface, first Item", tower.getBrand(), "Tower brand");
+        assertEquals("testInheritanceViaWsInterface, first Item", tower.getFit().ordinal(), Fit.Custom.ordinal());
+        assertEquals("testInheritanceViaWsInterface, first Item", tower.getItemName(), "Tower item name");
+        assertEquals("testInheritanceViaWsInterface, first Item", tower.getPrice(), 1.0d);
+        assertEquals("testInheritanceViaWsInterface, first Item", tower.getTubing(), "Tower tubing");
+
+        //check item
+        assertEquals("testInheritanceViaWsInterface, second Item", returnedItems.get(1).getClass(), Item.class);
+        item = (Item) returnedItems.get(1);
+        assertEquals("testInheritanceViaWsInterface, second Item", item.getBrand(), "Item brand");
+        assertEquals("testInheritanceViaWsInterface, second Item", item.getItemName(), "Item name");
+        assertEquals("testInheritanceViaWsInterface, second Item", item.getPrice(), 2.0d);
+
+        //check wakeboard
+        assertEquals("testInheritanceViaWsInterface, third Item", returnedItems.get(2).getClass(), Wakeboard.class);
+        wakeBoard = (Wakeboard) returnedItems.get(2);
+        assertEquals("testInheritanceViaWsInterface, third Item", wakeBoard.getBrand(), "Wakeboard brand");
+        assertEquals("testInheritanceViaWsInterface, third Item", wakeBoard.getItemName(), "Wakeboard item name");
+        assertEquals("testInheritanceViaWsInterface, third Item", wakeBoard.getPrice(), 3.0d);
+        assertEquals("testInheritanceViaWsInterface, third Item", wakeBoard.getSize(), "WakeBoard size");
+
+        //check wakeboardbinding
+        assertEquals("testInheritanceViaWsInterface, fourth Item", returnedItems.get(3).getClass(), WakeboardBinding.class);
+        wakeBoardbinding = (WakeboardBinding) returnedItems.get(3);
+        assertEquals("testInheritanceViaWsInterface, fourth Item", wakeBoardbinding.getBrand(), "Wakeboardbinding brand");
+        assertEquals("testInheritanceViaWsInterface, fourth Item", wakeBoardbinding.getItemName(), "Wakeboardbinding item name");
+        assertEquals("testInheritanceViaWsInterface, fourth Item", wakeBoardbinding.getPrice(), 4.0d);
+        assertEquals("testInheritanceViaWsInterface, fourth Item", wakeBoardbinding.getSize(), "WakeBoardbinding size");
+    }
+    //END SNIPPET: webservice
+
+    private Tower createTower() {
+        Tower tower = new Tower();
+        tower.setBrand("Tower brand");
+        tower.setFit(Fit.Custom);
+        tower.setItemName("Tower item name");
+        tower.setPrice(1.0f);
+        tower.setTubing("Tower tubing");
+        return tower;
+    }
+
+    private Item createItem() {
+        Item item = new Item();
+        item.setBrand("Item brand");
+        item.setItemName("Item name");
+        item.setPrice(2.0f);
+        return item;
+    }
+
+    private Wakeboard createWakeBoard() {
+        Wakeboard wakeBoard = new Wakeboard();
+        wakeBoard.setBrand("Wakeboard brand");
+        wakeBoard.setItemName("Wakeboard item name");
+        wakeBoard.setPrice(3.0f);
+        wakeBoard.setSize("WakeBoard size");
+        return wakeBoard;
+    }
+
+    private WakeboardBinding createWakeboardBinding() {
+        WakeboardBinding wakeBoardBinding = new WakeboardBinding();
+        wakeBoardBinding.setBrand("Wakeboardbinding brand");
+        wakeBoardBinding.setItemName("Wakeboardbinding item name");
+        wakeBoardBinding.setPrice(4.0f);
+        wakeBoardBinding.setSize("WakeBoardbinding size");
+        return wakeBoardBinding;
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.inheritance.InheritanceTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/webservice-inheritance
+INFO - openejb.base = /Users/dblevins/examples/webservice-inheritance
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=wakeBoardDatabaseUnmanaged, type=Resource, provider-id=Default JDBC Database)
+INFO - Configuring Service(id=wakeBoardDatabase, type=Resource, provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-inheritance/target/classes
+INFO - Beginning load: /Users/dblevins/examples/webservice-inheritance/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-inheritance/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean WakeRiderImpl: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring PersistenceUnit(name=wakeboard-unit)
+INFO - Enterprise application "/Users/dblevins/examples/webservice-inheritance/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/webservice-inheritance/classpath.ear
+INFO - PersistenceUnit(name=wakeboard-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 396ms
+INFO - Created Ejb(deployment-id=WakeRiderImpl, ejb-name=WakeRiderImpl, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=WakeRiderImpl, ejb-name=WakeRiderImpl, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/webservice-inheritance/classpath.ear)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Creating ServerService(id=cxf)
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Initializing network services
+  ** Starting Services **
+  NAME                 IP              PORT  
+  httpejbd             127.0.0.1       4204  
+  admin thread         127.0.0.1       4200  
+  ejbd                 127.0.0.1       4201  
+  ejbd                 127.0.0.1       4203  
+-------
+Ready!
+WARN - Found no persistent property in "org.superbiz.inheritance.WakeboardBinding"
+WARN - Found no persistent property in "org.superbiz.inheritance.Wakeboard"
+WARN - Found no persistent property in "org.superbiz.inheritance.WakeboardBinding"
+WARN - Found no persistent property in "org.superbiz.inheritance.Wakeboard"
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.442 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/webservice-security.adoc b/src/main/jbake/content/examples/webservice-security.adoc
new file mode 100755
index 0000000..05588e3
--- /dev/null
+++ b/src/main/jbake/content/examples/webservice-security.adoc
@@ -0,0 +1,233 @@
+= Webservice Security
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-security can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-security
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  CalculatorImpl
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+
+/**
+ * This is an EJB 3 style pojo stateless session bean
+ * Every stateless session bean implementation must be annotated
+ * using the annotation @Stateless
+ * This EJB has a single interface: CalculatorWs a webservice interface.
+ */
+//START SNIPPET: code
+@DeclareRoles(value = {"Administrator"})
+@Stateless
+@WebService(
+        portName = "CalculatorPort",
+        serviceName = "CalculatorWsService",
+        targetNamespace = "http://superbiz.org/wsdl",
+        endpointInterface = "org.superbiz.calculator.CalculatorWs")
+public class CalculatorImpl implements CalculatorWs, CalculatorRemote {
+
+    @RolesAllowed(value = {"Administrator"})
+    public int sum(int add1, int add2) {
+        return add1 + add2;
+    }
+
+    @RolesAllowed(value = {"Administrator"})
+    public int multiply(int mul1, int mul2) {
+        return mul1 * mul2;
+    }
+}
+----
+
+
+==  CalculatorRemote
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface CalculatorRemote {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  CalculatorWs
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.jws.WebService;
+
+//END SNIPPET: code
+
+/**
+ * This is an EJB 3 webservice interface
+ * A webservice interface must be annotated with the @Local
+ * annotation.
+ */
+//START SNIPPET: code
+@WebService(targetNamespace = "http://superbiz.org/wsdl")
+public interface CalculatorWs {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar/>
+----
+
+
+==  openejb-jar.xml
+
+
+[source,xml]
+----
+<openejb-jar xmlns="http://tomee.apache.org/xml/ns/openejb-jar-2.2">
+  <enterprise-beans>
+    <session>
+      <ejb-name>CalculatorImpl</ejb-name>
+      <web-service-security>
+        <security-realm-name/>
+        <transport-guarantee>NONE</transport-guarantee>
+        <auth-method>BASIC</auth-method>
+      </web-service-security>
+    </session>
+  </enterprise-beans>
+</openejb-jar>
+----
+
+
+==  CalculatorTest
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import junit.framework.TestCase;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Service;
+import java.net.URL;
+import java.util.Properties;
+
+public class CalculatorTest extends TestCase {
+
+    //START SNIPPET: setup
+    private InitialContext initialContext;
+
+    protected void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.embedded.remotable", "true");
+
+        initialContext = new InitialContext(properties);
+    }
+    //END SNIPPET: setup
+
+    /**
+     * Create a webservice client using wsdl url
+     *
+     * @throws Exception
+     */
+    //START SNIPPET: webservice
+    public void testCalculatorViaWsInterface() throws Exception {
+        URL url = new URL("http://127.0.0.1:4204/CalculatorImpl?wsdl");
+        QName calcServiceQName = new QName("http://superbiz.org/wsdl", "CalculatorWsService");
+        Service calcService = Service.create(url, calcServiceQName);
+        assertNotNull(calcService);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+        ((BindingProvider) calc).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "jane");
+        ((BindingProvider) calc).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "waterfall");
+        assertEquals(10, calc.sum(4, 6));
+        assertEquals(12, calc.multiply(3, 4));
+    }
+    //END SNIPPET: webservice
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.calculator.CalculatorTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/webservice-security
+INFO - openejb.base = /Users/dblevins/examples/webservice-security
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-security/target/classes
+INFO - Beginning load: /Users/dblevins/examples/webservice-security/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-security/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean CalculatorImpl: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/webservice-security/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/webservice-security/classpath.ear
+INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=global/classpath.ear/webservice-security/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=global/classpath.ear/webservice-security/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/webservice-security/classpath.ear)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Creating ServerService(id=cxf)
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Initializing network services
+  ** Starting Services **
+  NAME                 IP              PORT  
+  httpejbd             127.0.0.1       4204  
+  admin thread         127.0.0.1       4200  
+  ejbd                 127.0.0.1       4201  
+  ejbd                 127.0.0.1       4203  
+-------
+Ready!
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.481 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/webservice-ws-security.adoc b/src/main/jbake/content/examples/webservice-ws-security.adoc
new file mode 100755
index 0000000..ed54aea
--- /dev/null
+++ b/src/main/jbake/content/examples/webservice-ws-security.adoc
@@ -0,0 +1,766 @@
+= Webservice Ws Security
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-ws-security can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-ws-security
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  CalculatorImpl
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+
+/**
+ * This is an EJB 3 style pojo stateless session bean
+ * Every stateless session bean implementation must be annotated
+ * using the annotation @Stateless
+ * This EJB has a single interface: CalculatorWs a webservice interface.
+ */
+//START SNIPPET: code
+@DeclareRoles(value = {"Administrator"})
+@Stateless
+@WebService(
+        portName = "CalculatorPort",
+        serviceName = "CalculatorWsService",
+        targetNamespace = "http://superbiz.org/wsdl",
+        endpointInterface = "org.superbiz.calculator.CalculatorWs")
+public class CalculatorImpl implements CalculatorWs, CalculatorRemote {
+
+    @RolesAllowed(value = {"Administrator"})
+    public int sum(int add1, int add2) {
+        return add1 + add2;
+    }
+
+    public int multiply(int mul1, int mul2) {
+        return mul1 * mul2;
+    }
+}
+----
+
+
+==  CalculatorRemote
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface CalculatorRemote {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  CalculatorWs
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.jws.WebService;
+
+//END SNIPPET: code
+
+/**
+ * This is an EJB 3 webservice interface
+ * A webservice interface must be annotated with the @Local
+ * annotation.
+ */
+//START SNIPPET: code
+@WebService(targetNamespace = "http://superbiz.org/wsdl")
+public interface CalculatorWs {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0" id="simple" metadata-complete="false">
+
+  <enterprise-beans>
+
+    <session>
+      <ejb-name>CalculatorImplTimestamp1way</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplTimestamp2ways</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplUsernameTokenPlainPassword</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplUsernameTokenHashedPassword</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplSign</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplEncrypt2ways</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplSign2ways</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplEncryptAndSign2ways</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+  </enterprise-beans>
+
+</ejb-jar>
+----
+
+    
+
+==  openejb-jar.xml
+
+
+[source,xml]
+----
+<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
+
+  <ejb-deployment ejb-name="CalculatorImpl">
+    <properties>
+      # webservice.security.realm
+      # webservice.security.securityRealm
+      # webservice.security.transportGarantee = NONE
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = UsernameToken
+      wss4j.in.passwordType = PasswordText
+      wss4j.in.passwordCallbackClass = org.superbiz.calculator.CustomPasswordHandler
+
+      # automatically added
+      wss4j.in.validator.{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken = org.apache.openejb.server.cxf.OpenEJBLoginValidator
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplTimestamp1way">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = Timestamp
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplTimestamp2ways">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = Timestamp
+      wss4j.out.action = Timestamp
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplUsernameTokenPlainPassword">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = UsernameToken
+      wss4j.in.passwordType = PasswordText
+      wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplUsernameTokenHashedPassword">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = UsernameToken
+      wss4j.in.passwordType = PasswordDigest
+      wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplUsernameTokenPlainPasswordEncrypt">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = UsernameToken Encrypt
+      wss4j.in.passwordType = PasswordText
+      wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+      wss4j.in.decryptionPropFile = META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-server.properties
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplSign">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = Signature
+      wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+      wss4j.in.signaturePropFile = META-INF/CalculatorImplSign-server.properties
+    </properties>
+  </ejb-deployment>
+
+</openejb-jar>
+----
+
+    
+
+==  webservices.xml
+
+
+[source,xml]
+----
+<webservices xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd"
+             xmlns:ger="http://ciaows.org/wsdl" version="1.1">
+
+  <webservice-description>
+    <webservice-description-name>CalculatorWsService</webservice-description-name>
+    <port-component>
+      <port-component-name>CalculatorImplTimestamp1way</port-component-name>
+      <wsdl-port>CalculatorImplTimestamp1way</wsdl-port>
+      <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplTimestamp1way</ejb-link>
+      </service-impl-bean>
+    </port-component>
+    <port-component>
+      <port-component-name>CalculatorImplTimestamp2ways</port-component-name>
+      <wsdl-port>CalculatorImplTimestamp2ways</wsdl-port>
+      <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplTimestamp2ways</ejb-link>
+      </service-impl-bean>
+    </port-component>
+    <port-component>
+      <port-component-name>CalculatorImplUsernameTokenPlainPassword</port-component-name>
+      <wsdl-port>CalculatorImplUsernameTokenPlainPassword</wsdl-port>
+      <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplUsernameTokenPlainPassword</ejb-link>
+      </service-impl-bean>
+    </port-component>
+    <port-component>
+      <port-component-name>CalculatorImplUsernameTokenHashedPassword</port-component-name>
+      <wsdl-port>CalculatorImplUsernameTokenHashedPassword</wsdl-port>
+      <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplUsernameTokenHashedPassword</ejb-link>
+      </service-impl-bean>
+    </port-component>
+    <port-component>
+      <port-component-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</port-component-name>
+      <wsdl-port>CalculatorImplUsernameTokenPlainPasswordEncrypt</wsdl-port>
+      <service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-link>
+      </service-impl-bean>
+    </port-component>
+  </webservice-description>
+
+</webservices>
+----
+
+    
+
+==  CalculatorTest
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import junit.framework.TestCase;
+import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;
+import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
+import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSPasswordCallback;
+import org.apache.ws.security.handler.WSHandlerConstants;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.soap.SOAPBinding;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+public class CalculatorTest extends TestCase {
+
+    //START SNIPPET: setup
+    protected void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.embedded.remotable", "true");
+
+        new InitialContext(properties);
+    }
+    //END SNIPPET: setup
+
+    //START SNIPPET: webservice
+    public void testCalculatorViaWsInterface() throws Exception {
+        Service calcService = Service.create(new URL("http://127.0.0.1:4204/CalculatorImpl?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
+        outProps.put(WSHandlerConstants.USER, "jane");
+        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {
+
+            public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("waterfall");
+            }
+        });
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(10, calc.sum(4, 6));
+    }
+
+    public void testCalculatorViaWsInterfaceWithTimestamp1way() throws Exception {
+        Service calcService = Service.create(new URL("http://127.0.0.1:4204/CalculatorImplTimestamp1way?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl",
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplTimestamp1way");
+
+//        CalculatorWs calc = calcService.getPort(
+//        	new QName("http://superbiz.org/wsdl", "CalculatorWsService2"),
+//		CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(12, calc.multiply(3, 4));
+    }
+
+    public void testCalculatorViaWsInterfaceWithTimestamp2ways() throws Exception {
+        Service calcService = Service.create(new URL("http://127.0.0.1:4204/CalculatorImplTimestamp2ways?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl",
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplTimestamp2ways");
+
+//        CalculatorWs calc = calcService.getPort(
+//        	new QName("http://superbiz.org/wsdl", "CalculatorWsService2"),
+//		CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+        endpoint.getInInterceptors().add(new SAAJInInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        Map<String, Object> inProps = new HashMap<String, Object>();
+        inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);
+        WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);
+        endpoint.getInInterceptors().add(wssIn);
+
+        assertEquals(12, calc.multiply(3, 4));
+    }
+
+    public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPassword() throws Exception {
+        Service calcService = Service.create(new URL("http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPassword?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl",
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPassword");
+
+//        CalculatorWs calc = calcService.getPort(
+//        	new QName("http://superbiz.org/wsdl", "CalculatorWsService2"),
+//        	CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
+        outProps.put(WSHandlerConstants.USER, "jane");
+        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {
+
+            @Override
+            public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("waterfall");
+            }
+        });
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(10, calc.sum(4, 6));
+    }
+
+    public void testCalculatorViaWsInterfaceWithUsernameTokenHashedPassword() throws Exception {
+        Service calcService = Service.create(new URL("http://127.0.0.1:4204/CalculatorImplUsernameTokenHashedPassword?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl",
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplUsernameTokenHashedPassword");
+
+//        CalculatorWs calc = calcService.getPort(
+//        	new QName("http://superbiz.org/wsdl", "CalculatorWsService2"),
+//        	CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
+        outProps.put(WSHandlerConstants.USER, "jane");
+        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {
+
+            @Override
+            public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("waterfall");
+            }
+        });
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(10, calc.sum(4, 6));
+    }
+
+    public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPasswordEncrypt() throws Exception {
+        Service calcService = Service.create(new URL("http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPasswordEncrypt?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl",
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPasswordEncrypt");
+
+//        CalculatorWs calc = calcService.getPort(
+//        	new QName("http://superbiz.org/wsdl", "CalculatorWsService2"),
+//        	CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN
+                + " " + WSHandlerConstants.ENCRYPT);
+        outProps.put(WSHandlerConstants.USER, "jane");
+        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {
+
+            @Override
+            public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("waterfall");
+            }
+        });
+        outProps.put(WSHandlerConstants.ENC_PROP_FILE, "META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-client.properties");
+        outProps.put(WSHandlerConstants.ENCRYPTION_USER, "serveralias");
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(10, calc.sum(4, 6));
+    }
+
+    public void testCalculatorViaWsInterfaceWithSign() throws Exception {
+        Service calcService = Service.create(new URL("http://127.0.0.1:4204/CalculatorImplSign?wsdl"),
+                new QName("http://superbiz.org/wsdl", "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl",
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplSign");
+
+//      CalculatorWs calc = calcService.getPort(
+//	new QName("http://superbiz.org/wsdl", "CalculatorWsService2"),
+//	CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE);
+        outProps.put(WSHandlerConstants.USER, "clientalias");
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() {
+
+            @Override
+            public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("clientPassword");
+            }
+        });
+        outProps.put(WSHandlerConstants.SIG_PROP_FILE, "META-INF/CalculatorImplSign-client.properties");
+        outProps.put(WSHandlerConstants.SIG_KEY_ID, "IssuerSerial");
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(24, calc.multiply(4, 6));
+    }
+    //END SNIPPET: webservice
+}
+----
+
+
+==  CustomPasswordHandler
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import java.io.IOException;
+
+public class CustomPasswordHandler implements CallbackHandler {
+    @Override
+    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+        WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+
+        if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN) {
+            // TODO get the password from the users.properties if possible
+            pc.setPassword("waterfall");
+        } else if (pc.getUsage() == WSPasswordCallback.DECRYPT) {
+            pc.setPassword("serverPassword");
+        } else if (pc.getUsage() == WSPasswordCallback.SIGNATURE) {
+            pc.setPassword("serverPassword");
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+    generate keys:
+    
+    do.sun.jdk:
+         [echo] *** Running on a Sun JDK ***
+         [echo] generate server keys
+         [java] Certificate stored in file </Users/dblevins/examples/webservice-ws-security/target/classes/META-INF/serverKey.rsa>
+         [echo] generate client keys
+         [java] Certificate stored in file </Users/dblevins/examples/webservice-ws-security/target/test-classes/META-INF/clientKey.rsa>
+         [echo] import client/server public keys in client/server keystores
+         [java] Certificate was added to keystore
+         [java] Certificate was added to keystore
+    
+    do.ibm.jdk:
+    
+    run:
+         [echo] Running JDK specific keystore creation target
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.calculator.CalculatorTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/webservice-ws-security
+INFO - openejb.base = /Users/dblevins/examples/webservice-ws-security
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/webservice-ws-security/target/classes
+INFO - Beginning load: /Users/dblevins/examples/webservice-ws-security/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/webservice-ws-security/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean CalculatorImplTimestamp1way: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/webservice-ws-security/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/webservice-ws-security/classpath.ear
+INFO - Jndi(name=CalculatorImplTimestamp1wayRemote) --> Ejb(deployment-id=CalculatorImplTimestamp1way)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplTimestamp1way)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way) --> Ejb(deployment-id=CalculatorImplTimestamp1way)
+INFO - Jndi(name=CalculatorImplTimestamp2waysRemote) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways) --> Ejb(deployment-id=CalculatorImplTimestamp2ways)
+INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)
+INFO - Jndi(name=CalculatorImplUsernameTokenHashedPasswordRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword) --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)
+INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordEncryptRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt) --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)
+INFO - Jndi(name=CalculatorImplSignRemote) --> Ejb(deployment-id=CalculatorImplSign)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplSign)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign) --> Ejb(deployment-id=CalculatorImplSign)
+INFO - Jndi(name=CalculatorImplEncrypt2waysRemote) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways) --> Ejb(deployment-id=CalculatorImplEncrypt2ways)
+INFO - Jndi(name=CalculatorImplSign2waysRemote) --> Ejb(deployment-id=CalculatorImplSign2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplSign2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways) --> Ejb(deployment-id=CalculatorImplSign2ways)
+INFO - Jndi(name=CalculatorImplEncryptAndSign2waysRemote) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways) --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)
+INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl!org.superbiz.calculator.CalculatorRemote) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl) --> Ejb(deployment-id=CalculatorImpl)
+INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplSign, ejb-name=CalculatorImplSign, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplTimestamp1way, ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplSign2ways, ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplEncrypt2ways, ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplTimestamp2ways, ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplSign, ejb-name=CalculatorImplSign, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplTimestamp1way, ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplSign2ways, ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplEncrypt2ways, ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplTimestamp2ways, ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/webservice-ws-security/classpath.ear)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Creating ServerService(id=cxf)
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Initializing network services
+  ** Starting Services **
+  NAME                 IP              PORT  
+  httpejbd             127.0.0.1       4204  
+  admin thread         127.0.0.1       4200  
+  ejbd                 127.0.0.1       4201  
+  ejbd                 127.0.0.1       4203  
+-------
+Ready!
+Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.582 sec
+
+Results :
+
+Tests run: 7, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    
diff --git a/src/main/jbake/content/examples/webservice-ws-with-resources-config.adoc b/src/main/jbake/content/examples/webservice-ws-with-resources-config.adoc
new file mode 100755
index 0000000..6f15e05
--- /dev/null
+++ b/src/main/jbake/content/examples/webservice-ws-with-resources-config.adoc
@@ -0,0 +1,9 @@
+= webservice-ws-with-resources-config
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-ws-with-resources-config can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-ws-with-resources-config
+
+No README.md yet, be the first to contribute one!
diff --git a/src/main/jbake/content/security/index.adoc b/src/main/jbake/content/security/index.adoc
new file mode 100755
index 0000000..004f3f2
--- /dev/null
+++ b/src/main/jbake/content/security/index.adoc
@@ -0,0 +1,72 @@
+= Security
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== Security updates
+
+Please note that, except in rare circumstances, binary patches are not produced for individual vulnerabilities. To obtain the binary fix for a particular vulnerability you should upgrade to an Apache TomEE version where that vulnerability has been fixed.
+
+Source patches, usually in the form of references to SVN commits, may be provided in either in a vulnerability announcement and/or the vulnerability details listed on these pages. These source patches may be used by users wishing to build their own local version of TomEE with just that security patch rather than upgrade.
+
+The Apache Software Foundation takes a very active stance in eliminating security problems and denial of service attacks against Apache projects.
+
+We strongly encourage folks to report such problems to the private security mailing list first, before disclosing them in a public forum.
+
+Please note that the security mailing list should only be used for reporting undisclosed security vulnerabilities in Apache projects and managing the process of fixing such vulnerabilities. We cannot accept regular bug reports or other queries at this address. All mail sent to this address that does not relate to an undisclosed security problem will be ignored.
+
+If you need to report a bug that isn't an undisclosed security vulnerability, please use the bug reporting system.
+
+Questions about:
+
+- how to configure TomEE securely
+- if a vulnerability applies to your particular application
+- obtaining further information on a published vulnerability
+- availability of patches and/or new releases
+
+should be addressed to the link:support.html[users mailing list].
+
+The private security mailing address is: security (at) apache (dot) org
+
+Note that all networked servers are subject to denial of service attacks, and we cannot promise magic workarounds to generic problems (such as a client streaming lots of data to your server, or re-requesting the same URL repeatedly). In general our philosophy is to avoid any attacks which can cause the server to consume resources in a non-linear relationship to the size of inputs.
+
+=== Third-party projects
+
+Apache is built with the following components. Please see the security advisories information for each component for more information on the security vulnerabilities and issues that may affect that component.
+
+- Apache Tomcat 7.x: Tomcat 7 security advisories
+- Apache OpenJPA
+- Apache CXF: CXF Security Advisories
+- Apache OpenWebBeans
+- Apache MyFaces
+- Apache Bean Validation
+
+By default any regular TomEE releases uses latest sub project releases, so that we can follow all security fixes as much as possible.
+
+=== Apache TomEE versioning details
+
+As security is a key concern in many companies, TomEE team also considers to deliver specific security fixes for those external projects being fixed. For instance, if Tomcat fixes a security issue in Tomcat x.y.z, used in TomEE a.b.c, we will consider packaging a new security update release using the new Tomcat release.
+
+In order to achieve a smoothly migration patch between a TomEE version and a security update, the TomEE team has decided to adopt the following versioning major.minor.patch[.security update]
+
+- major ([0-9]+): it refers mainly to the Java EE version we implement. 1.x for Java EE 6 for example.
+- minor ([0-9]+): contains features, bugfixes and security fixes (internal or third-party)
+- patch ([0-9]+): only bugfixes applied
+
+Optionally we can concatenate a security update to the version if TomEE source base if not impacted but only a dependency. Note this didn't happen yet.
+
+=== Additional information
+
+==== Secunia
+
+Secunia is an international IT security company specialising in vulnerability management based in Copenhagen, Denmark.
+
+There is an Apache Software Foundation vendor declared so you can follow all vulnerabilities related to Apache products. Of course, a Apache TomEE product is also available so you can search for know advisories.
+
+=== Links
+
+- http://apache.org/security/
+- http://apache.org/security/projects.html
+- http://apache.org/security/committers.html
+- http://cve.mitre.org/[Common Vulnerabilities and Exposures database]
diff --git a/src/main/jbake/content/security/support.adoc b/src/main/jbake/content/security/support.adoc
new file mode 100755
index 0000000..af5d330
--- /dev/null
+++ b/src/main/jbake/content/security/support.adoc
@@ -0,0 +1,34 @@
+= Support
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+
+Support for Apache TomEE is given freely by the community.
+Please be aware when asking questions that the Apache Software Foundation does not have paid developers or dedicated support staff.
+All community support comes from volunteers on a volunteer basis.
+Joining the link:../community/index.html[Community] as a volunteer and helping your fellow users is highly encouraged!
+
+=== Mailing Lists
+
+- mailto:users@tomee.apache.org[User Mailing List] (mailto:users-subscribe@tomee.apache.org[Subscribe now] | mailto:users-unsubscribe@tomee.apache.org[Unsubscribe]): for all your questions or to share the issues you can meet
+- mailto:dev@tomee.apache.org[Dev Mailing List] (mailto:dev-subscribe@tomee.apache.org[Subscribe now] | mailto:dev-unsubscribe@tomee.apache.org[Unsubscribe]): to speak about the project and developments
+- mailto:commits@tomee.apache.org[Commits Mailing List] (mailto:commits-subscribe@tomee.apache.org[Subscribe now] | mailto:commits-unsubscribe@tomee.apache.org[Unsubscribe]): receive commits by mail
+
+
+=== IRC
+
+http://webchat.freenode.net/?channels=openejb[openejb @ freenode] is the channel most of us use.
+
+=== Forums
+
+Our forum (mailing lists archives) can be accessed through http://tomee-openejb.979440.n4.nabble.com/[Nabble].
+
+=== Bugtracker/JIRA
+
+If you encounter a bug or want to submit a patch just go on our https://issues.apache.org/jira/browse/TOMEE[JIRA].
+
+=== Commercial Support
+
+If you need advanced support with SLA please have a look to our link:../community/commercial.html[Commercial] page.
diff --git a/src/main/jbake/jbake.properties b/src/main/jbake/jbake.properties
new file mode 100755
index 0000000..ef3f1d0
--- /dev/null
+++ b/src/main/jbake/jbake.properties
@@ -0,0 +1,19 @@
+default.status=published
+render.encoding=UTF-8
+render.tags = true
+render.archive = false
+render.feed = false
+render.sitemap = true
+template.folder = templates
+template.index.file = index.gsp
+template.sitemap.file = sitemap.gsp
+template.page.file = page.gsp
+template.post.file = post.gsp
+template.contributors.file = contributors.gsp
+template.examples.file = examples.gsp
+template.blog.file = blog.gsp
+# template.archive.file = archive.gsp
+# template.tag.file = tags.gsp
+# template.feed.file = feed.gsp
+
+
diff --git a/src/main/jbake/templates/archive.gsp b/src/main/jbake/templates/archive.gsp
new file mode 100755
index 0000000..5b8d6a6
--- /dev/null
+++ b/src/main/jbake/templates/archive.gsp
@@ -0,0 +1,33 @@
+<%include 'header.gsp'%>
+
+	<%include 'menu.gsp'%>
+
+<div id="main-block">
+	<div class="page-header">
+		<div class="container">
+			<h1>Blog Archive</h1>
+		</div>
+	</div>
+	<div class="container">
+		<!--<ul>-->
+			<%def last_month=null;%>
+			<%published_posts.each {post ->%>
+				<%if (last_month) {%>
+					<%if (post.date.format("MMMM yyyy") != last_month) {%>
+						</ul>
+						<h4>${post.date.format("MMMM yyyy")}</h4>
+						<ul>
+					<%}%>
+				<% } else { %>
+					<h4>${post.date.format("MMMM yyyy")}</h4>
+					<ul>
+				<% }%>
+
+				<li>${post.date.format("dd")} - <a href="${post.uri}">${post.title}</a></li>
+				<%last_month = post.date.format("MMMM yyyy")%>
+			<%}%>
+		</ul>
+	</div>
+</div>
+	
+<%include "footer.gsp"%>
\ No newline at end of file
diff --git a/src/main/jbake/templates/blog.gsp b/src/main/jbake/templates/blog.gsp
new file mode 100755
index 0000000..70d94b4
--- /dev/null
+++ b/src/main/jbake/templates/blog.gsp
@@ -0,0 +1,28 @@
+<%include "header.gsp"%>
+
+	<%include "menu.gsp"%>
+
+    <div id="main-block" class="container section-padded">
+        <div class="row title">
+            <div class='page-header'>
+              <h2>Last posts</h2>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-12">
+                <%
+                last = published_posts.size() - 1
+                published_posts.eachWithIndex {post, idx ->
+                %>
+                    <a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>${post.uri}"><h1>${post.title}</h1></a>
+                    <%if (post.date) {%><p><small>${post.date}</small></p><% } %>
+                    <p>${post.body}</p>
+                    <% if (idx != last) { %><hr /><% } %>
+                <%}%>
+
+                <!--p>Older posts are available in the <a href="/${config.archive_file}">archive</a>.</p>-->
+            </div>
+        </div>
+    </div>
+
+<%include "footer.gsp"%>
\ No newline at end of file
diff --git a/src/main/jbake/templates/contributors.gsp b/src/main/jbake/templates/contributors.gsp
new file mode 100755
index 0000000..2e13667
--- /dev/null
+++ b/src/main/jbake/templates/contributors.gsp
@@ -0,0 +1,43 @@
+<%include "header.gsp"%>
+	<%include "menu.gsp"%>
+
+    <div id="main-block" class="container section-padded">
+        <div class="row title">
+            <div class='page-header'>
+              <%if (content.containsKey('tomeepdf')) {%>
+              <div class='btn-toolbar pull-right'>
+                <div class='btn-group'>
+                    <a class="btn" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>${content.uri.replace('html', 'pdf')}"><i class="fa fa-file-pdf-o"></i> Download as PDF</a>
+                </div>
+              </div>
+              <% } %>
+              <h2>${content.title}</h2>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-12 contributors">
+              <div class="text-center" style="padding-bottom: 2em;">A <i class="fa fa-star-o" style="color:#F38F24;"></i> means the contributor is also a committer.</div>
+              <ul>
+                <%
+                    org.apache.tomee.website.Contributors.load(content.body).each {contributor ->
+                %>
+                  <div class="col-sm-4">
+                    <div class="photo col-sm-5">
+                      <img alt="${contributor.name}" src="${contributor.gravatar}" style="width:140px">
+                      <% if (contributor.committer){ %><i class="pull-right fa fa-star-o" style="color:#F38F24;"></i><% } %>
+                    </div>
+                    <div class="col-sm-7">
+                      <h3 class="contributor-name" style="font-size:1.4em;">${contributor.name}</h3>
+                      <p></p>
+                      <ul class="list-inline">
+                      <%contributor.link.each {l ->%>
+                      <li><a href="${l.url}">${l.name}</a></li>
+                      <%}%>
+                    </div>
+                  </div>
+              <% } %>
+              </ul>
+            </div>
+        </div>
+    </div>
+<%include "footer.gsp"%>
diff --git a/src/main/jbake/templates/examples.gsp b/src/main/jbake/templates/examples.gsp
new file mode 100755
index 0000000..5258358
--- /dev/null
+++ b/src/main/jbake/templates/examples.gsp
@@ -0,0 +1,202 @@
+<%include "header.gsp"%>
+<%include "menu.gsp"%>
+
+<div id="main-block" class="container section-padded">
+<div class="row title">
+  <div class='page-header'>
+    <% if (content.containsKey('tomeepdf')) { %>
+    <div class='btn-toolbar pull-right'>
+      <div class='btn-group'>
+        <a class="btn" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>${content.uri.replace('html', 'pdf')}">
+          <i class="fa fa-file-pdf-o"></i> Download as PDF
+        </a>
+      </div>
+    </div>
+    <% } %>
+    <h2>${content.title}</h2>
+  </div>
+</div>
+<div class="row">
+  <div class="col-md-12">
+    <input id="example-search" placeholder="Search an example and click on it to browse it..." class="typeahead"/>
+  </div>
+  <div class="vspace">&nbsp;</div>
+  <div class="col-md-12 examples text-center">
+    <%
+    def all = org.apache.tomee.website.Examples.loadAll()
+    def keys = []
+    keys.addAll(all.all.keySet())
+
+    [keys.subList(0, (int) keys.size() / 2), keys.subList((int) keys.size() / 2, keys.size())].each { list ->
+      keys.subList(0, (int) keys.size() / 2).each { tag ->
+      examples = all.all[tag]
+    %>
+    <div class="col-sm-6">
+      <h3>${tag}</h3>
+      <ul class="list-unstyled">
+        <% examples.each {example -> %>
+        <li><a href="${example.name}.html">${example.name}</a></li>
+        <% } %>
+      </ul>
+    </div>
+    <% }} %>
+  </div>
+</div>
+</div>
+
+<style>
+.typeahead {
+    padding-left: 43px;
+    padding-right: 43px;
+    border-radius: 23px;
+    border:1px #ccc solid;
+    height: 46px;
+    width: 100%;
+    outline: none;
+}
+.typeahead:focus {
+    border-color: #66afe9;
+    outline: 0;
+    box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+
+
+/* typeahead styling*/
+.tt-menu hr {
+    margin-bottom: 5px;
+    margin-top: 5px;
+}
+.tt-menu h3 {
+    margin-bottom: 2px;
+    margin-top: 2px;
+    padding-bottom: 2px;
+    padding-top: 2px;
+    font-size: 18px;
+    font-weight: bolder;
+}
+.tt-menu h2 {
+    font-weight: bold;
+}
+span.twitter-typeahead .tt-menu,
+span.twitter-typeahead .tt-dropdown-menu {
+  z-index: 1000;
+  display: none;
+  width: 100%;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  list-style: none;
+  text-align: left;
+  background-color: #ffffff;
+  border: 1px solid #cccccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  background-clip: padding-box;
+}
+span.twitter-typeahead h3 {
+  padding-left: 15px;
+  clear: both;
+}
+span.twitter-typeahead .tt-suggestion {
+  display: block;
+  padding: 3px 15px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333333;
+}
+span.twitter-typeahead .tt-suggestion.tt-cursor,
+span.twitter-typeahead .tt-suggestion:hover,
+span.twitter-typeahead .tt-suggestion:focus {
+  color: #ffffff;
+  text-decoration: none;
+  outline: 0;
+  background-color: #337ab7;
+}
+.input-group.input-group-lg span.twitter-typeahead .form-control {
+  height: 46px;
+  padding: 10px 16px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.input-group.input-group-sm span.twitter-typeahead .form-control {
+  height: 30px;
+  padding: 5px 10px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+span.twitter-typeahead {
+  width: 100%;
+}
+.input-group span.twitter-typeahead {
+  display: block !important;
+  height: 34px;
+}
+.input-group span.twitter-typeahead .tt-menu,
+.input-group span.twitter-typeahead .tt-dropdown-menu {
+  top: 32px !important;
+}
+.input-group span.twitter-typeahead:not(:first-child):not(:last-child) .form-control {
+  border-radius: 0;
+}
+.input-group span.twitter-typeahead:first-child .form-control {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group span.twitter-typeahead:last-child .form-control {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.input-group.input-group-sm span.twitter-typeahead {
+  height: 30px;
+}
+.input-group.input-group-sm span.twitter-typeahead .tt-menu,
+.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu {
+  top: 30px !important;
+}
+.input-group.input-group-lg span.twitter-typeahead {
+  height: 46px;
+}
+.input-group.input-group-lg span.twitter-typeahead .tt-menu,
+.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu {
+  top: 46px !important;
+}
+</style>
+<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/jquery-1.11.1.min.js"></script>
+<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/typeahead.bundle.min.js"></script>
+<script>
+(function () {
+  var names = [];
+  document.querySelectorAll('.examples li > a').forEach(function (s) {
+    names.push(s.innerHTML);
+  });
+  var engine = new Bloodhound({
+    datumTokenizer: Bloodhound.tokenizers.nonword,
+    queryTokenizer: Bloodhound.tokenizers.nonword,
+    local: names
+  });
+  var input = jQuery('#example-search');
+  input.typeahead({ minLength: 1, highlight: true }, {
+    name: 'Examples',
+    source: engine,
+    templates: {
+      suggestion: function (item) {
+        return '<a href="' + item + '.html">' + item + '</a>';
+      }
+    }
+  });
+  input.bind('typeahead:select', function (evt, item) {
+    jQuery('li > a[href="' + item + '.html"]').click();
+  });
+})();
+
+</script>
+
+<%include "footer.gsp"%>
+
diff --git a/src/main/jbake/templates/feed.gsp b/src/main/jbake/templates/feed.gsp
new file mode 100755
index 0000000..5b71c59
--- /dev/null
+++ b/src/main/jbake/templates/feed.gsp
@@ -0,0 +1,25 @@
+<% import static groovy.xml.XmlUtil.escapeXml %><?xml version="1.0"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+  <channel>
+    <title>JBake</title>
+    <link>${config.site_host}</link>
+    <atom:link href="${config.site_host}/${config.feed_file}" rel="self" type="application/rss+xml" />
+    <description>JBake Bootstrap Template</description>
+    <language>en-gb</language>
+    <pubDate>${published_date.format("EEE, d MMM yyyy HH:mm:ss Z")}</pubDate>
+    <lastBuildDate>${published_date.format("EEE, d MMM yyyy HH:mm:ss Z")}</lastBuildDate>
+
+    <%published_posts.each {post -> %>
+    <item>
+      <title>${post.title}</title>
+      <link>${config.site_host}/${post.uri}</link>
+      <pubDate>${post.date.format("EEE, d MMM yyyy HH:mm:ss Z")}</pubDate>
+      <guid isPermaLink="false">${post.uri}</guid>
+      <description>
+      ${escapeXml(post.body)}
+	  </description>
+    </item>
+    <%}%>
+
+  </channel> 
+</rss>
diff --git a/src/main/jbake/templates/footer.gsp b/src/main/jbake/templates/footer.gsp
new file mode 100755
index 0000000..2c24dc9
--- /dev/null
+++ b/src/main/jbake/templates/footer.gsp
@@ -0,0 +1,80 @@
+<footer>
+		<div class="container">
+			<div class="row">
+				<div class="col-sm-6 text-center-mobile">
+					<h3 class="white">Apache TomEE the little great server.</h3>
+					<h5 class="light regular light-white">"A good application in a good server"</h5>
+					<ul class="social-footer">
+						<li><a href="https://fr-fr.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li>
+						<li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
+						<li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li>
+					</ul>
+				</div>
+				<div class="col-sm-6 text-center-mobile">
+					<div class="row opening-hours">
+						<div class="col-sm-3 text-center-mobile">
+							<h5><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>admin/index.html" class="white">Administration</a></h5>
+							<ul class="list-unstyled">
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>admin/cluster/index.html" class="regular light-white">Cluster</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>admin/configuration/index.html" class="regular light-white">Configuration</a></li>
+							</ul>
+						</div>
+						<div class="col-sm-3 text-center-mobile">
+							<h5><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>developer/index.html" class="white">Developer</a></h5>
+							<ul class="list-unstyled">
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>developer/classloading/index.html" class="regular light-white">Classloading</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>developer/ide/index.html" class="regular light-white">IDE</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>developer/testing/index.html" class="regular light-white">Testing</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>developer/tools/index.html" class="regular light-white">Tools</a></li>
+							</ul>
+						</div>
+						<div class="col-sm-3 text-center-mobile">
+							<h5><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>advanced/index.html" class="white">Advanced</a></h5>
+							<ul class="list-unstyled">
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>advanced/applicationcomposer/index.html" class="regular light-white">Application Composer</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>advanced/setup/index.html" class="regular light-white">Setup</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>advanced/shading/index.html" class="regular light-white">Shading</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>advanced/tomee-embedded/index.html" class="regular light-white">TomEE Embedded</a></li>
+							</ul>
+						</div>
+						<div class="col-sm-3 text-center-mobile">
+							<h5><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>community/index.html" class="white">Community</a></h5>
+							<ul class="list-unstyled">
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>community/contributors.html" class="regular light-white">Contributors</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>community/social.html" class="regular light-white">Social</a></li>
+								<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>community/sources.html" class="regular light-white">Sources</a></li>
+							</ul>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="row bottom-footer text-center-mobile">
+				<div class="col-sm-12 light-white">
+					<p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
+				</div>
+			</div>
+		</div>
+	</footer>
+	<!-- Holder for mobile navigation -->
+	<div class="mobile-nav">
+        <ul>
+          <li><a hef="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>admin/index.html">Administrators</a>
+          <li><a hef="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>developer/index.html">Developers</a>
+          <li><a hef="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>advanced/index.html">Advanced</a>
+          <li><a hef="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>community/index.html">Community</a>
+        </ul>
+		<a href="#" class="close-link"><i class="arrow_up"></i></a>
+	</div>
+	<!-- Scripts -->
+	<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/jquery-1.11.1.min.js"></script>
+	<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/owl.carousel.min.js"></script>
+	<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/bootstrap.min.js"></script>
+	<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/wow.min.js"></script>
+	<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/typewriter.js"></script>
+	<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/jquery.onepagenav.js"></script>
+	<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/tree.jquery.js"></script>
+	<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/highlight.pack.js"></script>
+    <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>js/main.js"></script>
+		</body>
+
+</html>
diff --git a/src/main/jbake/templates/header.gsp b/src/main/jbake/templates/header.gsp
new file mode 100755
index 0000000..649d759
--- /dev/null
+++ b/src/main/jbake/templates/header.gsp
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<title>Apache TomEE</title>
+	<meta name="description" content="Apache TomEE is a light JavaEE server with a lot tooling" />
+	<meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" />
+	<meta name="author" content="Luka Cvetinovic for Codrops" />
+	<link rel="icon" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>favicon.ico">
+	<link rel="icon"  type="image/png" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>favicon.png">
+	<meta name="msapplication-TileColor" content="#80287a">
+	<meta name="theme-color" content="#80287a">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/normalize.css">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/bootstrap.css">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/owl.css">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/animate.css">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>fonts/font-awesome-4.1.0/css/font-awesome.min.css">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>fonts/eleganticons/et-icons.css">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/jqtree.css">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/idea.css">
+	<link rel="stylesheet" type="text/css" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>css/cardio.css">
+
+	<script type="text/javascript">
+
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-2717626-1']);
+      _gaq.push(['_setDomainName', 'apache.org']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+
+    </script>
+</head>
+
+<body>
+    <div class="preloader">
+		<img src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>img/loader.gif" alt="Preloader image">
+	</div>
\ No newline at end of file
diff --git a/src/main/jbake/templates/index.gsp b/src/main/jbake/templates/index.gsp
new file mode 100755
index 0000000..3933987
--- /dev/null
+++ b/src/main/jbake/templates/index.gsp
@@ -0,0 +1,57 @@
+<%include "header.gsp"%>
+	<%include "menu.gsp"%>
+  <div id="main-block">
+    <header id="intro">
+        <div class="container">
+            <div class="table">
+                <div class="header-text">
+                    <div class="row">
+                        <div class="col-md-12 text-center index-title">
+                            Apache TomEE
+                        </div>
+                        <div class="col-md-12 text-center">
+                            <h2 class="white typed">The Embedded or Remote EE Application Server</h2>
+                            <span class="typed-cursor">|</span>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </header>
+
+    <section>
+		<div class="cut cut-top" style="border-right-width: 1899px;"></div>
+		<div class="container">
+			<div class="row intro-tables animated fadeInUp" style="opacity: 0;">
+				<div class="col-md-4">
+				    <div class="intro-table intro-table1 intro-table-hover1 intro-table-hover">
+                        <h5 class="white heading hide-hover">TomEE for administrators</h5>
+                        <div class="bottom">
+                            <h4 class="white heading small-heading no-margin regular">I'm an admin</h4>
+                            <a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>admin/index.html" class="btn btn-white-fill expand">Learn more...</a>
+                        </div>
+                    </div>
+				</div>
+				<div class="col-md-4">
+					<div class="intro-table intro-table2 intro-table-hover2 intro-table-hover">
+						<h5 class="white heading hide-hover">TomEE for developers</h5>
+						<div class="bottom">
+							<h4 class="white heading small-heading no-margin regular">I'm a developer</h4>
+							<a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>developer/index.html" class="btn btn-white-fill expand">Learn more...</a>
+						</div>
+					</div>
+				</div>
+				<div class="col-md-4">
+                    <div class="intro-table intro-table3 intro-table-hover3 intro-table-hover">
+                        <h5 class="white heading hide-hover">Advanced usages</h5>
+                        <div class="bottom">
+                            <h4 class="white heading small-heading no-margin regular">Too easy, let's go further</h4>
+                            <a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>advanced/index.html" class="btn btn-white-fill expand">Learn more...</a>
+                        </div>
+                    </div>
+				</div>
+			</div>
+		</div>
+	</section>
+  </div>
+<%include "footer.gsp"%>
diff --git a/src/main/jbake/templates/menu.gsp b/src/main/jbake/templates/menu.gsp
new file mode 100755
index 0000000..0fe2ae3
--- /dev/null
+++ b/src/main/jbake/templates/menu.gsp
@@ -0,0 +1,42 @@
+    <nav class="navbar">
+		<div class="container">
+			<!-- Brand and toggle get grouped for better mobile display -->
+			<div class="navbar-header">
+				<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+					<span class="sr-only">Toggle navigation</span>
+					<span class="icon-bar"></span>
+					<span class="icon-bar"></span>
+					<span class="icon-bar"></span>
+				</button>
+				<a class="navbar-brand" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>/#">
+				    <span>
+
+				    <% if (content.uri && content.uri == '/index.html') { %>
+				        <img
+                            src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>img/logo.png"
+                            data-active-url="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>img/logo-active.png">
+                    <% } else { %>
+                        <img src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>img/logo-active.png">
+                    <% } %>
+
+                    </span>
+				    Apache TomEE
+                </a>
+			</div>
+			<!-- Collect the nav links, forms, and other content for toggling -->
+			<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+				<ul class="nav navbar-nav navbar-right main-nav">
+					<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>developer/index.html">Developer</a></li>
+					<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>admin/index.html">Admin</a></li>
+					<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>advanced/index.html">Advanced</a></li>
+					<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>security/index.html">Security</a></li>
+					<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>examples/index-ng.html">Examples</a></li>
+					<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>blog/index.html">Blog</a></li>
+					<li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>community/index.html">Community</a></li>
+                    <li><a href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>download-ng.html">Downloads</a></li>
+				</ul>
+			</div>
+			<!-- /.navbar-collapse -->
+		</div>
+		<!-- /.container-fluid -->
+	</nav>
diff --git a/src/main/jbake/templates/page.gsp b/src/main/jbake/templates/page.gsp
new file mode 100755
index 0000000..b0c64d3
--- /dev/null
+++ b/src/main/jbake/templates/page.gsp
@@ -0,0 +1,25 @@
+<%include "header.gsp"%>
+	<%include "menu.gsp"%>
+
+    <div id="main-block" class="container section-padded">
+        <div class="row title">
+            <div class='page-header'>
+              <%if (content.containsKey('tomeepdf')) {%>
+              <div class='btn-toolbar pull-right' style="z-index: 2000;">
+                <div class='btn-group'>
+                    <a class="btn" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>${content.uri.replace('html', 'pdf')}"><i class="fa fa-file-pdf-o"></i> Download as PDF</a>
+                </div>
+              </div>
+              <% } %>
+              <h2>${content.title}</h2>
+            </div>
+        </div>
+        <div class="row">
+            <%if (content.body) {%>
+            <div class="col-md-12">
+                ${content.body}
+            </div>
+            <% } %>
+        </div>
+    </div>
+<%include "footer.gsp"%>
diff --git a/src/main/jbake/templates/post.gsp b/src/main/jbake/templates/post.gsp
new file mode 100755
index 0000000..2a89939
--- /dev/null
+++ b/src/main/jbake/templates/post.gsp
@@ -0,0 +1,25 @@
+<%include "header.gsp"%>
+	
+	<%include "menu.gsp"%>
+	<div id="main-block" class="container section-padded">
+        <div class="row title">
+            <div class='page-header'>
+              <%if (content.containsKey('tomeepdf')) {%>
+              <div class='btn-toolbar pull-right'>
+                <div class='btn-group'>
+                    <a class="btn" href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% }%>${content.uri.replace('html', 'pdf')}"><i class="fa fa-file-pdf-o"></i> Download as PDF</a>
+                </div>
+              </div>
+              <% } %>
+              <h2>${content.title}</h2>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-12">
+                <%if (content.date) {%><p><em>${content.date}</em></p><% } %>
+
+                ${content.body}
+            </div>
+        </div>
+    </div>
+<%include "footer.gsp"%>
diff --git a/src/main/jbake/templates/sitemap.gsp b/src/main/jbake/templates/sitemap.gsp
new file mode 100755
index 0000000..469e8c3
--- /dev/null
+++ b/src/main/jbake/templates/sitemap.gsp
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
+<%published_content.each {content -> %>
+    <url>
+    	<loc>http://tomee.apache.org/${content.uri}</loc>
+    	<% if (content.date) {%><lastmod>${content.date}</lastmod><% }%>
+    </url>
+<%}%>
+</urlset>
diff --git a/src/main/jbake/templates/tags.gsp b/src/main/jbake/templates/tags.gsp
new file mode 100755
index 0000000..659b803
--- /dev/null
+++ b/src/main/jbake/templates/tags.gsp
@@ -0,0 +1,38 @@
+<%include "header.gsp"%>
+
+	<%include "menu.gsp"%>
+
+	<div id="main-block">
+	<div class="page-header">
+		<div class="container">
+			<div class="row">
+				<div class="col-sm-12">
+					<h1>Tag: ${tag}</h1>
+				</div>
+			</div>
+		</div>
+	</div>
+
+	<div class="container">
+	<!--<ul>-->
+		<%def last_month=null;%>
+		<%tag_posts.each {post ->%>
+		<%if (last_month) {%>
+			<%if (post.date.format("MMMM yyyy") != last_month) {%>
+				</ul>
+				<h4>${post.date.format("MMMM yyyy")}</h4>
+				<ul>
+			<%}%>
+		<%} else {%>
+			<h4>${post.date.format("MMMM yyyy")}</h4>
+			<ul>
+		<%}%>
+		
+		<li>${post.date.format("dd")} - <a href="${post.uri}">${post.title}</a></li>
+		<% last_month = post.date.format("MMMM yyyy")%>
+		<%}%>
+	</ul>
+	</div>
+	</div>
+	
+<%include "footer.gsp"%>
\ No newline at end of file