CCVPN-usecase(REQ-719) requirements: update and revise CCVPN-NETWORK module to suppor... 56/124656/1
authord00565011 <decheng.zhang@huawei.com>
Tue, 17 Aug 2021 13:55:00 +0000 (09:55 -0400)
committerdecheng zhang <decheng.zhang@huawei.com>
Fri, 1 Oct 2021 17:41:14 +0000 (13:41 -0400)
ccvpn profile. Also, correct the line separator to linux format, to resolve the docker compiling issue.

Issue-ID: USECASEUI-606
Signed-off-by: decheng zhang <decheng.zhang@huawei.com>
Change-Id: I97c0155fe64072fcd147737e72171b975dc3fa1b

15 files changed:
distribution/pom.xml
distribution/src/main/assembly/server.xml
distribution/src/main/assembly/web.xml
usecaseui-portal/src/app/app.module.ts
usecaseui-portal/src/app/core/services/appEvent.ts [new file with mode: 0644]
usecaseui-portal/src/app/core/services/appEventType.ts [new file with mode: 0644]
usecaseui-portal/src/app/core/services/eventQueue.service.ts [new file with mode: 0644]
usecaseui-portal/src/app/core/services/networkHttpservice.service.ts
usecaseui-portal/src/app/mock/json/uui-sotn_getConnectivityInfo.json
usecaseui-portal/src/app/mock/json/uui-sotn_getLogicalLinks.json
usecaseui-portal/src/app/views/network/ccvpn-network/ccvpn-network.component.css
usecaseui-portal/src/app/views/network/ccvpn-network/ccvpn-network.component.html
usecaseui-portal/src/app/views/network/ccvpn-network/ccvpn-network.component.ts
usecaseui-portal/src/assets/i18n/cn.json
usecaseui-portal/src/assets/i18n/en.json

index 17db2cd..9a38310 100644 (file)
@@ -34,6 +34,7 @@
         <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
         <linux64outputdir>target/assembly/linux64</linux64outputdir>
         <dockeroutput>target/version/${usecaseui.version}</dockeroutput>
+        <docker.push.registry>localhost:5000</docker.push.registry>
     </properties>
 
     <build>
                         <configuration>
                             <images>
                                 <image>
-                                    <name>onap/usecase-ui</name>
+                                    <name>${docker.push.registry}/onap/usecase-ui</name>
                                     <build>
                                         <cleanup>try</cleanup>
                                         <dockerFileDir>${basedir}/${dockeroutput}</dockerFileDir>
index 69683fb..c3b10e5 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--\r
-  Licensed to the Apache Software Foundation (ASF) under one or more\r
-  contributor license agreements.  See the NOTICE file distributed with\r
-  this work for additional information regarding copyright ownership.\r
-  The ASF licenses this file to You under the Apache License, Version 2.0\r
-  (the "License"); you may not use this file except in compliance with\r
-  the License.  You may obtain a copy of the License at\r
-\r
-      http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-  Unless required by applicable law or agreed to in writing, software\r
-  distributed under the License is distributed on an "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-  See the License for the specific language governing permissions and\r
-  limitations under the License.\r
--->\r
-<!-- Note:  A "Server" is not itself a "Container", so you may not\r
-     define subcomponents such as "Valves" at this level.\r
-     Documentation at /docs/config/server.html\r
- -->\r\r
-\r
-<Server port="8005" shutdown="SHUTDOWN">\r
-  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />\r
-  <!-- Security listener. Documentation at /docs/config/listeners.html\r
-  <Listener className="org.apache.catalina.security.SecurityListener" />\r
-  -->\r
-  <!--APR library loader. Documentation at /docs/apr.html -->\r
-  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />\r
-  <!-- Prevent memory leaks due to use of particular java/javax APIs-->\r
-  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />\r
-  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />\r
-  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />\r
-\r
-  <!-- Global JNDI resources\r
-       Documentation at /docs/jndi-resources-howto.html\r
-  -->\r
-  <GlobalNamingResources>\r
-    <!-- Editable user database that can also be used by\r
-         UserDatabaseRealm to authenticate users\r
-    -->\r
-    <Resource name="UserDatabase" auth="Container"\r
-              type="org.apache.catalina.UserDatabase"\r
-              description="User database that can be updated and saved"\r
-              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"\r
-              pathname="conf/tomcat-users.xml" />\r
-  </GlobalNamingResources>\r
-\r
-  <!-- A "Service" is a collection of one or more "Connectors" that share\r
-       a single "Container" Note:  A "Service" is not itself a "Container",\r
-       so you may not define subcomponents such as "Valves" at this level.\r
-       Documentation at /docs/config/service.html\r
-   -->\r
-  <Service name="Catalina">\r
-\r
-    <!--The connectors can use a shared executor, you can define one or more named thread pools-->\r
-    <!--\r
-    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"\r
-        maxThreads="150" minSpareThreads="4"/>\r
-    -->\r
-\r
-\r
-    <!-- A "Connector" represents an endpoint by which requests are received\r
-         and responses are returned. Documentation at :\r
-         Java HTTP Connector: /docs/config/http.html\r
-         Java AJP  Connector: /docs/config/ajp.html\r
-         APR (HTTP/AJP) Connector: /docs/apr.html\r
-         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080\r
-    -->\r
-    <!--Connector port="8080" protocol="HTTP/1.1"\r
-               connectionTimeout="20000"\r
-               redirectPort="8443" />\r
-    -->\r
-<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"\r
-               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"\r
-               clientAuth="false" sslProtocol="TLS" keystoreFile="conf/uuiServer.jks" keystorePass="Aa123456" />\r
-\r
-<!-- A "Connector" using the shared thread pool-->\r
-    <!--\r
-    <Connector executor="tomcatThreadPool"\r
-               port="8080" protocol="HTTP/1.1"\r
-               connectionTimeout="20000"\r
-               redirectPort="8443" />\r
-    -->\r
-    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443\r
-         This connector uses the NIO implementation. The default\r
-         SSLImplementation will depend on the presence of the APR/native\r
-         library and the useOpenSSL attribute of the\r
-         AprLifecycleListener.\r
-         Either JSSE or OpenSSL style configuration may be used regardless of\r
-         the SSLImplementation selected. JSSE style configuration is used below.\r
-    -->\r
-    <!--\r
-    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"\r
-               maxThreads="150" SSLEnabled="true">\r
-        <SSLHostConfig>\r
-            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"\r
-                         type="RSA" />\r
-        </SSLHostConfig>\r
-    </Connector>\r
-    -->\r
-    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2\r
-         This connector uses the APR/native implementation which always uses\r
-         OpenSSL for TLS.\r
-         Either JSSE or OpenSSL style configuration may be used. OpenSSL style\r
-         configuration is used below.\r
-    -->\r
-    <!--\r
-    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"\r
-               maxThreads="150" SSLEnabled="true" >\r
-        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />\r
-        <SSLHostConfig>\r
-            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"\r
-                         certificateFile="conf/localhost-rsa-cert.pem"\r
-                         certificateChainFile="conf/localhost-rsa-chain.pem"\r
-                         type="RSA" />\r
-        </SSLHostConfig>\r
-    </Connector>\r
-    -->\r
-\r
-    <!-- Define an AJP 1.3 Connector on port 8009 -->\r
-    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />\r
-\r
-\r
-    <!-- An Engine represents the entry point (within Catalina) that processes\r
-         every request.  The Engine implementation for Tomcat stand alone\r
-         analyzes the HTTP headers included with the request, and passes them\r
-         on to the appropriate Host (virtual host).\r
-         Documentation at /docs/config/engine.html -->\r
-\r
-    <!-- You should set jvmRoute to support load-balancing via AJP ie :\r
-    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">\r
-    -->\r
-    <Engine name="Catalina" defaultHost="localhost">\r
-\r
-      <!--For clustering, please take a look at documentation at:\r
-          /docs/cluster-howto.html  (simple how to)\r
-          /docs/config/cluster.html (reference documentation) -->\r
-      <!--\r
-      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>\r
-      -->\r
-\r
-      <!-- Use the LockOutRealm to prevent attempts to guess user passwords\r
-           via a brute-force attack -->\r
-      <Realm className="org.apache.catalina.realm.LockOutRealm">\r
-        <!-- This Realm uses the UserDatabase configured in the global JNDI\r
-             resources under the key "UserDatabase".  Any edits\r
-             that are performed against this UserDatabase are immediately\r
-             available for use by the Realm.  -->\r
-        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"\r
-               resourceName="UserDatabase"/>\r
-      </Realm>\r
-\r
-      <Host name="localhost"  appBase="webapps"\r
-            unpackWARs="true" autoDeploy="true">\r
-\r
-        <!-- SingleSignOn valve, share authentication between web applications\r
-             Documentation at: /docs/config/valve.html -->\r
-        <!--\r
-        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />\r
-        -->\r
-\r
-        <!-- Access log processes all example.\r
-             Documentation at: /docs/config/valve.html\r
-             Note: The pattern used is equivalent to using pattern="common" -->\r
-        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"\r
-               prefix="localhost_access_log" suffix=".txt"\r
-               pattern="%h %l %u %t &quot;%r&quot; %s %b" />\r
-\r
-      </Host>\r
-    </Engine>\r
-  </Service>\r
-</Server>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<!-- Note:  A "Server" is not itself a "Container", so you may not
+     define subcomponents such as "Valves" at this level.
+     Documentation at /docs/config/server.html
+ -->
+
+
+<Server port="8005" shutdown="SHUTDOWN">
+  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
+  <!-- Security listener. Documentation at /docs/config/listeners.html
+  <Listener className="org.apache.catalina.security.SecurityListener" />
+  -->
+  <!--APR library loader. Documentation at /docs/apr.html -->
+  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+  <!-- Global JNDI resources
+       Documentation at /docs/jndi-resources-howto.html
+  -->
+  <GlobalNamingResources>
+    <!-- Editable user database that can also be used by
+         UserDatabaseRealm to authenticate users
+    -->
+    <Resource name="UserDatabase" auth="Container"
+              type="org.apache.catalina.UserDatabase"
+              description="User database that can be updated and saved"
+              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+              pathname="conf/tomcat-users.xml" />
+  </GlobalNamingResources>
+
+  <!-- A "Service" is a collection of one or more "Connectors" that share
+       a single "Container" Note:  A "Service" is not itself a "Container",
+       so you may not define subcomponents such as "Valves" at this level.
+       Documentation at /docs/config/service.html
+   -->
+  <Service name="Catalina">
+
+    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
+    <!--
+    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
+        maxThreads="150" minSpareThreads="4"/>
+    -->
+
+
+    <!-- A "Connector" represents an endpoint by which requests are received
+         and responses are returned. Documentation at :
+         Java HTTP Connector: /docs/config/http.html
+         Java AJP  Connector: /docs/config/ajp.html
+         APR (HTTP/AJP) Connector: /docs/apr.html
+         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
+    -->
+    <!--Connector port="8080" protocol="HTTP/1.1"
+               connectionTimeout="20000"
+               redirectPort="8443" />
+    -->
+<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
+               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
+               clientAuth="false" sslProtocol="TLS" keystoreFile="conf/uuiServer.jks" keystorePass="Aa123456" />
+
+<!-- A "Connector" using the shared thread pool-->
+    <!--
+    <Connector executor="tomcatThreadPool"
+               port="8080" protocol="HTTP/1.1"
+               connectionTimeout="20000"
+               redirectPort="8443" />
+    -->
+    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
+         This connector uses the NIO implementation. The default
+         SSLImplementation will depend on the presence of the APR/native
+         library and the useOpenSSL attribute of the
+         AprLifecycleListener.
+         Either JSSE or OpenSSL style configuration may be used regardless of
+         the SSLImplementation selected. JSSE style configuration is used below.
+    -->
+    <!--
+    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
+               maxThreads="150" SSLEnabled="true">
+        <SSLHostConfig>
+            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
+                         type="RSA" />
+        </SSLHostConfig>
+    </Connector>
+    -->
+    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
+         This connector uses the APR/native implementation which always uses
+         OpenSSL for TLS.
+         Either JSSE or OpenSSL style configuration may be used. OpenSSL style
+         configuration is used below.
+    -->
+    <!--
+    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
+               maxThreads="150" SSLEnabled="true" >
+        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
+        <SSLHostConfig>
+            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
+                         certificateFile="conf/localhost-rsa-cert.pem"
+                         certificateChainFile="conf/localhost-rsa-chain.pem"
+                         type="RSA" />
+        </SSLHostConfig>
+    </Connector>
+    -->
+
+    <!-- Define an AJP 1.3 Connector on port 8009 -->
+    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
+
+
+    <!-- An Engine represents the entry point (within Catalina) that processes
+         every request.  The Engine implementation for Tomcat stand alone
+         analyzes the HTTP headers included with the request, and passes them
+         on to the appropriate Host (virtual host).
+         Documentation at /docs/config/engine.html -->
+
+    <!-- You should set jvmRoute to support load-balancing via AJP ie :
+    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
+    -->
+    <Engine name="Catalina" defaultHost="localhost">
+
+      <!--For clustering, please take a look at documentation at:
+          /docs/cluster-howto.html  (simple how to)
+          /docs/config/cluster.html (reference documentation) -->
+      <!--
+      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
+      -->
+
+      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+           via a brute-force attack -->
+      <Realm className="org.apache.catalina.realm.LockOutRealm">
+        <!-- This Realm uses the UserDatabase configured in the global JNDI
+             resources under the key "UserDatabase".  Any edits
+             that are performed against this UserDatabase are immediately
+             available for use by the Realm.  -->
+        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+               resourceName="UserDatabase"/>
+      </Realm>
+
+      <Host name="localhost"  appBase="webapps"
+            unpackWARs="true" autoDeploy="true">
+
+        <!-- SingleSignOn valve, share authentication between web applications
+             Documentation at: /docs/config/valve.html -->
+        <!--
+        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
+        -->
+
+        <!-- Access log processes all example.
+             Documentation at: /docs/config/valve.html
+             Note: The pattern used is equivalent to using pattern="common" -->
+        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
+               prefix="localhost_access_log" suffix=".txt"
+               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
+
+      </Host>
+    </Engine>
+  </Service>
+</Server>
index a292a59..2516289 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--\r
-  Licensed to the Apache Software Foundation (ASF) under one or more\r
-  contributor license agreements.  See the NOTICE file distributed with\r
-  this work for additional information regarding copyright ownership.\r
-  The ASF licenses this file to You under the Apache License, Version 2.0\r
-  (the "License"); you may not use this file except in compliance with\r
-  the License.  You may obtain a copy of the License at\r
-\r
-      http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-  Unless required by applicable law or agreed to in writing, software\r
-  distributed under the License is distributed on an "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-  See the License for the specific language governing permissions and\r
-  limitations under the License.\r
--->\r
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"\r
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee\r
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"\r
-  version="4.0">\r
-\r
-  <!-- ======================== Introduction ============================== -->\r
-  <!-- This document defines default values for *all* web applications      -->\r
-  <!-- loaded into this instance of Tomcat.  As each application is         -->\r
-  <!-- deployed, this file is processed, followed by the                    -->\r
-  <!-- "/WEB-INF/web.xml" deployment descriptor from your own               -->\r
-  <!-- applications.                                                        -->\r
-  <!--                                                                      -->\r
-  <!-- WARNING:  Do not configure application-specific resources here!      -->\r
-  <!-- They should go in the "/WEB-INF/web.xml" file in your application.   -->\r
-\r
-\r
-  <!-- ================== Built In Servlet Definitions ==================== -->\r
-\r
-\r
-  <!-- The default servlet for all web applications, that serves static     -->\r
-  <!-- resources.  It processes all requests that are not mapped to other   -->\r
-  <!-- servlets with servlet mappings (defined either here or in your own   -->\r
-  <!-- web.xml file).  This servlet supports the following initialization   -->\r
-  <!-- parameters (default values are in square brackets):                  -->\r
-  <!--                                                                      -->\r
-  <!--   debug               Debugging detail level for messages logged     -->\r
-  <!--                       by this servlet. Useful values are 0, 1, and   -->\r
-  <!--                       11 where higher values mean more detail. [0]   -->\r
-  <!--                                                                      -->\r
-  <!--   fileEncoding        Encoding to be used to read static resources   -->\r
-  <!--                       [platform default]                             -->\r
-  <!--                                                                      -->\r
-  <!--   useBomIfPresent     If a static file contains a byte order mark    -->\r
-  <!--                       (BOM), should this be used to determine the    -->\r
-  <!--                       file encoding in preference to fileEncoding.   -->\r
-  <!--                       [true]                                         -->\r
-  <!--                                                                      -->\r
-  <!--   input               Input buffer size (in bytes) when reading      -->\r
-  <!--                       resources to be served.  [2048]                -->\r
-  <!--                                                                      -->\r
-  <!--   listings            Should directory listings be produced if there -->\r
-  <!--                       is no welcome file in this directory?  [false] -->\r
-  <!--                       WARNING: Listings for directories with many    -->\r
-  <!--                       entries can be slow and may consume            -->\r
-  <!--                       significant proportions of server resources.   -->\r
-  <!--                                                                      -->\r
-  <!--   output              Output buffer size (in bytes) when writing     -->\r
-  <!--                       resources to be served.  [2048]                -->\r
-  <!--                                                                      -->\r
-  <!--   readonly            Is this context "read only", so HTTP           -->\r
-  <!--                       commands like PUT and DELETE are               -->\r
-  <!--                       rejected?  [true]                              -->\r
-  <!--                                                                      -->\r
-  <!--   readmeFile          File to display together with the directory    -->\r
-  <!--                       contents. [null]                               -->\r
-  <!--                                                                      -->\r
-  <!--   sendfileSize        If the connector used supports sendfile, this  -->\r
-  <!--                       represents the minimal file size in KB for     -->\r
-  <!--                       which sendfile will be used. Use a negative    -->\r
-  <!--                       value to always disable sendfile.  [48]        -->\r
-  <!--                                                                      -->\r
-  <!--   useAcceptRanges     Should the Accept-Ranges header be included    -->\r
-  <!--                       in responses where appropriate? [true]         -->\r
-  <!--                                                                      -->\r
-  <!--  For directory listing customization. Checks localXsltFile, then     -->\r
-  <!--  globalXsltFile, then defaults to original behavior.                 -->\r
-  <!--                                                                      -->\r
-  <!--   localXsltFile       Make directory listings an XML doc and         -->\r
-  <!--                       pass the result to this style sheet residing   -->\r
-  <!--                       in that directory. This overrides              -->\r
-  <!--                       contextXsltFile and globalXsltFile[null]       -->\r
-  <!--                                                                      -->\r
-  <!--   contextXsltFile     Make directory listings an XML doc and         -->\r
-  <!--                       pass the result to this style sheet which is   -->\r
-  <!--                       relative to the context root. This overrides   -->\r
-  <!--                       globalXsltFile[null]                           -->\r
-  <!--                                                                      -->\r
-  <!--   globalXsltFile      Site wide configuration version of             -->\r
-  <!--                       localXsltFile. This argument must either be an -->\r
-  <!--                       absolute or relative (to either                -->\r
-  <!--                       $CATALINA_BASE/conf or $CATALINA_HOME/conf)    -->\r
-  <!--                       path that points to a location below either    -->\r
-  <!--                       $CATALINA_BASE/conf (checked first) or         -->\r
-  <!--                       $CATALINA_HOME/conf (checked second).[null]    -->\r
-  <!--                                                                      -->\r
-  <!--   showServerInfo      Should server information be presented in the  -->\r
-  <!--                       response sent to clients when directory        -->\r
-  <!--                       listings is enabled? [true]                    -->\r
-\r
-    <servlet>\r
-        <servlet-name>default</servlet-name>\r
-        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>\r
-        <init-param>\r
-            <param-name>debug</param-name>\r
-            <param-value>0</param-value>\r
-        </init-param>\r
-        <init-param>\r
-            <param-name>listings</param-name>\r
-            <param-value>false</param-value>\r
-        </init-param>\r
-        <load-on-startup>1</load-on-startup>\r
-    </servlet>\r
-\r
-\r
-  <!-- The JSP page compiler and execution servlet, which is the mechanism  -->\r
-  <!-- used by Tomcat to support JSP pages.  Traditionally, this servlet    -->\r
-  <!-- is mapped to the URL pattern "*.jsp".  This servlet supports the     -->\r
-  <!-- following initialization parameters (default values are in square    -->\r
-  <!-- brackets):                                                           -->\r
-  <!--                                                                      -->\r
-  <!--   checkInterval       If development is false and checkInterval is   -->\r
-  <!--                       greater than zero, background compilations are -->\r
-  <!--                       enabled. checkInterval is the time in seconds  -->\r
-  <!--                       between checks to see if a JSP page (and its   -->\r
-  <!--                       dependent files) needs to  be recompiled. [0]  -->\r
-  <!--                                                                      -->\r
-  <!--   classdebuginfo      Should the class file be compiled with         -->\r
-  <!--                       debugging information?  [true]                 -->\r
-  <!--                                                                      -->\r
-  <!--   classpath           What class path should I use while compiling   -->\r
-  <!--                       generated servlets?  [Created dynamically      -->\r
-  <!--                       based on the current web application]          -->\r
-  <!--                                                                      -->\r
-  <!--   compiler            Which compiler Ant should use to compile JSP   -->\r
-  <!--                       pages.  See the jasper documentation for more  -->\r
-  <!--                       information.                                   -->\r
-  <!--                                                                      -->\r
-  <!--   compilerSourceVM    Compiler source VM. [1.8]                      -->\r
-  <!--                                                                      -->\r
-  <!--   compilerTargetVM    Compiler target VM. [1.8]                      -->\r
-  <!--                                                                      -->\r
-  <!--   development         Is Jasper used in development mode? If true,   -->\r
-  <!--                       the frequency at which JSPs are checked for    -->\r
-  <!--                       modification may be specified via the          -->\r
-  <!--                       modificationTestInterval parameter. [true]     -->\r
-  <!--                                                                      -->\r
-  <!--   displaySourceFragment                                              -->\r
-  <!--                       Should a source fragment be included in        -->\r
-  <!--                       exception messages? [true]                     -->\r
-  <!--                                                                      -->\r
-  <!--   dumpSmap            Should the SMAP info for JSR45 debugging be    -->\r
-  <!--                       dumped to a file? [false]                      -->\r
-  <!--                       False if suppressSmap is true                  -->\r
-  <!--                                                                      -->\r
-  <!--   enablePooling       Determines whether tag handler pooling is      -->\r
-  <!--                       enabled. This is a compilation option. It will -->\r
-  <!--                       not alter the behaviour of JSPs that have      -->\r
-  <!--                       already been compiled. [true]                  -->\r
-  <!--                                                                      -->\r
-  <!--   engineOptionsClass  Allows specifying the Options class used to    -->\r
-  <!--                       configure Jasper. If not present, the default  -->\r
-  <!--                       EmbeddedServletOptions will be used.           -->\r
-  <!--                       This option is ignored when running under a    -->\r
-  <!--                       SecurityManager.                               -->\r
-  <!--                                                                      -->\r
-  <!--   errorOnUseBeanInvalidClassAttribute                                -->\r
-  <!--                       Should Jasper issue an error when the value of -->\r\r
-  <!--                       the class attribute in an useBean action is    -->\r
-  <!--                       not a valid bean class?  [true]                -->\r
-  <!--                                                                      -->\r
-  <!--   fork                Tell Ant to fork compiles of JSP pages so that -->\r
-  <!--                       a separate JVM is used for JSP page compiles   -->\r
-  <!--                       from the one Tomcat is running in. [true]      -->\r
-  <!--                                                                      -->\r
-  <!--   genStringAsCharArray                                               -->\r
-  <!--                       Should text strings be generated as char       -->\r
-  <!--                       arrays, to improve performance in some cases?  -->\r
-  <!--                       [false]                                        -->\r
-  <!--                                                                      -->\r
-  <!--   ieClassId           The class-id value to be sent to Internet      -->\r
-  <!--                       Explorer when using <jsp:plugin> tags.         -->\r
-  <!--                       [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93]   -->\r
-  <!--                                                                      -->\r
-  <!--   javaEncoding        Java file encoding to use for generating java  -->\r
-  <!--                       source files. [UTF8]                           -->\r
-  <!--                                                                      -->\r
-  <!--   keepgenerated       Should we keep the generated Java source code  -->\r
-  <!--                       for each page instead of deleting it? [true]   -->\r
-  <!--                                                                      -->\r
-  <!--   mappedfile          Should we generate static content with one     -->\r
-  <!--                       print statement per input line, to ease        -->\r
-  <!--                       debugging?  [true]                             -->\r
-  <!--                                                                      -->\r
-  <!--   maxLoadedJsps       The maximum number of JSPs that will be loaded -->\r
-  <!--                       for a web application. If more than this       -->\r
-  <!--                       number of JSPs are loaded, the least recently  -->\r
-  <!--                       used JSPs will be unloaded so that the number  -->\r
-  <!--                       of JSPs loaded at any one time does not exceed -->\r
-  <!--                       this limit. A value of zero or less indicates  -->\r
-  <!--                       no limit. [-1]                                 -->\r
-  <!--                                                                      -->\r
-  <!--   jspIdleTimeout      The amount of time in seconds a JSP can be     -->\r
-  <!--                       idle before it is unloaded. A value of zero    -->\r
-  <!--                       or less indicates never unload. [-1]           -->\r
-  <!--                                                                      -->\r
-  <!--   modificationTestInterval                                           -->\r
-  <!--                       Causes a JSP (and its dependent files) to not  -->\r
-  <!--                       be checked for modification during the         -->\r
-  <!--                       specified time interval (in seconds) from the  -->\r
-  <!--                       last time the JSP was checked for              -->\r
-  <!--                       modification. A value of 0 will cause the JSP  -->\r
-  <!--                       to be checked on every access.                 -->\r
-  <!--                       Used in development mode only. [4]             -->\r
-  <!--                                                                      -->\r
-  <!--   recompileOnFail     If a JSP compilation fails should the          -->\r
-  <!--                       modificationTestInterval be ignored and the    -->\r
-  <!--                       next access trigger a re-compilation attempt?  -->\r
-  <!--                       Used in development mode only and is disabled  -->\r
-  <!--                       by default as compilation may be expensive and -->\r
-  <!--                       could lead to excessive resource usage.        -->\r
-  <!--                       [false]                                        -->\r
-  <!--                                                                      -->\r
-  <!--   scratchdir          What scratch directory should we use when      -->\r
-  <!--                       compiling JSP pages?  [default work directory  -->\r
-  <!--                       for the current web application]               -->\r
-  <!--                       This option is ignored when running under a    -->\r
-  <!--                       SecurityManager.                               -->\r
-  <!--                                                                      -->\r
-  <!--   suppressSmap        Should the generation of SMAP info for JSR45   -->\r
-  <!--                       debugging be suppressed?  [false]              -->\r
-  <!--                                                                      -->\r
-  <!--   trimSpaces          Should template text that consists entirely of -->\r
-  <!--                       whitespace be removed from the output (true),  -->\r
-  <!--                       replaced with a single space (single) or left  -->\r
-  <!--                       unchanged (false)? Note that if a JSP page or  -->\r
-  <!--                       tag file specifies a trimDirectiveWhitespaces  -->\r
-  <!--                       value of true, that will take precedence over  -->\r
-  <!--                       this configuration setting for that page/tag.  -->\r
-  <!--                       [false]                                        -->\r
-  <!--                                                                      -->\r
-  <!--   xpoweredBy          Determines whether X-Powered-By response       -->\r
-  <!--                       header is added by generated servlet.  [false] -->\r
-  <!--                                                                      -->\r
-  <!--   strictQuoteEscaping When scriptlet expressions are used for        -->\r
-  <!--                       attribute values, should the rules in JSP.1.6  -->\r
-  <!--                       for the escaping of quote characters be        -->\r
-  <!--                       strictly applied? [true]                       -->\r
-  <!--                                                                      -->\r
-  <!--   quoteAttributeEL    When EL is used in an attribute value on a     -->\r
-  <!--                       JSP page should the rules for quoting of       -->\r
-  <!--                       attributes described in JSP.1.6 be applied to  -->\r
-  <!--                       the expression? [true]                         -->\r
-\r
-    <servlet>\r
-        <servlet-name>jsp</servlet-name>\r
-        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>\r
-        <init-param>\r
-            <param-name>fork</param-name>\r
-            <param-value>false</param-value>\r
-        </init-param>\r
-        <init-param>\r
-            <param-name>xpoweredBy</param-name>\r
-            <param-value>false</param-value>\r
-        </init-param>\r
-        <load-on-startup>3</load-on-startup>\r
-    </servlet>\r
-\r
-\r
-  <!-- NOTE: An SSI Filter is also available as an alternative SSI          -->\r
-  <!-- implementation. Use either the Servlet or the Filter but NOT both.   -->\r
-  <!--                                                                      -->\r
-  <!-- Server Side Includes processing servlet, which processes SSI         -->\r
-  <!-- directives in HTML pages consistent with similar support in web      -->\r
-  <!-- servers like Apache.  Traditionally, this servlet is mapped to the   -->\r
-  <!-- URL pattern "*.shtml".  This servlet supports the following          -->\r
-  <!-- initialization parameters (default values are in square brackets):   -->\r
-  <!--                                                                      -->\r
-  <!--   buffered            Should output from this servlet be buffered?   -->\r
-  <!--                       (0=false, 1=true)  [0]                         -->\r
-  <!--                                                                      -->\r
-  <!--   debug               Debugging detail level for messages logged     -->\r
-  <!--                       by this servlet.  [0]                          -->\r
-  <!--                                                                      -->\r
-  <!--   expires             The number of seconds before a page with SSI   -->\r
-  <!--                       directives will expire.  [No default]          -->\r
-  <!--                                                                      -->\r
-  <!--   isVirtualWebappRelative                                            -->\r
-  <!--                       Should "virtual" paths be interpreted as       -->\r
-  <!--                       relative to the context root, instead of       -->\r
-  <!--                       the server root? [false]                       -->\r
-  <!--                                                                      -->\r
-  <!--   inputEncoding       The encoding to assume for SSI resources if    -->\r
-  <!--                       one is not available from the resource.        -->\r
-  <!--                       [Platform default]                             -->\r
-  <!--                                                                      -->\r
-  <!--   outputEncoding      The encoding to use for the page that results  -->\r
-  <!--                       from the SSI processing. [UTF-8]               -->\r
-  <!--                                                                      -->\r
-  <!--   allowExec           Is use of the exec command enabled? [false]    -->\r
-\r
-<!--\r
-    <servlet>\r
-        <servlet-name>ssi</servlet-name>\r
-        <servlet-class>\r
-          org.apache.catalina.ssi.SSIServlet\r
-        </servlet-class>\r
-        <init-param>\r
-          <param-name>buffered</param-name>\r
-          <param-value>1</param-value>\r
-        </init-param>\r
-        <init-param>\r
-          <param-name>debug</param-name>\r
-          <param-value>0</param-value>\r
-        </init-param>\r
-        <init-param>\r
-          <param-name>expires</param-name>\r
-          <param-value>666</param-value>\r
-        </init-param>\r
-        <init-param>\r
-          <param-name>isVirtualWebappRelative</param-name>\r
-          <param-value>false</param-value>\r
-        </init-param>\r
-        <load-on-startup>4</load-on-startup>\r
-    </servlet>\r
--->\r
-\r
-\r
-  <!-- Common Gateway Includes (CGI) processing servlet, which supports     -->\r
-  <!-- execution of external applications that conform to the CGI spec      -->\r
-  <!-- requirements.  Typically, this servlet is mapped to the URL pattern  -->\r
-  <!-- "/cgi-bin/*", which means that any CGI applications that are         -->\r
-  <!-- executed must be present within the web application.  This servlet   -->\r
-  <!-- supports the following initialization parameters (default values     -->\r
-  <!-- are in square brackets):                                             -->\r
-  <!--                                                                      -->\r
-  <!--   cgiPathPrefix        The CGI search path will start at             -->\r
-  <!--                        webAppRootDir + File.separator + this prefix. -->\r
-  <!--                        If not set, then webAppRootDir is used.       -->\r
-  <!--                        Recommended value: WEB-INF/cgi                -->\r
-  <!--                                                                      -->\r
-  <!--  cmdLineArgumentsDecoded                                             -->\r
-  <!--                        Only used when enableCmdLineArguments is      -->\r
-  <!--                        true. The pattern that individual decoded     -->\r
-  <!--                        command line arguments must match else the    -->\r
-  <!--                        request will be rejected. This is to          -->\r
-  <!--                        work-around various issues when Java passes   -->\r
-  <!--                        the arguments to the OS. See the CGI How-To   -->\r
-  <!--                        for more details. The default varies by       -->\r
-  <!--                        platform.                                     -->\r
-  <!--                        Windows: [[a-zA-Z0-9\Q-_.\\/:\E]+]            -->\r
-  <!--                        Others:  [.*]                                 -->\r
-  <!--                        Note that internally the CGI Servlet treats   -->\r
-  <!--                        [.*] as a special case to improve performance -->\r
-  <!--                                                                      -->\r
-  <!--   cmdLineArgumentsEncoded                                            -->\r
-  <!--                        Only used when enableCmdLineArguments is      -->\r
-  <!--                        true. The pattern that individual encoded     -->\r
-  <!--                        command line arguments must match else the    -->\r
-  <!--                        request will be rejected. The default matches -->\r
-  <!--                        the allowed values defined by RFC3875.        -->\r
-  <!--                        [[a-zA-Z0-9\Q%;/?:@&,$-_.!~*'()\E]+]          -->\r
-  <!--                                                                      -->\r
-  <!--   enableCmdLineArguments                                             -->\r
-  <!--                        Are command line parameters generated from    -->\r
-  <!--                        the query string as per section 4.4 of 3875   -->\r
-  <!--                        RFC? [false]                                  -->\r
-  <!--                                                                      -->\r
-  <!--   executable           Name of the executable used to run the        -->\r
-  <!--                        script. [perl]                                -->\r
-  <!--                                                                      -->\r
-  <!--   envHttpHeaders       A regular expression used to select the HTTP  -->\r
-  <!--                        headers passed to the CGI process as          -->\r
-  <!--                        environment variables. Note that headers are  -->\r
-  <!--                        converted to upper case before matching and   -->\r
-  <!--                        that the entire header name must match the    -->\r
-  <!--                        pattern.                                      -->\r
-  <!--                        [ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|  -->\r
-  <!--                         IF-[-0-9A-Z]*|REFERER|USER-AGENT]            -->\r
-  <!--                                                                      -->\r
-  <!--  environment-variable- An environment to be set for the execution    -->\r
-  <!--                        environment of the CGI script. The name of    -->\r
-  <!--                        variable is taken from the parameter name.    -->\r
-  <!--                        To configure an environment variable named    -->\r
-  <!--                        FOO, configure a parameter named              -->\r
-  <!--                        environment-variable-FOO. The parameter value -->\r
-  <!--                        is used as the environment variable value.    -->\r
-  <!--                        The default is no environment variables.      -->\r
-  <!--                                                                      -->\r
-  <!--   parameterEncoding    Name of parameter encoding to be used with    -->\r
-  <!--                        CGI servlet.                                  -->\r
-  <!--                        [System.getProperty("file.encoding","UTF-8")] -->\r
-  <!--                                                                      -->\r
-  <!--   passShellEnvironment Should the shell environment variables (if    -->\r
-  <!--                        any) be passed to the CGI script? [false]     -->\r
-  <!--                                                                      -->\r
-  <!--   stderrTimeout        The time (in milliseconds) to wait for the    -->\r
-  <!--                        reading of stderr to complete before          -->\r
-  <!--                        terminating the CGI process. [2000]           -->\r
-\r
-<!--\r
-    <servlet>\r
-        <servlet-name>cgi</servlet-name>\r
-        <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>\r
-        <init-param>\r
-          <param-name>cgiPathPrefix</param-name>\r
-          <param-value>WEB-INF/cgi</param-value>\r
-        </init-param>\r
-        <load-on-startup>5</load-on-startup>\r
-    </servlet>\r
--->\r
-\r
-\r
-  <!-- ================ Built In Servlet Mappings ========================= -->\r
-\r
-\r
-  <!-- The servlet mappings for the built in servlets defined above.  Note  -->\r
-  <!-- that, by default, the CGI and SSI servlets are *not* mapped.  You    -->\r
-  <!-- must uncomment these mappings (or add them to your application's own -->\r
-  <!-- web.xml deployment descriptor) to enable these services              -->\r
-\r
-    <!-- The mapping for the default servlet -->\r
-    <servlet-mapping>\r
-        <servlet-name>default</servlet-name>\r
-        <url-pattern>/</url-pattern>\r
-    </servlet-mapping>\r
-\r
-    <!-- The mappings for the JSP servlet -->\r
-    <servlet-mapping>\r
-        <servlet-name>jsp</servlet-name>\r
-        <url-pattern>*.jsp</url-pattern>\r
-        <url-pattern>*.jspx</url-pattern>\r
-    </servlet-mapping>\r
-\r
-    <!-- The mapping for the SSI servlet -->\r
-<!--\r
-    <servlet-mapping>\r
-        <servlet-name>ssi</servlet-name>\r
-        <url-pattern>*.shtml</url-pattern>\r
-    </servlet-mapping>\r
--->\r
-\r
-    <!-- The mapping for the CGI Gateway servlet -->\r
-\r
-<!--\r
-    <servlet-mapping>\r
-        <servlet-name>cgi</servlet-name>\r
-        <url-pattern>/cgi-bin/*</url-pattern>\r
-    </servlet-mapping>\r
--->\r
-\r
-\r
-  <!-- ================== Built In Filter Definitions ===================== -->\r
-\r
-  <!-- A filter that sets various security related HTTP Response headers.   -->\r
-  <!-- This filter supports the following initialization parameters         -->\r
-  <!-- (default values are in square brackets):                             -->\r
-  <!--                                                                      -->\r
-  <!--   hstsEnabled         Should the HTTP Strict Transport Security      -->\r
-  <!--                       (HSTS) header be added to the response? See    -->\r
-  <!--                       RFC 6797 for more information on HSTS. [true]  -->\r
-  <!--                                                                      -->\r
-  <!--   hstsMaxAgeSeconds   The max age value that should be used in the   -->\r
-  <!--                       HSTS header. Negative values will be treated   -->\r
-  <!--                       as zero. [0]                                   -->\r
-  <!--                                                                      -->\r
-  <!--   hstsIncludeSubDomains                                              -->\r
-  <!--                       Should the includeSubDomains parameter be      -->\r
-  <!--                       included in the HSTS header.                   -->\r
-  <!--                                                                      -->\r
-  <!--   antiClickJackingEnabled                                            -->\r
-  <!--                       Should the anti click-jacking header           -->\r
-  <!--                       X-Frame-Options be added to every response?    -->\r
-  <!--                       [true]                                         -->\r
-  <!--                                                                      -->\r
-  <!--   antiClickJackingOption                                             -->\r
-  <!--                       What value should be used for the header. Must -->\r
-  <!--                       be one of DENY, SAMEORIGIN, ALLOW-FROM         -->\r
-  <!--                       (case-insensitive). [DENY]                     -->\r
-  <!--                                                                      -->\r
-  <!--   antiClickJackingUri IF ALLOW-FROM is used, what URI should be      -->\r
-  <!--                       allowed? []                                    -->\r
-  <!--                                                                      -->\r
-  <!--   blockContentTypeSniffingEnabled                                    -->\r
-  <!--                       Should the header that blocks content type     -->\r
-  <!--                       sniffing be added to every response? [true]    -->\r
-<!--\r
-    <filter>\r
-        <filter-name>httpHeaderSecurity</filter-name>\r
-        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>\r
-        <async-supported>true</async-supported>\r
-    </filter>\r
--->\r
-\r
-  <!-- A filter that sets character encoding that is used to decode -->\r
-  <!-- parameters in a POST request -->\r
-<!--\r
-    <filter>\r
-        <filter-name>setCharacterEncodingFilter</filter-name>\r
-        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>\r
-        <init-param>\r
-            <param-name>encoding</param-name>\r
-            <param-value>UTF-8</param-value>\r
-        </init-param>\r
-        <async-supported>true</async-supported>\r
-    </filter>\r
--->\r
-\r
-  <!-- A filter that triggers request parameters parsing and rejects the    -->\r
-  <!-- request if some parameters were skipped because of parsing errors or -->\r
-  <!-- request size limitations.                                            -->\r
-<!--\r
-    <filter>\r
-        <filter-name>failedRequestFilter</filter-name>\r
-        <filter-class>\r
-          org.apache.catalina.filters.FailedRequestFilter\r
-        </filter-class>\r
-        <async-supported>true</async-supported>\r
-    </filter>\r
--->\r
-\r
-\r
-  <!-- NOTE: An SSI Servlet is also available as an alternative SSI         -->\r
-  <!-- implementation. Use either the Servlet or the Filter but NOT both.   -->\r
-  <!--                                                                      -->\r
-  <!-- Server Side Includes processing filter, which processes SSI          -->\r
-  <!-- directives in HTML pages consistent with similar support in web      -->\r
-  <!-- servers like Apache.  Traditionally, this filter is mapped to the    -->\r
-  <!-- URL pattern "*.shtml", though it can be mapped to "*" as it will     -->\r
-  <!-- selectively enable/disable SSI processing based on mime types. For   -->\r
-  <!-- this to work you will need to uncomment the .shtml mime type         -->\r
-  <!-- definition towards the bottom of this file.                          -->\r
-  <!-- The contentType init param allows you to apply SSI processing to JSP -->\r
-  <!-- pages, javascript, or any other content you wish.  This filter       -->\r
-  <!-- supports the following initialization parameters (default values are -->\r
-  <!-- in square brackets):                                                 -->\r
-  <!--                                                                      -->\r
-  <!--   contentType         A regex pattern that must be matched before    -->\r
-  <!--                       SSI processing is applied.                     -->\r
-  <!--                       [text/x-server-parsed-html(;.*)?]              -->\r
-  <!--                                                                      -->\r
-  <!--   debug               Debugging detail level for messages logged     -->\r
-  <!--                       by this servlet.  [0]                          -->\r
-  <!--                                                                      -->\r
-  <!--   expires             The number of seconds before a page with SSI   -->\r
-  <!--                       directives will expire.  [No default]          -->\r
-  <!--                                                                      -->\r
-  <!--   isVirtualWebappRelative                                            -->\r
-  <!--                       Should "virtual" paths be interpreted as       -->\r
-  <!--                       relative to the context root, instead of       -->\r
-  <!--                       the server root? [false]                       -->\r
-  <!--                                                                      -->\r
-  <!--   allowExec           Is use of the exec command enabled? [false]    -->\r
-\r
-<!--\r
-    <filter>\r
-        <filter-name>ssi</filter-name>\r
-        <filter-class>\r
-          org.apache.catalina.ssi.SSIFilter\r
-        </filter-class>\r
-        <init-param>\r
-          <param-name>contentType</param-name>\r
-          <param-value>text/x-server-parsed-html(;.*)?</param-value>\r
-        </init-param>\r
-        <init-param>\r
-          <param-name>debug</param-name>\r
-          <param-value>0</param-value>\r
-        </init-param>\r
-        <init-param>\r
-          <param-name>expires</param-name>\r
-          <param-value>666</param-value>\r
-        </init-param>\r
-        <init-param>\r
-          <param-name>isVirtualWebappRelative</param-name>\r
-          <param-value>false</param-value>\r
-        </init-param>\r
-    </filter>\r
--->\r
-\r
-\r
-  <!-- ==================== Built In Filter Mappings ====================== -->\r
-\r
-  <!-- The mapping for the HTTP header security Filter -->\r
-<!--\r
-    <filter-mapping>\r
-        <filter-name>httpHeaderSecurity</filter-name>\r
-        <url-pattern>/*</url-pattern>\r
-        <dispatcher>REQUEST</dispatcher>\r
-    </filter-mapping>\r
--->\r
-\r
-  <!-- The mapping for the Set Character Encoding Filter -->\r
-<!--\r
-    <filter-mapping>\r
-        <filter-name>setCharacterEncodingFilter</filter-name>\r
-        <url-pattern>/*</url-pattern>\r
-    </filter-mapping>\r
--->\r
-\r
-  <!-- The mapping for the Failed Request Filter -->\r
-<!--\r
-    <filter-mapping>\r
-        <filter-name>failedRequestFilter</filter-name>\r
-        <url-pattern>/*</url-pattern>\r
-    </filter-mapping>\r
--->\r
-\r
-  <!-- The mapping for the SSI Filter -->\r
-<!--\r
-    <filter-mapping>\r
-        <filter-name>ssi</filter-name>\r
-        <url-pattern>*.shtml</url-pattern>\r
-    </filter-mapping>\r
--->\r
-\r
-\r
-  <!-- ==================== Default Session Configuration ================= -->\r
-  <!-- You can set the default session timeout (in minutes) for all newly   -->\r
-  <!-- created sessions by modifying the value below.                       -->\r
-\r
-    <session-config>\r
-        <session-timeout>30</session-timeout>\r
-    </session-config>\r
-\r
-\r
-  <!-- ===================== Default MIME Type Mappings =================== -->\r
-  <!-- When serving static resources, Tomcat will automatically generate    -->\r
-  <!-- a "Content-Type" header based on the resource's filename extension,  -->\r
-  <!-- based on these mappings.  Additional mappings can be added here (to  -->\r
-  <!-- apply to all web applications), or in your own application's web.xml -->\r
-  <!-- deployment descriptor.                                               -->\r
-  <!-- Note: Extensions are always matched in a case-insensitive manner.    -->\r
-\r
-    <mime-mapping>\r
-        <extension>123</extension>\r
-        <mime-type>application/vnd.lotus-1-2-3</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>3dml</extension>\r
-        <mime-type>text/vnd.in3d.3dml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>3ds</extension>\r
-        <mime-type>image/x-3ds</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>3g2</extension>\r
-        <mime-type>video/3gpp2</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>3gp</extension>\r
-        <mime-type>video/3gpp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>7z</extension>\r
-        <mime-type>application/x-7z-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aab</extension>\r
-        <mime-type>application/x-authorware-bin</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aac</extension>\r
-        <mime-type>audio/x-aac</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aam</extension>\r
-        <mime-type>application/x-authorware-map</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aas</extension>\r
-        <mime-type>application/x-authorware-seg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>abs</extension>\r
-        <mime-type>audio/x-mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>abw</extension>\r
-        <mime-type>application/x-abiword</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ac</extension>\r
-        <mime-type>application/pkix-attr-cert</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>acc</extension>\r
-        <mime-type>application/vnd.americandynamics.acc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ace</extension>\r
-        <mime-type>application/x-ace-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>acu</extension>\r
-        <mime-type>application/vnd.acucobol</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>acutc</extension>\r
-        <mime-type>application/vnd.acucorp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>adp</extension>\r
-        <mime-type>audio/adpcm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aep</extension>\r
-        <mime-type>application/vnd.audiograph</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>afm</extension>\r
-        <mime-type>application/x-font-type1</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>afp</extension>\r
-        <mime-type>application/vnd.ibm.modcap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ahead</extension>\r
-        <mime-type>application/vnd.ahead.space</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ai</extension>\r
-        <mime-type>application/postscript</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aif</extension>\r
-        <mime-type>audio/x-aiff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aifc</extension>\r
-        <mime-type>audio/x-aiff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aiff</extension>\r
-        <mime-type>audio/x-aiff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aim</extension>\r
-        <mime-type>application/x-aim</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>air</extension>\r
-        <mime-type>application/vnd.adobe.air-application-installer-package+zip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ait</extension>\r
-        <mime-type>application/vnd.dvb.ait</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ami</extension>\r
-        <mime-type>application/vnd.amiga.ami</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>anx</extension>\r
-        <mime-type>application/annodex</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>apk</extension>\r
-        <mime-type>application/vnd.android.package-archive</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>appcache</extension>\r
-        <mime-type>text/cache-manifest</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>application</extension>\r
-        <mime-type>application/x-ms-application</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>apr</extension>\r
-        <mime-type>application/vnd.lotus-approach</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>arc</extension>\r
-        <mime-type>application/x-freearc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>art</extension>\r
-        <mime-type>image/x-jg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>asc</extension>\r
-        <mime-type>application/pgp-signature</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>asf</extension>\r
-        <mime-type>video/x-ms-asf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>asm</extension>\r
-        <mime-type>text/x-asm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aso</extension>\r
-        <mime-type>application/vnd.accpac.simply.aso</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>asx</extension>\r
-        <mime-type>video/x-ms-asf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>atc</extension>\r
-        <mime-type>application/vnd.acucorp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>atom</extension>\r
-        <mime-type>application/atom+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>atomcat</extension>\r
-        <mime-type>application/atomcat+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>atomsvc</extension>\r
-        <mime-type>application/atomsvc+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>atx</extension>\r
-        <mime-type>application/vnd.antix.game-component</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>au</extension>\r
-        <mime-type>audio/basic</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>avi</extension>\r
-        <mime-type>video/x-msvideo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>avx</extension>\r
-        <mime-type>video/x-rad-screenplay</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>aw</extension>\r
-        <mime-type>application/applixware</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>axa</extension>\r
-        <mime-type>audio/annodex</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>axv</extension>\r
-        <mime-type>video/annodex</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>azf</extension>\r
-        <mime-type>application/vnd.airzip.filesecure.azf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>azs</extension>\r
-        <mime-type>application/vnd.airzip.filesecure.azs</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>azw</extension>\r
-        <mime-type>application/vnd.amazon.ebook</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bat</extension>\r
-        <mime-type>application/x-msdownload</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bcpio</extension>\r
-        <mime-type>application/x-bcpio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bdf</extension>\r
-        <mime-type>application/x-font-bdf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bdm</extension>\r
-        <mime-type>application/vnd.syncml.dm+wbxml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bed</extension>\r
-        <mime-type>application/vnd.realvnc.bed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bh2</extension>\r
-        <mime-type>application/vnd.fujitsu.oasysprs</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bin</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>blb</extension>\r
-        <mime-type>application/x-blorb</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>blorb</extension>\r
-        <mime-type>application/x-blorb</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bmi</extension>\r
-        <mime-type>application/vnd.bmi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bmp</extension>\r
-        <mime-type>image/bmp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>body</extension>\r
-        <mime-type>text/html</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>book</extension>\r
-        <mime-type>application/vnd.framemaker</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>box</extension>\r
-        <mime-type>application/vnd.previewsystems.box</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>boz</extension>\r
-        <mime-type>application/x-bzip2</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bpk</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>btif</extension>\r
-        <mime-type>image/prs.btif</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bz</extension>\r
-        <mime-type>application/x-bzip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>bz2</extension>\r
-        <mime-type>application/x-bzip2</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>c</extension>\r
-        <mime-type>text/x-c</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>c11amc</extension>\r
-        <mime-type>application/vnd.cluetrust.cartomobile-config</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>c11amz</extension>\r
-        <mime-type>application/vnd.cluetrust.cartomobile-config-pkg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>c4d</extension>\r
-        <mime-type>application/vnd.clonk.c4group</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>c4f</extension>\r
-        <mime-type>application/vnd.clonk.c4group</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>c4g</extension>\r
-        <mime-type>application/vnd.clonk.c4group</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>c4p</extension>\r
-        <mime-type>application/vnd.clonk.c4group</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>c4u</extension>\r
-        <mime-type>application/vnd.clonk.c4group</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cab</extension>\r
-        <mime-type>application/vnd.ms-cab-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>caf</extension>\r
-        <mime-type>audio/x-caf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cap</extension>\r
-        <mime-type>application/vnd.tcpdump.pcap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>car</extension>\r
-        <mime-type>application/vnd.curl.car</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cat</extension>\r
-        <mime-type>application/vnd.ms-pki.seccat</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cb7</extension>\r
-        <mime-type>application/x-cbr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cba</extension>\r
-        <mime-type>application/x-cbr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cbr</extension>\r
-        <mime-type>application/x-cbr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cbt</extension>\r
-        <mime-type>application/x-cbr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cbz</extension>\r
-        <mime-type>application/x-cbr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cc</extension>\r
-        <mime-type>text/x-c</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cct</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ccxml</extension>\r
-        <mime-type>application/ccxml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdbcmsg</extension>\r
-        <mime-type>application/vnd.contact.cmsg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdf</extension>\r
-        <mime-type>application/x-cdf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdkey</extension>\r
-        <mime-type>application/vnd.mediastation.cdkey</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdmia</extension>\r
-        <mime-type>application/cdmi-capability</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdmic</extension>\r
-        <mime-type>application/cdmi-container</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdmid</extension>\r
-        <mime-type>application/cdmi-domain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdmio</extension>\r
-        <mime-type>application/cdmi-object</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdmiq</extension>\r
-        <mime-type>application/cdmi-queue</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdx</extension>\r
-        <mime-type>chemical/x-cdx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdxml</extension>\r
-        <mime-type>application/vnd.chemdraw+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cdy</extension>\r
-        <mime-type>application/vnd.cinderella</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cer</extension>\r
-        <mime-type>application/pkix-cert</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cfs</extension>\r
-        <mime-type>application/x-cfs-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cgm</extension>\r
-        <mime-type>image/cgm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>chat</extension>\r
-        <mime-type>application/x-chat</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>chm</extension>\r
-        <mime-type>application/vnd.ms-htmlhelp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>chrt</extension>\r
-        <mime-type>application/vnd.kde.kchart</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cif</extension>\r
-        <mime-type>chemical/x-cif</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cii</extension>\r
-        <mime-type>application/vnd.anser-web-certificate-issue-initiation</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cil</extension>\r
-        <mime-type>application/vnd.ms-artgalry</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cla</extension>\r
-        <mime-type>application/vnd.claymore</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>class</extension>\r
-        <mime-type>application/java</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>clkk</extension>\r
-        <mime-type>application/vnd.crick.clicker.keyboard</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>clkp</extension>\r
-        <mime-type>application/vnd.crick.clicker.palette</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>clkt</extension>\r
-        <mime-type>application/vnd.crick.clicker.template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>clkw</extension>\r
-        <mime-type>application/vnd.crick.clicker.wordbank</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>clkx</extension>\r
-        <mime-type>application/vnd.crick.clicker</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>clp</extension>\r
-        <mime-type>application/x-msclip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cmc</extension>\r
-        <mime-type>application/vnd.cosmocaller</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cmdf</extension>\r
-        <mime-type>chemical/x-cmdf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cml</extension>\r
-        <mime-type>chemical/x-cml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cmp</extension>\r
-        <mime-type>application/vnd.yellowriver-custom-menu</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cmx</extension>\r
-        <mime-type>image/x-cmx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cod</extension>\r
-        <mime-type>application/vnd.rim.cod</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>com</extension>\r
-        <mime-type>application/x-msdownload</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>conf</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cpio</extension>\r
-        <mime-type>application/x-cpio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cpp</extension>\r
-        <mime-type>text/x-c</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cpt</extension>\r
-        <mime-type>application/mac-compactpro</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>crd</extension>\r
-        <mime-type>application/x-mscardfile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>crl</extension>\r
-        <mime-type>application/pkix-crl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>crt</extension>\r
-        <mime-type>application/x-x509-ca-cert</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cryptonote</extension>\r
-        <mime-type>application/vnd.rig.cryptonote</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>csh</extension>\r
-        <mime-type>application/x-csh</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>csml</extension>\r
-        <mime-type>chemical/x-csml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>csp</extension>\r
-        <mime-type>application/vnd.commonspace</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>css</extension>\r
-        <mime-type>text/css</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cst</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>csv</extension>\r
-        <mime-type>text/csv</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cu</extension>\r
-        <mime-type>application/cu-seeme</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>curl</extension>\r
-        <mime-type>text/vnd.curl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cww</extension>\r
-        <mime-type>application/prs.cww</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cxt</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>cxx</extension>\r
-        <mime-type>text/x-c</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dae</extension>\r
-        <mime-type>model/vnd.collada+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>daf</extension>\r
-        <mime-type>application/vnd.mobius.daf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dart</extension>\r
-        <mime-type>application/vnd.dart</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dataless</extension>\r
-        <mime-type>application/vnd.fdsn.seed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>davmount</extension>\r
-        <mime-type>application/davmount+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dbk</extension>\r
-        <mime-type>application/docbook+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dcr</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dcurl</extension>\r
-        <mime-type>text/vnd.curl.dcurl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dd2</extension>\r
-        <mime-type>application/vnd.oma.dd2+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ddd</extension>\r
-        <mime-type>application/vnd.fujixerox.ddd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>deb</extension>\r
-        <mime-type>application/x-debian-package</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>def</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>deploy</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>der</extension>\r
-        <mime-type>application/x-x509-ca-cert</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dfac</extension>\r
-        <mime-type>application/vnd.dreamfactory</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dgc</extension>\r
-        <mime-type>application/x-dgc-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dib</extension>\r
-        <mime-type>image/bmp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dic</extension>\r
-        <mime-type>text/x-c</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dir</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dis</extension>\r
-        <mime-type>application/vnd.mobius.dis</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dist</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>distz</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>djv</extension>\r
-        <mime-type>image/vnd.djvu</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>djvu</extension>\r
-        <mime-type>image/vnd.djvu</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dll</extension>\r
-        <mime-type>application/x-msdownload</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dmg</extension>\r
-        <mime-type>application/x-apple-diskimage</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dmp</extension>\r
-        <mime-type>application/vnd.tcpdump.pcap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dms</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dna</extension>\r
-        <mime-type>application/vnd.dna</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>doc</extension>\r
-        <mime-type>application/msword</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>docm</extension>\r
-        <mime-type>application/vnd.ms-word.document.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>docx</extension>\r
-        <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dot</extension>\r
-        <mime-type>application/msword</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dotm</extension>\r
-        <mime-type>application/vnd.ms-word.template.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dotx</extension>\r
-        <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dp</extension>\r
-        <mime-type>application/vnd.osgi.dp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dpg</extension>\r
-        <mime-type>application/vnd.dpgraph</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dra</extension>\r
-        <mime-type>audio/vnd.dra</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dsc</extension>\r
-        <mime-type>text/prs.lines.tag</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dssc</extension>\r
-        <mime-type>application/dssc+der</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dtb</extension>\r
-        <mime-type>application/x-dtbook+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dtd</extension>\r
-        <mime-type>application/xml-dtd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dts</extension>\r
-        <mime-type>audio/vnd.dts</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dtshd</extension>\r
-        <mime-type>audio/vnd.dts.hd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dump</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dv</extension>\r
-        <mime-type>video/x-dv</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dvb</extension>\r
-        <mime-type>video/vnd.dvb.file</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dvi</extension>\r
-        <mime-type>application/x-dvi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dwf</extension>\r
-        <mime-type>model/vnd.dwf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dwg</extension>\r
-        <mime-type>image/vnd.dwg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dxf</extension>\r
-        <mime-type>image/vnd.dxf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dxp</extension>\r
-        <mime-type>application/vnd.spotfire.dxp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>dxr</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ecelp4800</extension>\r
-        <mime-type>audio/vnd.nuera.ecelp4800</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ecelp7470</extension>\r
-        <mime-type>audio/vnd.nuera.ecelp7470</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ecelp9600</extension>\r
-        <mime-type>audio/vnd.nuera.ecelp9600</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ecma</extension>\r
-        <mime-type>application/ecmascript</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>edm</extension>\r
-        <mime-type>application/vnd.novadigm.edm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>edx</extension>\r
-        <mime-type>application/vnd.novadigm.edx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>efif</extension>\r
-        <mime-type>application/vnd.picsel</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ei6</extension>\r
-        <mime-type>application/vnd.pg.osasli</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>elc</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>emf</extension>\r
-        <mime-type>application/x-msmetafile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>eml</extension>\r
-        <mime-type>message/rfc822</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>emma</extension>\r
-        <mime-type>application/emma+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>emz</extension>\r
-        <mime-type>application/x-msmetafile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>eol</extension>\r
-        <mime-type>audio/vnd.digital-winds</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>eot</extension>\r
-        <mime-type>application/vnd.ms-fontobject</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>eps</extension>\r
-        <mime-type>application/postscript</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>epub</extension>\r
-        <mime-type>application/epub+zip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>es3</extension>\r
-        <mime-type>application/vnd.eszigno3+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>esa</extension>\r
-        <mime-type>application/vnd.osgi.subsystem</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>esf</extension>\r
-        <mime-type>application/vnd.epson.esf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>et3</extension>\r
-        <mime-type>application/vnd.eszigno3+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>etx</extension>\r
-        <mime-type>text/x-setext</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>eva</extension>\r
-        <mime-type>application/x-eva</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>evy</extension>\r
-        <mime-type>application/x-envoy</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>exe</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>exi</extension>\r
-        <mime-type>application/exi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ext</extension>\r
-        <mime-type>application/vnd.novadigm.ext</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ez</extension>\r
-        <mime-type>application/andrew-inset</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ez2</extension>\r
-        <mime-type>application/vnd.ezpix-album</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ez3</extension>\r
-        <mime-type>application/vnd.ezpix-package</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>f</extension>\r
-        <mime-type>text/x-fortran</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>f4v</extension>\r
-        <mime-type>video/x-f4v</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>f77</extension>\r
-        <mime-type>text/x-fortran</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>f90</extension>\r
-        <mime-type>text/x-fortran</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fbs</extension>\r
-        <mime-type>image/vnd.fastbidsheet</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fcdt</extension>\r
-        <mime-type>application/vnd.adobe.formscentral.fcdt</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fcs</extension>\r
-        <mime-type>application/vnd.isac.fcs</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fdf</extension>\r
-        <mime-type>application/vnd.fdf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fe_launch</extension>\r
-        <mime-type>application/vnd.denovo.fcselayout-link</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fg5</extension>\r
-        <mime-type>application/vnd.fujitsu.oasysgp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fgd</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fh</extension>\r
-        <mime-type>image/x-freehand</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fh4</extension>\r
-        <mime-type>image/x-freehand</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fh5</extension>\r
-        <mime-type>image/x-freehand</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fh7</extension>\r
-        <mime-type>image/x-freehand</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fhc</extension>\r
-        <mime-type>image/x-freehand</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fig</extension>\r
-        <mime-type>application/x-xfig</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>flac</extension>\r
-        <mime-type>audio/flac</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fli</extension>\r
-        <mime-type>video/x-fli</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>flo</extension>\r
-        <mime-type>application/vnd.micrografx.flo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>flv</extension>\r
-        <mime-type>video/x-flv</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>flw</extension>\r
-        <mime-type>application/vnd.kde.kivio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>flx</extension>\r
-        <mime-type>text/vnd.fmi.flexstor</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fly</extension>\r
-        <mime-type>text/vnd.fly</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fm</extension>\r
-        <mime-type>application/vnd.framemaker</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fnc</extension>\r
-        <mime-type>application/vnd.frogans.fnc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>for</extension>\r
-        <mime-type>text/x-fortran</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fpx</extension>\r
-        <mime-type>image/vnd.fpx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>frame</extension>\r
-        <mime-type>application/vnd.framemaker</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fsc</extension>\r
-        <mime-type>application/vnd.fsc.weblaunch</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fst</extension>\r
-        <mime-type>image/vnd.fst</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ftc</extension>\r
-        <mime-type>application/vnd.fluxtime.clip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fti</extension>\r
-        <mime-type>application/vnd.anser-web-funds-transfer-initiation</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fvt</extension>\r
-        <mime-type>video/vnd.fvt</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fxp</extension>\r
-        <mime-type>application/vnd.adobe.fxp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fxpl</extension>\r
-        <mime-type>application/vnd.adobe.fxp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>fzs</extension>\r
-        <mime-type>application/vnd.fuzzysheet</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>g2w</extension>\r
-        <mime-type>application/vnd.geoplan</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>g3</extension>\r
-        <mime-type>image/g3fax</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>g3w</extension>\r
-        <mime-type>application/vnd.geospace</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gac</extension>\r
-        <mime-type>application/vnd.groove-account</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gam</extension>\r
-        <mime-type>application/x-tads</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gbr</extension>\r
-        <mime-type>application/rpki-ghostbusters</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gca</extension>\r
-        <mime-type>application/x-gca-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gdl</extension>\r
-        <mime-type>model/vnd.gdl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>geo</extension>\r
-        <mime-type>application/vnd.dynageo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gex</extension>\r
-        <mime-type>application/vnd.geometry-explorer</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ggb</extension>\r
-        <mime-type>application/vnd.geogebra.file</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ggt</extension>\r
-        <mime-type>application/vnd.geogebra.tool</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ghf</extension>\r
-        <mime-type>application/vnd.groove-help</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gif</extension>\r
-        <mime-type>image/gif</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gim</extension>\r
-        <mime-type>application/vnd.groove-identity-message</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gml</extension>\r
-        <mime-type>application/gml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gmx</extension>\r
-        <mime-type>application/vnd.gmx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gnumeric</extension>\r
-        <mime-type>application/x-gnumeric</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gph</extension>\r
-        <mime-type>application/vnd.flographit</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gpx</extension>\r
-        <mime-type>application/gpx+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gqf</extension>\r
-        <mime-type>application/vnd.grafeq</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gqs</extension>\r
-        <mime-type>application/vnd.grafeq</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gram</extension>\r
-        <mime-type>application/srgs</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gramps</extension>\r
-        <mime-type>application/x-gramps-xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gre</extension>\r
-        <mime-type>application/vnd.geometry-explorer</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>grv</extension>\r
-        <mime-type>application/vnd.groove-injector</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>grxml</extension>\r
-        <mime-type>application/srgs+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gsf</extension>\r
-        <mime-type>application/x-font-ghostscript</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gtar</extension>\r
-        <mime-type>application/x-gtar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gtm</extension>\r
-        <mime-type>application/vnd.groove-tool-message</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gtw</extension>\r
-        <mime-type>model/vnd.gtw</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gv</extension>\r
-        <mime-type>text/vnd.graphviz</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gxf</extension>\r
-        <mime-type>application/gxf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gxt</extension>\r
-        <mime-type>application/vnd.geonext</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>gz</extension>\r
-        <mime-type>application/x-gzip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>h</extension>\r
-        <mime-type>text/x-c</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>h261</extension>\r
-        <mime-type>video/h261</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>h263</extension>\r
-        <mime-type>video/h263</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>h264</extension>\r
-        <mime-type>video/h264</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hal</extension>\r
-        <mime-type>application/vnd.hal+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hbci</extension>\r
-        <mime-type>application/vnd.hbci</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hdf</extension>\r
-        <mime-type>application/x-hdf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hh</extension>\r
-        <mime-type>text/x-c</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hlp</extension>\r
-        <mime-type>application/winhlp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hpgl</extension>\r
-        <mime-type>application/vnd.hp-hpgl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hpid</extension>\r
-        <mime-type>application/vnd.hp-hpid</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hps</extension>\r
-        <mime-type>application/vnd.hp-hps</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hqx</extension>\r
-        <mime-type>application/mac-binhex40</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>htc</extension>\r
-        <mime-type>text/x-component</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>htke</extension>\r
-        <mime-type>application/vnd.kenameaapp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>htm</extension>\r
-        <mime-type>text/html</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>html</extension>\r
-        <mime-type>text/html</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hvd</extension>\r
-        <mime-type>application/vnd.yamaha.hv-dic</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hvp</extension>\r
-        <mime-type>application/vnd.yamaha.hv-voice</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>hvs</extension>\r
-        <mime-type>application/vnd.yamaha.hv-script</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>i2g</extension>\r
-        <mime-type>application/vnd.intergeo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>icc</extension>\r
-        <mime-type>application/vnd.iccprofile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ice</extension>\r
-        <mime-type>x-conference/x-cooltalk</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>icm</extension>\r
-        <mime-type>application/vnd.iccprofile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ico</extension>\r
-        <mime-type>image/x-icon</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ics</extension>\r
-        <mime-type>text/calendar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ief</extension>\r
-        <mime-type>image/ief</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ifb</extension>\r
-        <mime-type>text/calendar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ifm</extension>\r
-        <mime-type>application/vnd.shana.informed.formdata</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>iges</extension>\r
-        <mime-type>model/iges</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>igl</extension>\r
-        <mime-type>application/vnd.igloader</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>igm</extension>\r
-        <mime-type>application/vnd.insors.igm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>igs</extension>\r
-        <mime-type>model/iges</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>igx</extension>\r
-        <mime-type>application/vnd.micrografx.igx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>iif</extension>\r
-        <mime-type>application/vnd.shana.informed.interchange</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>imp</extension>\r
-        <mime-type>application/vnd.accpac.simply.imp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ims</extension>\r
-        <mime-type>application/vnd.ms-ims</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>in</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ink</extension>\r
-        <mime-type>application/inkml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>inkml</extension>\r
-        <mime-type>application/inkml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>install</extension>\r
-        <mime-type>application/x-install-instructions</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>iota</extension>\r
-        <mime-type>application/vnd.astraea-software.iota</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ipfix</extension>\r
-        <mime-type>application/ipfix</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ipk</extension>\r
-        <mime-type>application/vnd.shana.informed.package</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>irm</extension>\r
-        <mime-type>application/vnd.ibm.rights-management</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>irp</extension>\r
-        <mime-type>application/vnd.irepository.package+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>iso</extension>\r
-        <mime-type>application/x-iso9660-image</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>itp</extension>\r
-        <mime-type>application/vnd.shana.informed.formtemplate</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ivp</extension>\r
-        <mime-type>application/vnd.immervision-ivp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ivu</extension>\r
-        <mime-type>application/vnd.immervision-ivu</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jad</extension>\r
-        <mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jam</extension>\r
-        <mime-type>application/vnd.jam</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jar</extension>\r
-        <mime-type>application/java-archive</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>java</extension>\r
-        <mime-type>text/x-java-source</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jisp</extension>\r
-        <mime-type>application/vnd.jisp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jlt</extension>\r
-        <mime-type>application/vnd.hp-jlyt</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jnlp</extension>\r
-        <mime-type>application/x-java-jnlp-file</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>joda</extension>\r
-        <mime-type>application/vnd.joost.joda-archive</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jpe</extension>\r
-        <mime-type>image/jpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jpeg</extension>\r
-        <mime-type>image/jpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jpg</extension>\r
-        <mime-type>image/jpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jpgm</extension>\r
-        <mime-type>video/jpm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jpgv</extension>\r
-        <mime-type>video/jpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jpm</extension>\r
-        <mime-type>video/jpm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>js</extension>\r
-        <mime-type>application/javascript</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jsf</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>json</extension>\r
-        <mime-type>application/json</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jsonml</extension>\r
-        <mime-type>application/jsonml+json</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>jspf</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kar</extension>\r
-        <mime-type>audio/midi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>karbon</extension>\r
-        <mime-type>application/vnd.kde.karbon</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kfo</extension>\r
-        <mime-type>application/vnd.kde.kformula</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kia</extension>\r
-        <mime-type>application/vnd.kidspiration</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kml</extension>\r
-        <mime-type>application/vnd.google-earth.kml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kmz</extension>\r
-        <mime-type>application/vnd.google-earth.kmz</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kne</extension>\r
-        <mime-type>application/vnd.kinar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>knp</extension>\r
-        <mime-type>application/vnd.kinar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kon</extension>\r
-        <mime-type>application/vnd.kde.kontour</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kpr</extension>\r
-        <mime-type>application/vnd.kde.kpresenter</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kpt</extension>\r
-        <mime-type>application/vnd.kde.kpresenter</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kpxx</extension>\r
-        <mime-type>application/vnd.ds-keypoint</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ksp</extension>\r
-        <mime-type>application/vnd.kde.kspread</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ktr</extension>\r
-        <mime-type>application/vnd.kahootz</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ktx</extension>\r
-        <mime-type>image/ktx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ktz</extension>\r
-        <mime-type>application/vnd.kahootz</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kwd</extension>\r
-        <mime-type>application/vnd.kde.kword</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>kwt</extension>\r
-        <mime-type>application/vnd.kde.kword</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lasxml</extension>\r
-        <mime-type>application/vnd.las.las+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>latex</extension>\r
-        <mime-type>application/x-latex</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lbd</extension>\r
-        <mime-type>application/vnd.llamagraphics.life-balance.desktop</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lbe</extension>\r
-        <mime-type>application/vnd.llamagraphics.life-balance.exchange+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>les</extension>\r
-        <mime-type>application/vnd.hhe.lesson-player</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lha</extension>\r
-        <mime-type>application/x-lzh-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>link66</extension>\r
-        <mime-type>application/vnd.route66.link66+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>list</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>list3820</extension>\r
-        <mime-type>application/vnd.ibm.modcap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>listafp</extension>\r
-        <mime-type>application/vnd.ibm.modcap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lnk</extension>\r
-        <mime-type>application/x-ms-shortcut</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>log</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lostxml</extension>\r
-        <mime-type>application/lost+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lrf</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lrm</extension>\r
-        <mime-type>application/vnd.ms-lrm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ltf</extension>\r
-        <mime-type>application/vnd.frogans.ltf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lvp</extension>\r
-        <mime-type>audio/vnd.lucent.voice</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lwp</extension>\r
-        <mime-type>application/vnd.lotus-wordpro</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>lzh</extension>\r
-        <mime-type>application/x-lzh-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m13</extension>\r
-        <mime-type>application/x-msmediaview</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m14</extension>\r
-        <mime-type>application/x-msmediaview</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m1v</extension>\r
-        <mime-type>video/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m21</extension>\r
-        <mime-type>application/mp21</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m2a</extension>\r
-        <mime-type>audio/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m2v</extension>\r
-        <mime-type>video/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m3a</extension>\r
-        <mime-type>audio/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m3u</extension>\r
-        <mime-type>audio/x-mpegurl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m3u8</extension>\r
-        <mime-type>application/vnd.apple.mpegurl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m4a</extension>\r
-        <mime-type>audio/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m4b</extension>\r
-        <mime-type>audio/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m4r</extension>\r
-        <mime-type>audio/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m4u</extension>\r
-        <mime-type>video/vnd.mpegurl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>m4v</extension>\r
-        <mime-type>video/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ma</extension>\r
-        <mime-type>application/mathematica</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mac</extension>\r
-        <mime-type>image/x-macpaint</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mads</extension>\r
-        <mime-type>application/mads+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mag</extension>\r
-        <mime-type>application/vnd.ecowin.chart</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>maker</extension>\r
-        <mime-type>application/vnd.framemaker</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>man</extension>\r
-        <mime-type>text/troff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mar</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mathml</extension>\r
-        <mime-type>application/mathml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mb</extension>\r
-        <mime-type>application/mathematica</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mbk</extension>\r
-        <mime-type>application/vnd.mobius.mbk</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mbox</extension>\r
-        <mime-type>application/mbox</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mc1</extension>\r
-        <mime-type>application/vnd.medcalcdata</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mcd</extension>\r
-        <mime-type>application/vnd.mcd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mcurl</extension>\r
-        <mime-type>text/vnd.curl.mcurl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mdb</extension>\r
-        <mime-type>application/x-msaccess</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mdi</extension>\r
-        <mime-type>image/vnd.ms-modi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>me</extension>\r
-        <mime-type>text/troff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mesh</extension>\r
-        <mime-type>model/mesh</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>meta4</extension>\r
-        <mime-type>application/metalink4+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>metalink</extension>\r
-        <mime-type>application/metalink+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mets</extension>\r
-        <mime-type>application/mets+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mfm</extension>\r
-        <mime-type>application/vnd.mfmp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mft</extension>\r
-        <mime-type>application/rpki-manifest</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mgp</extension>\r
-        <mime-type>application/vnd.osgeo.mapguide.package</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mgz</extension>\r
-        <mime-type>application/vnd.proteus.magazine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mid</extension>\r
-        <mime-type>audio/midi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>midi</extension>\r
-        <mime-type>audio/midi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mie</extension>\r
-        <mime-type>application/x-mie</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mif</extension>\r
-        <mime-type>application/x-mif</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mime</extension>\r
-        <mime-type>message/rfc822</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mj2</extension>\r
-        <mime-type>video/mj2</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mjp2</extension>\r
-        <mime-type>video/mj2</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mk3d</extension>\r
-        <mime-type>video/x-matroska</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mka</extension>\r
-        <mime-type>audio/x-matroska</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mks</extension>\r
-        <mime-type>video/x-matroska</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mkv</extension>\r
-        <mime-type>video/x-matroska</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mlp</extension>\r
-        <mime-type>application/vnd.dolby.mlp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mmd</extension>\r
-        <mime-type>application/vnd.chipnuts.karaoke-mmd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mmf</extension>\r
-        <mime-type>application/vnd.smaf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mmr</extension>\r
-        <mime-type>image/vnd.fujixerox.edmics-mmr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mng</extension>\r
-        <mime-type>video/x-mng</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mny</extension>\r
-        <mime-type>application/x-msmoney</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mobi</extension>\r
-        <mime-type>application/x-mobipocket-ebook</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mods</extension>\r
-        <mime-type>application/mods+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mov</extension>\r
-        <mime-type>video/quicktime</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>movie</extension>\r
-        <mime-type>video/x-sgi-movie</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp1</extension>\r
-        <mime-type>audio/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp2</extension>\r
-        <mime-type>audio/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp21</extension>\r
-        <mime-type>application/mp21</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp2a</extension>\r
-        <mime-type>audio/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp3</extension>\r
-        <mime-type>audio/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp4</extension>\r
-        <mime-type>video/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp4a</extension>\r
-        <mime-type>audio/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp4s</extension>\r
-        <mime-type>application/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mp4v</extension>\r
-        <mime-type>video/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpa</extension>\r
-        <mime-type>audio/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpc</extension>\r
-        <mime-type>application/vnd.mophun.certificate</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpe</extension>\r
-        <mime-type>video/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpeg</extension>\r
-        <mime-type>video/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpega</extension>\r
-        <mime-type>audio/x-mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpg</extension>\r
-        <mime-type>video/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpg4</extension>\r
-        <mime-type>video/mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpga</extension>\r
-        <mime-type>audio/mpeg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpkg</extension>\r
-        <mime-type>application/vnd.apple.installer+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpm</extension>\r
-        <mime-type>application/vnd.blueice.multipass</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpn</extension>\r
-        <mime-type>application/vnd.mophun.application</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpp</extension>\r
-        <mime-type>application/vnd.ms-project</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpt</extension>\r
-        <mime-type>application/vnd.ms-project</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpv2</extension>\r
-        <mime-type>video/mpeg2</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mpy</extension>\r
-        <mime-type>application/vnd.ibm.minipay</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mqy</extension>\r
-        <mime-type>application/vnd.mobius.mqy</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mrc</extension>\r
-        <mime-type>application/marc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mrcx</extension>\r
-        <mime-type>application/marcxml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ms</extension>\r
-        <mime-type>text/troff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mscml</extension>\r
-        <mime-type>application/mediaservercontrol+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mseed</extension>\r
-        <mime-type>application/vnd.fdsn.mseed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mseq</extension>\r
-        <mime-type>application/vnd.mseq</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>msf</extension>\r
-        <mime-type>application/vnd.epson.msf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>msh</extension>\r
-        <mime-type>model/mesh</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>msi</extension>\r
-        <mime-type>application/x-msdownload</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>msl</extension>\r
-        <mime-type>application/vnd.mobius.msl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>msty</extension>\r
-        <mime-type>application/vnd.muvee.style</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mts</extension>\r
-        <mime-type>model/vnd.mts</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mus</extension>\r
-        <mime-type>application/vnd.musician</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>musicxml</extension>\r
-        <mime-type>application/vnd.recordare.musicxml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mvb</extension>\r
-        <mime-type>application/x-msmediaview</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mwf</extension>\r
-        <mime-type>application/vnd.mfer</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mxf</extension>\r
-        <mime-type>application/mxf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mxl</extension>\r
-        <mime-type>application/vnd.recordare.musicxml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mxml</extension>\r
-        <mime-type>application/xv+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mxs</extension>\r
-        <mime-type>application/vnd.triscape.mxs</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>mxu</extension>\r
-        <mime-type>video/vnd.mpegurl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>n-gage</extension>\r
-        <mime-type>application/vnd.nokia.n-gage.symbian.install</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>n3</extension>\r
-        <mime-type>text/n3</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nb</extension>\r
-        <mime-type>application/mathematica</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nbp</extension>\r
-        <mime-type>application/vnd.wolfram.player</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nc</extension>\r
-        <mime-type>application/x-netcdf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ncx</extension>\r
-        <mime-type>application/x-dtbncx+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nfo</extension>\r
-        <mime-type>text/x-nfo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ngdat</extension>\r
-        <mime-type>application/vnd.nokia.n-gage.data</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nitf</extension>\r
-        <mime-type>application/vnd.nitf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nlu</extension>\r
-        <mime-type>application/vnd.neurolanguage.nlu</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nml</extension>\r
-        <mime-type>application/vnd.enliven</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nnd</extension>\r
-        <mime-type>application/vnd.noblenet-directory</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nns</extension>\r
-        <mime-type>application/vnd.noblenet-sealer</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nnw</extension>\r
-        <mime-type>application/vnd.noblenet-web</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>npx</extension>\r
-        <mime-type>image/vnd.net-fpx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nsc</extension>\r
-        <mime-type>application/x-conference</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nsf</extension>\r
-        <mime-type>application/vnd.lotus-notes</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ntf</extension>\r
-        <mime-type>application/vnd.nitf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>nzb</extension>\r
-        <mime-type>application/x-nzb</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oa2</extension>\r
-        <mime-type>application/vnd.fujitsu.oasys2</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oa3</extension>\r
-        <mime-type>application/vnd.fujitsu.oasys3</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oas</extension>\r
-        <mime-type>application/vnd.fujitsu.oasys</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>obd</extension>\r
-        <mime-type>application/x-msbinder</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>obj</extension>\r
-        <mime-type>application/x-tgif</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oda</extension>\r
-        <mime-type>application/oda</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Database -->\r
-        <extension>odb</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.database</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Chart -->\r
-        <extension>odc</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.chart</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Formula -->\r
-        <extension>odf</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.formula</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>odft</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.formula-template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Drawing -->\r
-        <extension>odg</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.graphics</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Image -->\r
-        <extension>odi</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.image</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Master Document -->\r
-        <extension>odm</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.text-master</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Presentation -->\r
-        <extension>odp</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.presentation</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Spreadsheet -->\r
-        <extension>ods</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Text -->\r
-        <extension>odt</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.text</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oga</extension>\r
-        <mime-type>audio/ogg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ogg</extension>\r
-        <mime-type>audio/ogg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ogv</extension>\r
-        <mime-type>video/ogg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- xiph mime types -->\r
-        <extension>ogx</extension>\r
-        <mime-type>application/ogg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>omdoc</extension>\r
-        <mime-type>application/omdoc+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>onepkg</extension>\r
-        <mime-type>application/onenote</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>onetmp</extension>\r
-        <mime-type>application/onenote</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>onetoc</extension>\r
-        <mime-type>application/onenote</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>onetoc2</extension>\r
-        <mime-type>application/onenote</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>opf</extension>\r
-        <mime-type>application/oebps-package+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>opml</extension>\r
-        <mime-type>text/x-opml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oprc</extension>\r
-        <mime-type>application/vnd.palm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>org</extension>\r
-        <mime-type>application/vnd.lotus-organizer</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>osf</extension>\r
-        <mime-type>application/vnd.yamaha.openscoreformat</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>osfpvg</extension>\r
-        <mime-type>application/vnd.yamaha.openscoreformat.osfpvg+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>otc</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.chart-template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>otf</extension>\r
-        <mime-type>font/otf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Drawing Template -->\r
-        <extension>otg</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- HTML Document Template -->\r
-        <extension>oth</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.text-web</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oti</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.image-template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Presentation Template -->\r
-        <extension>otp</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Spreadsheet Template -->\r
-        <extension>ots</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.spreadsheet-template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- OpenDocument Text Template -->\r
-        <extension>ott</extension>\r
-        <mime-type>application/vnd.oasis.opendocument.text-template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oxps</extension>\r
-        <mime-type>application/oxps</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>oxt</extension>\r
-        <mime-type>application/vnd.openofficeorg.extension</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p</extension>\r
-        <mime-type>text/x-pascal</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p10</extension>\r
-        <mime-type>application/pkcs10</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p12</extension>\r
-        <mime-type>application/x-pkcs12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p7b</extension>\r
-        <mime-type>application/x-pkcs7-certificates</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p7c</extension>\r
-        <mime-type>application/pkcs7-mime</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p7m</extension>\r
-        <mime-type>application/pkcs7-mime</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p7r</extension>\r
-        <mime-type>application/x-pkcs7-certreqresp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p7s</extension>\r
-        <mime-type>application/pkcs7-signature</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>p8</extension>\r
-        <mime-type>application/pkcs8</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pas</extension>\r
-        <mime-type>text/x-pascal</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>paw</extension>\r
-        <mime-type>application/vnd.pawaafile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pbd</extension>\r
-        <mime-type>application/vnd.powerbuilder6</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pbm</extension>\r
-        <mime-type>image/x-portable-bitmap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pcap</extension>\r
-        <mime-type>application/vnd.tcpdump.pcap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pcf</extension>\r
-        <mime-type>application/x-font-pcf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pcl</extension>\r
-        <mime-type>application/vnd.hp-pcl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pclxl</extension>\r
-        <mime-type>application/vnd.hp-pclxl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pct</extension>\r
-        <mime-type>image/pict</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pcurl</extension>\r
-        <mime-type>application/vnd.curl.pcurl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pcx</extension>\r
-        <mime-type>image/x-pcx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pdb</extension>\r
-        <mime-type>application/vnd.palm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pdf</extension>\r
-        <mime-type>application/pdf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pfa</extension>\r
-        <mime-type>application/x-font-type1</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pfb</extension>\r
-        <mime-type>application/x-font-type1</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pfm</extension>\r
-        <mime-type>application/x-font-type1</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pfr</extension>\r
-        <mime-type>application/font-tdpfr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pfx</extension>\r
-        <mime-type>application/x-pkcs12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pgm</extension>\r
-        <mime-type>image/x-portable-graymap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pgn</extension>\r
-        <mime-type>application/x-chess-pgn</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pgp</extension>\r
-        <mime-type>application/pgp-encrypted</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pic</extension>\r
-        <mime-type>image/pict</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pict</extension>\r
-        <mime-type>image/pict</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pkg</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pki</extension>\r
-        <mime-type>application/pkixcmp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pkipath</extension>\r
-        <mime-type>application/pkix-pkipath</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>plb</extension>\r
-        <mime-type>application/vnd.3gpp.pic-bw-large</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>plc</extension>\r
-        <mime-type>application/vnd.mobius.plc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>plf</extension>\r
-        <mime-type>application/vnd.pocketlearn</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r\r
-        <extension>pls</extension>\r
-        <mime-type>audio/x-scpls</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pml</extension>\r
-        <mime-type>application/vnd.ctc-posml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>png</extension>\r
-        <mime-type>image/png</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pnm</extension>\r
-        <mime-type>image/x-portable-anymap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pnt</extension>\r
-        <mime-type>image/x-macpaint</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>portpkg</extension>\r
-        <mime-type>application/vnd.macports.portpkg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pot</extension>\r
-        <mime-type>application/vnd.ms-powerpoint</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>potm</extension>\r
-        <mime-type>application/vnd.ms-powerpoint.template.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>potx</extension>\r
-        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ppam</extension>\r
-        <mime-type>application/vnd.ms-powerpoint.addin.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ppd</extension>\r
-        <mime-type>application/vnd.cups-ppd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ppm</extension>\r
-        <mime-type>image/x-portable-pixmap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pps</extension>\r
-        <mime-type>application/vnd.ms-powerpoint</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ppsm</extension>\r
-        <mime-type>application/vnd.ms-powerpoint.slideshow.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ppsx</extension>\r
-        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slideshow</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ppt</extension>\r
-        <mime-type>application/vnd.ms-powerpoint</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pptm</extension>\r
-        <mime-type>application/vnd.ms-powerpoint.presentation.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pptx</extension>\r
-        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pqa</extension>\r
-        <mime-type>application/vnd.palm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>prc</extension>\r
-        <mime-type>application/x-mobipocket-ebook</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pre</extension>\r
-        <mime-type>application/vnd.lotus-freelance</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>prf</extension>\r
-        <mime-type>application/pics-rules</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ps</extension>\r
-        <mime-type>application/postscript</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>psb</extension>\r
-        <mime-type>application/vnd.3gpp.pic-bw-small</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>psd</extension>\r
-        <mime-type>image/vnd.adobe.photoshop</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>psf</extension>\r
-        <mime-type>application/x-font-linux-psf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pskcxml</extension>\r
-        <mime-type>application/pskc+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ptid</extension>\r
-        <mime-type>application/vnd.pvi.ptid1</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pub</extension>\r
-        <mime-type>application/x-mspublisher</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pvb</extension>\r
-        <mime-type>application/vnd.3gpp.pic-bw-var</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pwn</extension>\r
-        <mime-type>application/vnd.3m.post-it-notes</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pya</extension>\r
-        <mime-type>audio/vnd.ms-playready.media.pya</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>pyv</extension>\r
-        <mime-type>video/vnd.ms-playready.media.pyv</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qam</extension>\r
-        <mime-type>application/vnd.epson.quickanime</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qbo</extension>\r
-        <mime-type>application/vnd.intu.qbo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qfx</extension>\r
-        <mime-type>application/vnd.intu.qfx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qps</extension>\r
-        <mime-type>application/vnd.publishare-delta-tree</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qt</extension>\r
-        <mime-type>video/quicktime</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qti</extension>\r
-        <mime-type>image/x-quicktime</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qtif</extension>\r
-        <mime-type>image/x-quicktime</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qwd</extension>\r
-        <mime-type>application/vnd.quark.quarkxpress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qwt</extension>\r
-        <mime-type>application/vnd.quark.quarkxpress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qxb</extension>\r
-        <mime-type>application/vnd.quark.quarkxpress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qxd</extension>\r
-        <mime-type>application/vnd.quark.quarkxpress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qxl</extension>\r
-        <mime-type>application/vnd.quark.quarkxpress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>qxt</extension>\r
-        <mime-type>application/vnd.quark.quarkxpress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ra</extension>\r
-        <mime-type>audio/x-pn-realaudio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ram</extension>\r
-        <mime-type>audio/x-pn-realaudio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rar</extension>\r
-        <mime-type>application/x-rar-compressed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ras</extension>\r
-        <mime-type>image/x-cmu-raster</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rcprofile</extension>\r
-        <mime-type>application/vnd.ipunplugged.rcprofile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rdf</extension>\r
-        <mime-type>application/rdf+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rdz</extension>\r
-        <mime-type>application/vnd.data-vision.rdz</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rep</extension>\r
-        <mime-type>application/vnd.businessobjects</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>res</extension>\r
-        <mime-type>application/x-dtbresource+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rgb</extension>\r
-        <mime-type>image/x-rgb</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rif</extension>\r
-        <mime-type>application/reginfo+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rip</extension>\r
-        <mime-type>audio/vnd.rip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ris</extension>\r
-        <mime-type>application/x-research-info-systems</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rl</extension>\r
-        <mime-type>application/resource-lists+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rlc</extension>\r
-        <mime-type>image/vnd.fujixerox.edmics-rlc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rld</extension>\r
-        <mime-type>application/resource-lists-diff+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rm</extension>\r
-        <mime-type>application/vnd.rn-realmedia</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rmi</extension>\r
-        <mime-type>audio/midi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rmp</extension>\r
-        <mime-type>audio/x-pn-realaudio-plugin</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rms</extension>\r
-        <mime-type>application/vnd.jcp.javame.midlet-rms</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rmvb</extension>\r
-        <mime-type>application/vnd.rn-realmedia-vbr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rnc</extension>\r
-        <mime-type>application/relax-ng-compact-syntax</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>roa</extension>\r
-        <mime-type>application/rpki-roa</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>roff</extension>\r
-        <mime-type>text/troff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rp9</extension>\r
-        <mime-type>application/vnd.cloanto.rp9</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rpss</extension>\r
-        <mime-type>application/vnd.nokia.radio-presets</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rpst</extension>\r
-        <mime-type>application/vnd.nokia.radio-preset</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rq</extension>\r
-        <mime-type>application/sparql-query</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rs</extension>\r
-        <mime-type>application/rls-services+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rsd</extension>\r
-        <mime-type>application/rsd+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rss</extension>\r
-        <mime-type>application/rss+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rtf</extension>\r
-        <mime-type>application/rtf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>rtx</extension>\r
-        <mime-type>text/richtext</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>s</extension>\r
-        <mime-type>text/x-asm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>s3m</extension>\r
-        <mime-type>audio/s3m</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>saf</extension>\r
-        <mime-type>application/vnd.yamaha.smaf-audio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sbml</extension>\r
-        <mime-type>application/sbml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sc</extension>\r
-        <mime-type>application/vnd.ibm.secure-container</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>scd</extension>\r
-        <mime-type>application/x-msschedule</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>scm</extension>\r
-        <mime-type>application/vnd.lotus-screencam</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>scq</extension>\r
-        <mime-type>application/scvp-cv-request</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>scs</extension>\r
-        <mime-type>application/scvp-cv-response</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>scurl</extension>\r
-        <mime-type>text/vnd.curl.scurl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sda</extension>\r
-        <mime-type>application/vnd.stardivision.draw</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sdc</extension>\r
-        <mime-type>application/vnd.stardivision.calc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sdd</extension>\r
-        <mime-type>application/vnd.stardivision.impress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sdkd</extension>\r
-        <mime-type>application/vnd.solent.sdkm+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sdkm</extension>\r
-        <mime-type>application/vnd.solent.sdkm+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sdp</extension>\r
-        <mime-type>application/sdp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sdw</extension>\r
-        <mime-type>application/vnd.stardivision.writer</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>see</extension>\r
-        <mime-type>application/vnd.seemail</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>seed</extension>\r
-        <mime-type>application/vnd.fdsn.seed</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sema</extension>\r
-        <mime-type>application/vnd.sema</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>semd</extension>\r
-        <mime-type>application/vnd.semd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>semf</extension>\r
-        <mime-type>application/vnd.semf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ser</extension>\r
-        <mime-type>application/java-serialized-object</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>setpay</extension>\r
-        <mime-type>application/set-payment-initiation</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>setreg</extension>\r
-        <mime-type>application/set-registration-initiation</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sfd-hdstx</extension>\r
-        <mime-type>application/vnd.hydrostatix.sof-data</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sfs</extension>\r
-        <mime-type>application/vnd.spotfire.sfs</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sfv</extension>\r
-        <mime-type>text/x-sfv</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sgi</extension>\r
-        <mime-type>image/sgi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sgl</extension>\r
-        <mime-type>application/vnd.stardivision.writer-global</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sgm</extension>\r
-        <mime-type>text/sgml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sgml</extension>\r
-        <mime-type>text/sgml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sh</extension>\r
-        <mime-type>application/x-sh</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>shar</extension>\r
-        <mime-type>application/x-shar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>shf</extension>\r
-        <mime-type>application/shf+xml</mime-type>\r
-    </mime-mapping>\r
-    <!--\r
-    <mime-mapping>\r
-        <extension>shtml</extension>\r
-        <mime-type>text/x-server-parsed-html</mime-type>\r
-    </mime-mapping>\r
-    -->\r
-    <mime-mapping>\r
-        <extension>sid</extension>\r
-        <mime-type>image/x-mrsid-image</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sig</extension>\r
-        <mime-type>application/pgp-signature</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sil</extension>\r
-        <mime-type>audio/silk</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>silo</extension>\r
-        <mime-type>model/mesh</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sis</extension>\r
-        <mime-type>application/vnd.symbian.install</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sisx</extension>\r
-        <mime-type>application/vnd.symbian.install</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sit</extension>\r
-        <mime-type>application/x-stuffit</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sitx</extension>\r
-        <mime-type>application/x-stuffitx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>skd</extension>\r
-        <mime-type>application/vnd.koan</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>skm</extension>\r
-        <mime-type>application/vnd.koan</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>skp</extension>\r
-        <mime-type>application/vnd.koan</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>skt</extension>\r
-        <mime-type>application/vnd.koan</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sldm</extension>\r
-        <mime-type>application/vnd.ms-powerpoint.slide.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sldx</extension>\r
-        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slide</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>slt</extension>\r
-        <mime-type>application/vnd.epson.salt</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sm</extension>\r
-        <mime-type>application/vnd.stepmania.stepchart</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>smf</extension>\r
-        <mime-type>application/vnd.stardivision.math</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>smi</extension>\r
-        <mime-type>application/smil+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>smil</extension>\r
-        <mime-type>application/smil+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>smv</extension>\r
-        <mime-type>video/x-smv</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>smzip</extension>\r
-        <mime-type>application/vnd.stepmania.package</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>snd</extension>\r
-        <mime-type>audio/basic</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>snf</extension>\r
-        <mime-type>application/x-font-snf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>so</extension>\r
-        <mime-type>application/octet-stream</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>spc</extension>\r
-        <mime-type>application/x-pkcs7-certificates</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>spf</extension>\r
-        <mime-type>application/vnd.yamaha.smaf-phrase</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>spl</extension>\r
-        <mime-type>application/x-futuresplash</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>spot</extension>\r
-        <mime-type>text/vnd.in3d.spot</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>spp</extension>\r
-        <mime-type>application/scvp-vp-response</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>spq</extension>\r
-        <mime-type>application/scvp-vp-request</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>spx</extension>\r
-        <mime-type>audio/ogg</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sql</extension>\r
-        <mime-type>application/x-sql</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>src</extension>\r
-        <mime-type>application/x-wais-source</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>srt</extension>\r
-        <mime-type>application/x-subrip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sru</extension>\r
-        <mime-type>application/sru+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>srx</extension>\r
-        <mime-type>application/sparql-results+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ssdl</extension>\r
-        <mime-type>application/ssdl+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sse</extension>\r
-        <mime-type>application/vnd.kodak-descriptor</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ssf</extension>\r
-        <mime-type>application/vnd.epson.ssf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ssml</extension>\r
-        <mime-type>application/ssml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>st</extension>\r
-        <mime-type>application/vnd.sailingtracker.track</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>stc</extension>\r
-        <mime-type>application/vnd.sun.xml.calc.template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>std</extension>\r
-        <mime-type>application/vnd.sun.xml.draw.template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>stf</extension>\r
-        <mime-type>application/vnd.wt.stf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sti</extension>\r
-        <mime-type>application/vnd.sun.xml.impress.template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>stk</extension>\r
-        <mime-type>application/hyperstudio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>stl</extension>\r
-        <mime-type>application/vnd.ms-pki.stl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>str</extension>\r
-        <mime-type>application/vnd.pg.format</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>stw</extension>\r
-        <mime-type>application/vnd.sun.xml.writer.template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sub</extension>\r
-        <mime-type>text/vnd.dvb.subtitle</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sus</extension>\r
-        <mime-type>application/vnd.sus-calendar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>susp</extension>\r
-        <mime-type>application/vnd.sus-calendar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sv4cpio</extension>\r
-        <mime-type>application/x-sv4cpio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sv4crc</extension>\r
-        <mime-type>application/x-sv4crc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>svc</extension>\r
-        <mime-type>application/vnd.dvb.service</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>svd</extension>\r
-        <mime-type>application/vnd.svd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>svg</extension>\r
-        <mime-type>image/svg+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>svgz</extension>\r
-        <mime-type>image/svg+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>swa</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>swf</extension>\r
-        <mime-type>application/x-shockwave-flash</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>swi</extension>\r
-        <mime-type>application/vnd.aristanetworks.swi</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sxc</extension>\r
-        <mime-type>application/vnd.sun.xml.calc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sxd</extension>\r
-        <mime-type>application/vnd.sun.xml.draw</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sxg</extension>\r
-        <mime-type>application/vnd.sun.xml.writer.global</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sxi</extension>\r
-        <mime-type>application/vnd.sun.xml.impress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sxm</extension>\r
-        <mime-type>application/vnd.sun.xml.math</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>sxw</extension>\r
-        <mime-type>application/vnd.sun.xml.writer</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>t</extension>\r
-        <mime-type>text/troff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>t3</extension>\r
-        <mime-type>application/x-t3vm-image</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>taglet</extension>\r
-        <mime-type>application/vnd.mynfc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tao</extension>\r
-        <mime-type>application/vnd.tao.intent-module-archive</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tar</extension>\r
-        <mime-type>application/x-tar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tcap</extension>\r
-        <mime-type>application/vnd.3gpp2.tcap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tcl</extension>\r
-        <mime-type>application/x-tcl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>teacher</extension>\r
-        <mime-type>application/vnd.smart.teacher</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tei</extension>\r
-        <mime-type>application/tei+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>teicorpus</extension>\r
-        <mime-type>application/tei+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tex</extension>\r
-        <mime-type>application/x-tex</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>texi</extension>\r
-        <mime-type>application/x-texinfo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>texinfo</extension>\r
-        <mime-type>application/x-texinfo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>text</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tfi</extension>\r
-        <mime-type>application/thraud+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tfm</extension>\r
-        <mime-type>application/x-tex-tfm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tga</extension>\r
-        <mime-type>image/x-tga</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>thmx</extension>\r
-        <mime-type>application/vnd.ms-officetheme</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tif</extension>\r
-        <mime-type>image/tiff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tiff</extension>\r
-        <mime-type>image/tiff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tmo</extension>\r
-        <mime-type>application/vnd.tmobile-livetv</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>torrent</extension>\r
-        <mime-type>application/x-bittorrent</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tpl</extension>\r
-        <mime-type>application/vnd.groove-tool-template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tpt</extension>\r
-        <mime-type>application/vnd.trid.tpt</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tr</extension>\r
-        <mime-type>text/troff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tra</extension>\r
-        <mime-type>application/vnd.trueapp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>trm</extension>\r
-        <mime-type>application/x-msterminal</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tsd</extension>\r
-        <mime-type>application/timestamped-data</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>tsv</extension>\r
-        <mime-type>text/tab-separated-values</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ttc</extension>\r
-        <mime-type>font/collection</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ttf</extension>\r
-        <mime-type>font/ttf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ttl</extension>\r
-        <mime-type>text/turtle</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>twd</extension>\r
-        <mime-type>application/vnd.simtech-mindmapper</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>twds</extension>\r
-        <mime-type>application/vnd.simtech-mindmapper</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>txd</extension>\r
-        <mime-type>application/vnd.genomatix.tuxedo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>txf</extension>\r
-        <mime-type>application/vnd.mobius.txf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>txt</extension>\r
-        <mime-type>text/plain</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>u32</extension>\r
-        <mime-type>application/x-authorware-bin</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>udeb</extension>\r
-        <mime-type>application/x-debian-package</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ufd</extension>\r
-        <mime-type>application/vnd.ufdl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ufdl</extension>\r
-        <mime-type>application/vnd.ufdl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ulw</extension>\r
-        <mime-type>audio/basic</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ulx</extension>\r
-        <mime-type>application/x-glulx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>umj</extension>\r
-        <mime-type>application/vnd.umajin</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>unityweb</extension>\r
-        <mime-type>application/vnd.unity</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uoml</extension>\r
-        <mime-type>application/vnd.uoml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uri</extension>\r
-        <mime-type>text/uri-list</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uris</extension>\r
-        <mime-type>text/uri-list</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>urls</extension>\r
-        <mime-type>text/uri-list</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>ustar</extension>\r
-        <mime-type>application/x-ustar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>utz</extension>\r
-        <mime-type>application/vnd.uiq.theme</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uu</extension>\r
-        <mime-type>text/x-uuencode</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uva</extension>\r
-        <mime-type>audio/vnd.dece.audio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvd</extension>\r
-        <mime-type>application/vnd.dece.data</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvf</extension>\r
-        <mime-type>application/vnd.dece.data</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvg</extension>\r
-        <mime-type>image/vnd.dece.graphic</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvh</extension>\r
-        <mime-type>video/vnd.dece.hd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvi</extension>\r
-        <mime-type>image/vnd.dece.graphic</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvm</extension>\r
-        <mime-type>video/vnd.dece.mobile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvp</extension>\r
-        <mime-type>video/vnd.dece.pd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvs</extension>\r
-        <mime-type>video/vnd.dece.sd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvt</extension>\r
-        <mime-type>application/vnd.dece.ttml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvu</extension>\r
-        <mime-type>video/vnd.uvvu.mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvv</extension>\r
-        <mime-type>video/vnd.dece.video</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvva</extension>\r
-        <mime-type>audio/vnd.dece.audio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvd</extension>\r
-        <mime-type>application/vnd.dece.data</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvf</extension>\r
-        <mime-type>application/vnd.dece.data</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvg</extension>\r
-        <mime-type>image/vnd.dece.graphic</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvh</extension>\r
-        <mime-type>video/vnd.dece.hd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvi</extension>\r
-        <mime-type>image/vnd.dece.graphic</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvm</extension>\r
-        <mime-type>video/vnd.dece.mobile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvp</extension>\r
-        <mime-type>video/vnd.dece.pd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvs</extension>\r
-        <mime-type>video/vnd.dece.sd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvt</extension>\r
-        <mime-type>application/vnd.dece.ttml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvu</extension>\r
-        <mime-type>video/vnd.uvvu.mp4</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvv</extension>\r
-        <mime-type>video/vnd.dece.video</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvx</extension>\r
-        <mime-type>application/vnd.dece.unspecified</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvvz</extension>\r
-        <mime-type>application/vnd.dece.zip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvx</extension>\r
-        <mime-type>application/vnd.dece.unspecified</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>uvz</extension>\r
-        <mime-type>application/vnd.dece.zip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vcard</extension>\r
-        <mime-type>text/vcard</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vcd</extension>\r
-        <mime-type>application/x-cdlink</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vcf</extension>\r
-        <mime-type>text/x-vcard</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vcg</extension>\r
-        <mime-type>application/vnd.groove-vcard</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vcs</extension>\r
-        <mime-type>text/x-vcalendar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vcx</extension>\r
-        <mime-type>application/vnd.vcx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vis</extension>\r
-        <mime-type>application/vnd.visionary</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>viv</extension>\r
-        <mime-type>video/vnd.vivo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vob</extension>\r
-        <mime-type>video/x-ms-vob</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vor</extension>\r
-        <mime-type>application/vnd.stardivision.writer</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vox</extension>\r\r
-        <mime-type>application/x-authorware-bin</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vrml</extension>\r
-        <mime-type>model/vrml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vsd</extension>\r
-        <mime-type>application/vnd.visio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vsf</extension>\r
-        <mime-type>application/vnd.vsf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vss</extension>\r
-        <mime-type>application/vnd.visio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vst</extension>\r
-        <mime-type>application/vnd.visio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vsw</extension>\r
-        <mime-type>application/vnd.visio</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vtu</extension>\r
-        <mime-type>model/vnd.vtu</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>vxml</extension>\r
-        <mime-type>application/voicexml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>w3d</extension>\r
-        <mime-type>application/x-director</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wad</extension>\r
-        <mime-type>application/x-doom</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wav</extension>\r
-        <mime-type>audio/x-wav</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wax</extension>\r
-        <mime-type>audio/x-ms-wax</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- Wireless Bitmap -->\r
-        <extension>wbmp</extension>\r
-        <mime-type>image/vnd.wap.wbmp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wbs</extension>\r
-        <mime-type>application/vnd.criticaltools.wbs+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wbxml</extension>\r
-        <mime-type>application/vnd.wap.wbxml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wcm</extension>\r
-        <mime-type>application/vnd.ms-works</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wdb</extension>\r
-        <mime-type>application/vnd.ms-works</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wdp</extension>\r
-        <mime-type>image/vnd.ms-photo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>weba</extension>\r
-        <mime-type>audio/webm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>webm</extension>\r
-        <mime-type>video/webm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>webp</extension>\r
-        <mime-type>image/webp</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wg</extension>\r
-        <mime-type>application/vnd.pmi.widget</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wgt</extension>\r
-        <mime-type>application/widget</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wks</extension>\r
-        <mime-type>application/vnd.ms-works</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wm</extension>\r
-        <mime-type>video/x-ms-wm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wma</extension>\r
-        <mime-type>audio/x-ms-wma</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wmd</extension>\r
-        <mime-type>application/x-ms-wmd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wmf</extension>\r
-        <mime-type>application/x-msmetafile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- WML Source -->\r
-        <extension>wml</extension>\r
-        <mime-type>text/vnd.wap.wml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- Compiled WML -->\r
-        <extension>wmlc</extension>\r
-        <mime-type>application/vnd.wap.wmlc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- WML Script Source -->\r
-        <extension>wmls</extension>\r
-        <mime-type>text/vnd.wap.wmlscript</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <!-- Compiled WML Script -->\r
-        <extension>wmlsc</extension>\r
-        <mime-type>application/vnd.wap.wmlscriptc</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wmv</extension>\r
-        <mime-type>video/x-ms-wmv</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wmx</extension>\r
-        <mime-type>video/x-ms-wmx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wmz</extension>\r
-        <mime-type>application/x-msmetafile</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>woff</extension>\r
-        <mime-type>font/woff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>woff2</extension>\r
-        <mime-type>font/woff2</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wpd</extension>\r
-        <mime-type>application/vnd.wordperfect</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wpl</extension>\r
-        <mime-type>application/vnd.ms-wpl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wps</extension>\r
-        <mime-type>application/vnd.ms-works</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wqd</extension>\r
-        <mime-type>application/vnd.wqd</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wri</extension>\r
-        <mime-type>application/x-mswrite</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wrl</extension>\r
-        <mime-type>model/vrml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wsdl</extension>\r
-        <mime-type>application/wsdl+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wspolicy</extension>\r
-        <mime-type>application/wspolicy+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wtb</extension>\r
-        <mime-type>application/vnd.webturbo</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>wvx</extension>\r
-        <mime-type>video/x-ms-wvx</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>x32</extension>\r
-        <mime-type>application/x-authorware-bin</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>x3d</extension>\r
-        <mime-type>model/x3d+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>x3db</extension>\r
-        <mime-type>model/x3d+binary</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>x3dbz</extension>\r
-        <mime-type>model/x3d+binary</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>x3dv</extension>\r
-        <mime-type>model/x3d+vrml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>x3dvz</extension>\r
-        <mime-type>model/x3d+vrml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>x3dz</extension>\r
-        <mime-type>model/x3d+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xaml</extension>\r
-        <mime-type>application/xaml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xap</extension>\r
-        <mime-type>application/x-silverlight-app</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xar</extension>\r
-        <mime-type>application/vnd.xara</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xbap</extension>\r
-        <mime-type>application/x-ms-xbap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xbd</extension>\r
-        <mime-type>application/vnd.fujixerox.docuworks.binder</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xbm</extension>\r
-        <mime-type>image/x-xbitmap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xdf</extension>\r
-        <mime-type>application/xcap-diff+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r\r
-        <extension>xdm</extension>\r
-        <mime-type>application/vnd.syncml.dm+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xdp</extension>\r
-        <mime-type>application/vnd.adobe.xdp+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xdssc</extension>\r
-        <mime-type>application/dssc+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xdw</extension>\r
-        <mime-type>application/vnd.fujixerox.docuworks</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xenc</extension>\r
-        <mime-type>application/xenc+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xer</extension>\r
-        <mime-type>application/patch-ops-error+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xfdf</extension>\r
-        <mime-type>application/vnd.adobe.xfdf</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xfdl</extension>\r
-        <mime-type>application/vnd.xfdl</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xht</extension>\r
-        <mime-type>application/xhtml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xhtml</extension>\r
-        <mime-type>application/xhtml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xhvml</extension>\r
-        <mime-type>application/xv+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xif</extension>\r
-        <mime-type>image/vnd.xiff</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xla</extension>\r
-        <mime-type>application/vnd.ms-excel</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlam</extension>\r
-        <mime-type>application/vnd.ms-excel.addin.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlc</extension>\r
-        <mime-type>application/vnd.ms-excel</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlf</extension>\r
-        <mime-type>application/x-xliff+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlm</extension>\r
-        <mime-type>application/vnd.ms-excel</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xls</extension>\r
-        <mime-type>application/vnd.ms-excel</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlsb</extension>\r
-        <mime-type>application/vnd.ms-excel.sheet.binary.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlsm</extension>\r
-        <mime-type>application/vnd.ms-excel.sheet.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlsx</extension>\r
-        <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlt</extension>\r
-        <mime-type>application/vnd.ms-excel</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xltm</extension>\r
-        <mime-type>application/vnd.ms-excel.template.macroenabled.12</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xltx</extension>\r
-        <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.template</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xlw</extension>\r
-        <mime-type>application/vnd.ms-excel</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xm</extension>\r
-        <mime-type>audio/xm</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xml</extension>\r
-        <mime-type>application/xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xo</extension>\r
-        <mime-type>application/vnd.olpc-sugar</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xop</extension>\r
-        <mime-type>application/xop+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xpi</extension>\r
-        <mime-type>application/x-xpinstall</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xpl</extension>\r
-        <mime-type>application/xproc+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xpm</extension>\r
-        <mime-type>image/x-xpixmap</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xpr</extension>\r
-        <mime-type>application/vnd.is-xpr</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xps</extension>\r
-        <mime-type>application/vnd.ms-xpsdocument</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xpw</extension>\r
-        <mime-type>application/vnd.intercon.formnet</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xpx</extension>\r
-        <mime-type>application/vnd.intercon.formnet</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xsl</extension>\r
-        <mime-type>application/xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xslt</extension>\r
-        <mime-type>application/xslt+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xsm</extension>\r
-        <mime-type>application/vnd.syncml+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xspf</extension>\r
-        <mime-type>application/xspf+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xul</extension>\r
-        <mime-type>application/vnd.mozilla.xul+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xvm</extension>\r
-        <mime-type>application/xv+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xvml</extension>\r
-        <mime-type>application/xv+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xwd</extension>\r
-        <mime-type>image/x-xwindowdump</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xyz</extension>\r
-        <mime-type>chemical/x-xyz</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>xz</extension>\r
-        <mime-type>application/x-xz</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>yang</extension>\r
-        <mime-type>application/yang</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>yin</extension>\r
-        <mime-type>application/yin+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z</extension>\r
-        <mime-type>application/x-compress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>Z</extension>\r
-        <mime-type>application/x-compress</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z1</extension>\r
-        <mime-type>application/x-zmachine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z2</extension>\r
-        <mime-type>application/x-zmachine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z3</extension>\r
-        <mime-type>application/x-zmachine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z4</extension>\r
-        <mime-type>application/x-zmachine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z5</extension>\r
-        <mime-type>application/x-zmachine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z6</extension>\r
-        <mime-type>application/x-zmachine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z7</extension>\r
-        <mime-type>application/x-zmachine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>z8</extension>\r
-        <mime-type>application/x-zmachine</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>zaz</extension>\r
-        <mime-type>application/vnd.zzazz.deck+xml</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>zip</extension>\r
-        <mime-type>application/zip</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>zir</extension>\r
-        <mime-type>application/vnd.zul</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>zirz</extension>\r
-        <mime-type>application/vnd.zul</mime-type>\r
-    </mime-mapping>\r
-    <mime-mapping>\r
-        <extension>zmm</extension>\r
-        <mime-type>application/vnd.handheld-entertainment+xml</mime-type>\r
-    </mime-mapping>\r
-\r
-  <!-- ==================== Default Welcome File List ===================== -->\r
-  <!-- When a request URI refers to a directory, the default servlet looks  -->\r
-  <!-- for a "welcome file" within that directory and, if present, to the   -->\r
-  <!-- corresponding resource URI for display.                              -->\r
-  <!-- If no welcome files are present, the default servlet either serves a -->\r
-  <!-- directory listing (see default servlet configuration on how to       -->\r
-  <!-- customize) or returns a 404 status, depending on the value of the    -->\r
-  <!-- listings setting.                                                    -->\r
-  <!--                                                                      -->\r
-  <!-- If you define welcome files in your own application's web.xml        -->\r
-  <!-- deployment descriptor, that list *replaces* the list configured      -->\r
-  <!-- here, so be sure to include any of the default values that you wish  -->\r
-  <!-- to use within your application.                                       -->\r
-\r
-    <welcome-file-list>\r
-        <welcome-file>index.html</welcome-file>\r
-        <welcome-file>index.htm</welcome-file>\r
-        <welcome-file>index.jsp</welcome-file>\r
-    </welcome-file-list>\r
-\r
-<security-constraint> <web-resource-collection> <web-resource-name>Protected Context</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <!-- auth-constraint goes here if you requre authentication --> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>\r
-</web-app>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
+  version="4.0">
+
+  <!-- ======================== Introduction ============================== -->
+  <!-- This document defines default values for *all* web applications      -->
+  <!-- loaded into this instance of Tomcat.  As each application is         -->
+  <!-- deployed, this file is processed, followed by the                    -->
+  <!-- "/WEB-INF/web.xml" deployment descriptor from your own               -->
+  <!-- applications.                                                        -->
+  <!--                                                                      -->
+  <!-- WARNING:  Do not configure application-specific resources here!      -->
+  <!-- They should go in the "/WEB-INF/web.xml" file in your application.   -->
+
+
+  <!-- ================== Built In Servlet Definitions ==================== -->
+
+
+  <!-- The default servlet for all web applications, that serves static     -->
+  <!-- resources.  It processes all requests that are not mapped to other   -->
+  <!-- servlets with servlet mappings (defined either here or in your own   -->
+  <!-- web.xml file).  This servlet supports the following initialization   -->
+  <!-- parameters (default values are in square brackets):                  -->
+  <!--                                                                      -->
+  <!--   debug               Debugging detail level for messages logged     -->
+  <!--                       by this servlet. Useful values are 0, 1, and   -->
+  <!--                       11 where higher values mean more detail. [0]   -->
+  <!--                                                                      -->
+  <!--   fileEncoding        Encoding to be used to read static resources   -->
+  <!--                       [platform default]                             -->
+  <!--                                                                      -->
+  <!--   useBomIfPresent     If a static file contains a byte order mark    -->
+  <!--                       (BOM), should this be used to determine the    -->
+  <!--                       file encoding in preference to fileEncoding.   -->
+  <!--                       [true]                                         -->
+  <!--                                                                      -->
+  <!--   input               Input buffer size (in bytes) when reading      -->
+  <!--                       resources to be served.  [2048]                -->
+  <!--                                                                      -->
+  <!--   listings            Should directory listings be produced if there -->
+  <!--                       is no welcome file in this directory?  [false] -->
+  <!--                       WARNING: Listings for directories with many    -->
+  <!--                       entries can be slow and may consume            -->
+  <!--                       significant proportions of server resources.   -->
+  <!--                                                                      -->
+  <!--   output              Output buffer size (in bytes) when writing     -->
+  <!--                       resources to be served.  [2048]                -->
+  <!--                                                                      -->
+  <!--   readonly            Is this context "read only", so HTTP           -->
+  <!--                       commands like PUT and DELETE are               -->
+  <!--                       rejected?  [true]                              -->
+  <!--                                                                      -->
+  <!--   readmeFile          File to display together with the directory    -->
+  <!--                       contents. [null]                               -->
+  <!--                                                                      -->
+  <!--   sendfileSize        If the connector used supports sendfile, this  -->
+  <!--                       represents the minimal file size in KB for     -->
+  <!--                       which sendfile will be used. Use a negative    -->
+  <!--                       value to always disable sendfile.  [48]        -->
+  <!--                                                                      -->
+  <!--   useAcceptRanges     Should the Accept-Ranges header be included    -->
+  <!--                       in responses where appropriate? [true]         -->
+  <!--                                                                      -->
+  <!--  For directory listing customization. Checks localXsltFile, then     -->
+  <!--  globalXsltFile, then defaults to original behavior.                 -->
+  <!--                                                                      -->
+  <!--   localXsltFile       Make directory listings an XML doc and         -->
+  <!--                       pass the result to this style sheet residing   -->
+  <!--                       in that directory. This overrides              -->
+  <!--                       contextXsltFile and globalXsltFile[null]       -->
+  <!--                                                                      -->
+  <!--   contextXsltFile     Make directory listings an XML doc and         -->
+  <!--                       pass the result to this style sheet which is   -->
+  <!--                       relative to the context root. This overrides   -->
+  <!--                       globalXsltFile[null]                           -->
+  <!--                                                                      -->
+  <!--   globalXsltFile      Site wide configuration version of             -->
+  <!--                       localXsltFile. This argument must either be an -->
+  <!--                       absolute or relative (to either                -->
+  <!--                       $CATALINA_BASE/conf or $CATALINA_HOME/conf)    -->
+  <!--                       path that points to a location below either    -->
+  <!--                       $CATALINA_BASE/conf (checked first) or         -->
+  <!--                       $CATALINA_HOME/conf (checked second).[null]    -->
+  <!--                                                                      -->
+  <!--   showServerInfo      Should server information be presented in the  -->
+  <!--                       response sent to clients when directory        -->
+  <!--                       listings is enabled? [true]                    -->
+
+    <servlet>
+        <servlet-name>default</servlet-name>
+        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
+        <init-param>
+            <param-name>debug</param-name>
+            <param-value>0</param-value>
+        </init-param>
+        <init-param>
+            <param-name>listings</param-name>
+            <param-value>false</param-value>
+        </init-param>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+
+  <!-- The JSP page compiler and execution servlet, which is the mechanism  -->
+  <!-- used by Tomcat to support JSP pages.  Traditionally, this servlet    -->
+  <!-- is mapped to the URL pattern "*.jsp".  This servlet supports the     -->
+  <!-- following initialization parameters (default values are in square    -->
+  <!-- brackets):                                                           -->
+  <!--                                                                      -->
+  <!--   checkInterval       If development is false and checkInterval is   -->
+  <!--                       greater than zero, background compilations are -->
+  <!--                       enabled. checkInterval is the time in seconds  -->
+  <!--                       between checks to see if a JSP page (and its   -->
+  <!--                       dependent files) needs to  be recompiled. [0]  -->
+  <!--                                                                      -->
+  <!--   classdebuginfo      Should the class file be compiled with         -->
+  <!--                       debugging information?  [true]                 -->
+  <!--                                                                      -->
+  <!--   classpath           What class path should I use while compiling   -->
+  <!--                       generated servlets?  [Created dynamically      -->
+  <!--                       based on the current web application]          -->
+  <!--                                                                      -->
+  <!--   compiler            Which compiler Ant should use to compile JSP   -->
+  <!--                       pages.  See the jasper documentation for more  -->
+  <!--                       information.                                   -->
+  <!--                                                                      -->
+  <!--   compilerSourceVM    Compiler source VM. [1.8]                      -->
+  <!--                                                                      -->
+  <!--   compilerTargetVM    Compiler target VM. [1.8]                      -->
+  <!--                                                                      -->
+  <!--   development         Is Jasper used in development mode? If true,   -->
+  <!--                       the frequency at which JSPs are checked for    -->
+  <!--                       modification may be specified via the          -->
+  <!--                       modificationTestInterval parameter. [true]     -->
+  <!--                                                                      -->
+  <!--   displaySourceFragment                                              -->
+  <!--                       Should a source fragment be included in        -->
+  <!--                       exception messages? [true]                     -->
+  <!--                                                                      -->
+  <!--   dumpSmap            Should the SMAP info for JSR45 debugging be    -->
+  <!--                       dumped to a file? [false]                      -->
+  <!--                       False if suppressSmap is true                  -->
+  <!--                                                                      -->
+  <!--   enablePooling       Determines whether tag handler pooling is      -->
+  <!--                       enabled. This is a compilation option. It will -->
+  <!--                       not alter the behaviour of JSPs that have      -->
+  <!--                       already been compiled. [true]                  -->
+  <!--                                                                      -->
+  <!--   engineOptionsClass  Allows specifying the Options class used to    -->
+  <!--                       configure Jasper. If not present, the default  -->
+  <!--                       EmbeddedServletOptions will be used.           -->
+  <!--                       This option is ignored when running under a    -->
+  <!--                       SecurityManager.                               -->
+  <!--                                                                      -->
+  <!--   errorOnUseBeanInvalidClassAttribute                                -->
+  <!--                       Should Jasper issue an error when the value of -->
+
+  <!--                       the class attribute in an useBean action is    -->
+  <!--                       not a valid bean class?  [true]                -->
+  <!--                                                                      -->
+  <!--   fork                Tell Ant to fork compiles of JSP pages so that -->
+  <!--                       a separate JVM is used for JSP page compiles   -->
+  <!--                       from the one Tomcat is running in. [true]      -->
+  <!--                                                                      -->
+  <!--   genStringAsCharArray                                               -->
+  <!--                       Should text strings be generated as char       -->
+  <!--                       arrays, to improve performance in some cases?  -->
+  <!--                       [false]                                        -->
+  <!--                                                                      -->
+  <!--   ieClassId           The class-id value to be sent to Internet      -->
+  <!--                       Explorer when using <jsp:plugin> tags.         -->
+  <!--                       [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93]   -->
+  <!--                                                                      -->
+  <!--   javaEncoding        Java file encoding to use for generating java  -->
+  <!--                       source files. [UTF8]                           -->
+  <!--                                                                      -->
+  <!--   keepgenerated       Should we keep the generated Java source code  -->
+  <!--                       for each page instead of deleting it? [true]   -->
+  <!--                                                                      -->
+  <!--   mappedfile          Should we generate static content with one     -->
+  <!--                       print statement per input line, to ease        -->
+  <!--                       debugging?  [true]                             -->
+  <!--                                                                      -->
+  <!--   maxLoadedJsps       The maximum number of JSPs that will be loaded -->
+  <!--                       for a web application. If more than this       -->
+  <!--                       number of JSPs are loaded, the least recently  -->
+  <!--                       used JSPs will be unloaded so that the number  -->
+  <!--                       of JSPs loaded at any one time does not exceed -->
+  <!--                       this limit. A value of zero or less indicates  -->
+  <!--                       no limit. [-1]                                 -->
+  <!--                                                                      -->
+  <!--   jspIdleTimeout      The amount of time in seconds a JSP can be     -->
+  <!--                       idle before it is unloaded. A value of zero    -->
+  <!--                       or less indicates never unload. [-1]           -->
+  <!--                                                                      -->
+  <!--   modificationTestInterval                                           -->
+  <!--                       Causes a JSP (and its dependent files) to not  -->
+  <!--                       be checked for modification during the         -->
+  <!--                       specified time interval (in seconds) from the  -->
+  <!--                       last time the JSP was checked for              -->
+  <!--                       modification. A value of 0 will cause the JSP  -->
+  <!--                       to be checked on every access.                 -->
+  <!--                       Used in development mode only. [4]             -->
+  <!--                                                                      -->
+  <!--   recompileOnFail     If a JSP compilation fails should the          -->
+  <!--                       modificationTestInterval be ignored and the    -->
+  <!--                       next access trigger a re-compilation attempt?  -->
+  <!--                       Used in development mode only and is disabled  -->
+  <!--                       by default as compilation may be expensive and -->
+  <!--                       could lead to excessive resource usage.        -->
+  <!--                       [false]                                        -->
+  <!--                                                                      -->
+  <!--   scratchdir          What scratch directory should we use when      -->
+  <!--                       compiling JSP pages?  [default work directory  -->
+  <!--                       for the current web application]               -->
+  <!--                       This option is ignored when running under a    -->
+  <!--                       SecurityManager.                               -->
+  <!--                                                                      -->
+  <!--   suppressSmap        Should the generation of SMAP info for JSR45   -->
+  <!--                       debugging be suppressed?  [false]              -->
+  <!--                                                                      -->
+  <!--   trimSpaces          Should template text that consists entirely of -->
+  <!--                       whitespace be removed from the output (true),  -->
+  <!--                       replaced with a single space (single) or left  -->
+  <!--                       unchanged (false)? Note that if a JSP page or  -->
+  <!--                       tag file specifies a trimDirectiveWhitespaces  -->
+  <!--                       value of true, that will take precedence over  -->
+  <!--                       this configuration setting for that page/tag.  -->
+  <!--                       [false]                                        -->
+  <!--                                                                      -->
+  <!--   xpoweredBy          Determines whether X-Powered-By response       -->
+  <!--                       header is added by generated servlet.  [false] -->
+  <!--                                                                      -->
+  <!--   strictQuoteEscaping When scriptlet expressions are used for        -->
+  <!--                       attribute values, should the rules in JSP.1.6  -->
+  <!--                       for the escaping of quote characters be        -->
+  <!--                       strictly applied? [true]                       -->
+  <!--                                                                      -->
+  <!--   quoteAttributeEL    When EL is used in an attribute value on a     -->
+  <!--                       JSP page should the rules for quoting of       -->
+  <!--                       attributes described in JSP.1.6 be applied to  -->
+  <!--                       the expression? [true]                         -->
+
+    <servlet>
+        <servlet-name>jsp</servlet-name>
+        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+        <init-param>
+            <param-name>fork</param-name>
+            <param-value>false</param-value>
+        </init-param>
+        <init-param>
+            <param-name>xpoweredBy</param-name>
+            <param-value>false</param-value>
+        </init-param>
+        <load-on-startup>3</load-on-startup>
+    </servlet>
+
+
+  <!-- NOTE: An SSI Filter is also available as an alternative SSI          -->
+  <!-- implementation. Use either the Servlet or the Filter but NOT both.   -->
+  <!--                                                                      -->
+  <!-- Server Side Includes processing servlet, which processes SSI         -->
+  <!-- directives in HTML pages consistent with similar support in web      -->
+  <!-- servers like Apache.  Traditionally, this servlet is mapped to the   -->
+  <!-- URL pattern "*.shtml".  This servlet supports the following          -->
+  <!-- initialization parameters (default values are in square brackets):   -->
+  <!--                                                                      -->
+  <!--   buffered            Should output from this servlet be buffered?   -->
+  <!--                       (0=false, 1=true)  [0]                         -->
+  <!--                                                                      -->
+  <!--   debug               Debugging detail level for messages logged     -->
+  <!--                       by this servlet.  [0]                          -->
+  <!--                                                                      -->
+  <!--   expires             The number of seconds before a page with SSI   -->
+  <!--                       directives will expire.  [No default]          -->
+  <!--                                                                      -->
+  <!--   isVirtualWebappRelative                                            -->
+  <!--                       Should "virtual" paths be interpreted as       -->
+  <!--                       relative to the context root, instead of       -->
+  <!--                       the server root? [false]                       -->
+  <!--                                                                      -->
+  <!--   inputEncoding       The encoding to assume for SSI resources if    -->
+  <!--                       one is not available from the resource.        -->
+  <!--                       [Platform default]                             -->
+  <!--                                                                      -->
+  <!--   outputEncoding      The encoding to use for the page that results  -->
+  <!--                       from the SSI processing. [UTF-8]               -->
+  <!--                                                                      -->
+  <!--   allowExec           Is use of the exec command enabled? [false]    -->
+
+<!--
+    <servlet>
+        <servlet-name>ssi</servlet-name>
+        <servlet-class>
+          org.apache.catalina.ssi.SSIServlet
+        </servlet-class>
+        <init-param>
+          <param-name>buffered</param-name>
+          <param-value>1</param-value>
+        </init-param>
+        <init-param>
+          <param-name>debug</param-name>
+          <param-value>0</param-value>
+        </init-param>
+        <init-param>
+          <param-name>expires</param-name>
+          <param-value>666</param-value>
+        </init-param>
+        <init-param>
+          <param-name>isVirtualWebappRelative</param-name>
+          <param-value>false</param-value>
+        </init-param>
+        <load-on-startup>4</load-on-startup>
+    </servlet>
+-->
+
+
+  <!-- Common Gateway Includes (CGI) processing servlet, which supports     -->
+  <!-- execution of external applications that conform to the CGI spec      -->
+  <!-- requirements.  Typically, this servlet is mapped to the URL pattern  -->
+  <!-- "/cgi-bin/*", which means that any CGI applications that are         -->
+  <!-- executed must be present within the web application.  This servlet   -->
+  <!-- supports the following initialization parameters (default values     -->
+  <!-- are in square brackets):                                             -->
+  <!--                                                                      -->
+  <!--   cgiPathPrefix        The CGI search path will start at             -->
+  <!--                        webAppRootDir + File.separator + this prefix. -->
+  <!--                        If not set, then webAppRootDir is used.       -->
+  <!--                        Recommended value: WEB-INF/cgi                -->
+  <!--                                                                      -->
+  <!--  cmdLineArgumentsDecoded                                             -->
+  <!--                        Only used when enableCmdLineArguments is      -->
+  <!--                        true. The pattern that individual decoded     -->
+  <!--                        command line arguments must match else the    -->
+  <!--                        request will be rejected. This is to          -->
+  <!--                        work-around various issues when Java passes   -->
+  <!--                        the arguments to the OS. See the CGI How-To   -->
+  <!--                        for more details. The default varies by       -->
+  <!--                        platform.                                     -->
+  <!--                        Windows: [[a-zA-Z0-9\Q-_.\\/:\E]+]            -->
+  <!--                        Others:  [.*]                                 -->
+  <!--                        Note that internally the CGI Servlet treats   -->
+  <!--                        [.*] as a special case to improve performance -->
+  <!--                                                                      -->
+  <!--   cmdLineArgumentsEncoded                                            -->
+  <!--                        Only used when enableCmdLineArguments is      -->
+  <!--                        true. The pattern that individual encoded     -->
+  <!--                        command line arguments must match else the    -->
+  <!--                        request will be rejected. The default matches -->
+  <!--                        the allowed values defined by RFC3875.        -->
+  <!--                        [[a-zA-Z0-9\Q%;/?:@&,$-_.!~*'()\E]+]          -->
+  <!--                                                                      -->
+  <!--   enableCmdLineArguments                                             -->
+  <!--                        Are command line parameters generated from    -->
+  <!--                        the query string as per section 4.4 of 3875   -->
+  <!--                        RFC? [false]                                  -->
+  <!--                                                                      -->
+  <!--   executable           Name of the executable used to run the        -->
+  <!--                        script. [perl]                                -->
+  <!--                                                                      -->
+  <!--   envHttpHeaders       A regular expression used to select the HTTP  -->
+  <!--                        headers passed to the CGI process as          -->
+  <!--                        environment variables. Note that headers are  -->
+  <!--                        converted to upper case before matching and   -->
+  <!--                        that the entire header name must match the    -->
+  <!--                        pattern.                                      -->
+  <!--                        [ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|  -->
+  <!--                         IF-[-0-9A-Z]*|REFERER|USER-AGENT]            -->
+  <!--                                                                      -->
+  <!--  environment-variable- An environment to be set for the execution    -->
+  <!--                        environment of the CGI script. The name of    -->
+  <!--                        variable is taken from the parameter name.    -->
+  <!--                        To configure an environment variable named    -->
+  <!--                        FOO, configure a parameter named              -->
+  <!--                        environment-variable-FOO. The parameter value -->
+  <!--                        is used as the environment variable value.    -->
+  <!--                        The default is no environment variables.      -->
+  <!--                                                                      -->
+  <!--   parameterEncoding    Name of parameter encoding to be used with    -->
+  <!--                        CGI servlet.                                  -->
+  <!--                        [System.getProperty("file.encoding","UTF-8")] -->
+  <!--                                                                      -->
+  <!--   passShellEnvironment Should the shell environment variables (if    -->
+  <!--                        any) be passed to the CGI script? [false]     -->
+  <!--                                                                      -->
+  <!--   stderrTimeout        The time (in milliseconds) to wait for the    -->
+  <!--                        reading of stderr to complete before          -->
+  <!--                        terminating the CGI process. [2000]           -->
+
+<!--
+    <servlet>
+        <servlet-name>cgi</servlet-name>
+        <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
+        <init-param>
+          <param-name>cgiPathPrefix</param-name>
+          <param-value>WEB-INF/cgi</param-value>
+        </init-param>
+        <load-on-startup>5</load-on-startup>
+    </servlet>
+-->
+
+
+  <!-- ================ Built In Servlet Mappings ========================= -->
+
+
+  <!-- The servlet mappings for the built in servlets defined above.  Note  -->
+  <!-- that, by default, the CGI and SSI servlets are *not* mapped.  You    -->
+  <!-- must uncomment these mappings (or add them to your application's own -->
+  <!-- web.xml deployment descriptor) to enable these services              -->
+
+    <!-- The mapping for the default servlet -->
+    <servlet-mapping>
+        <servlet-name>default</servlet-name>
+        <url-pattern>/</url-pattern>
+    </servlet-mapping>
+
+    <!-- The mappings for the JSP servlet -->
+    <servlet-mapping>
+        <servlet-name>jsp</servlet-name>
+        <url-pattern>*.jsp</url-pattern>
+        <url-pattern>*.jspx</url-pattern>
+    </servlet-mapping>
+
+    <!-- The mapping for the SSI servlet -->
+<!--
+    <servlet-mapping>
+        <servlet-name>ssi</servlet-name>
+        <url-pattern>*.shtml</url-pattern>
+    </servlet-mapping>
+-->
+
+    <!-- The mapping for the CGI Gateway servlet -->
+
+<!--
+    <servlet-mapping>
+        <servlet-name>cgi</servlet-name>
+        <url-pattern>/cgi-bin/*</url-pattern>
+    </servlet-mapping>
+-->
+
+
+  <!-- ================== Built In Filter Definitions ===================== -->
+
+  <!-- A filter that sets various security related HTTP Response headers.   -->
+  <!-- This filter supports the following initialization parameters         -->
+  <!-- (default values are in square brackets):                             -->
+  <!--                                                                      -->
+  <!--   hstsEnabled         Should the HTTP Strict Transport Security      -->
+  <!--                       (HSTS) header be added to the response? See    -->
+  <!--                       RFC 6797 for more information on HSTS. [true]  -->
+  <!--                                                                      -->
+  <!--   hstsMaxAgeSeconds   The max age value that should be used in the   -->
+  <!--                       HSTS header. Negative values will be treated   -->
+  <!--                       as zero. [0]                                   -->
+  <!--                                                                      -->
+  <!--   hstsIncludeSubDomains                                              -->
+  <!--                       Should the includeSubDomains parameter be      -->
+  <!--                       included in the HSTS header.                   -->
+  <!--                                                                      -->
+  <!--   antiClickJackingEnabled                                            -->
+  <!--                       Should the anti click-jacking header           -->
+  <!--                       X-Frame-Options be added to every response?    -->
+  <!--                       [true]                                         -->
+  <!--                                                                      -->
+  <!--   antiClickJackingOption                                             -->
+  <!--                       What value should be used for the header. Must -->
+  <!--                       be one of DENY, SAMEORIGIN, ALLOW-FROM         -->
+  <!--                       (case-insensitive). [DENY]                     -->
+  <!--                                                                      -->
+  <!--   antiClickJackingUri IF ALLOW-FROM is used, what URI should be      -->
+  <!--                       allowed? []                                    -->
+  <!--                                                                      -->
+  <!--   blockContentTypeSniffingEnabled                                    -->
+  <!--                       Should the header that blocks content type     -->
+  <!--                       sniffing be added to every response? [true]    -->
+<!--
+    <filter>
+        <filter-name>httpHeaderSecurity</filter-name>
+        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
+        <async-supported>true</async-supported>
+    </filter>
+-->
+
+  <!-- A filter that sets character encoding that is used to decode -->
+  <!-- parameters in a POST request -->
+<!--
+    <filter>
+        <filter-name>setCharacterEncodingFilter</filter-name>
+        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
+        <init-param>
+            <param-name>encoding</param-name>
+            <param-value>UTF-8</param-value>
+        </init-param>
+        <async-supported>true</async-supported>
+    </filter>
+-->
+
+  <!-- A filter that triggers request parameters parsing and rejects the    -->
+  <!-- request if some parameters were skipped because of parsing errors or -->
+  <!-- request size limitations.                                            -->
+<!--
+    <filter>
+        <filter-name>failedRequestFilter</filter-name>
+        <filter-class>
+          org.apache.catalina.filters.FailedRequestFilter
+        </filter-class>
+        <async-supported>true</async-supported>
+    </filter>
+-->
+
+
+  <!-- NOTE: An SSI Servlet is also available as an alternative SSI         -->
+  <!-- implementation. Use either the Servlet or the Filter but NOT both.   -->
+  <!--                                                                      -->
+  <!-- Server Side Includes processing filter, which processes SSI          -->
+  <!-- directives in HTML pages consistent with similar support in web      -->
+  <!-- servers like Apache.  Traditionally, this filter is mapped to the    -->
+  <!-- URL pattern "*.shtml", though it can be mapped to "*" as it will     -->
+  <!-- selectively enable/disable SSI processing based on mime types. For   -->
+  <!-- this to work you will need to uncomment the .shtml mime type         -->
+  <!-- definition towards the bottom of this file.                          -->
+  <!-- The contentType init param allows you to apply SSI processing to JSP -->
+  <!-- pages, javascript, or any other content you wish.  This filter       -->
+  <!-- supports the following initialization parameters (default values are -->
+  <!-- in square brackets):                                                 -->
+  <!--                                                                      -->
+  <!--   contentType         A regex pattern that must be matched before    -->
+  <!--                       SSI processing is applied.                     -->
+  <!--                       [text/x-server-parsed-html(;.*)?]              -->
+  <!--                                                                      -->
+  <!--   debug               Debugging detail level for messages logged     -->
+  <!--                       by this servlet.  [0]                          -->
+  <!--                                                                      -->
+  <!--   expires             The number of seconds before a page with SSI   -->
+  <!--                       directives will expire.  [No default]          -->
+  <!--                                                                      -->
+  <!--   isVirtualWebappRelative                                            -->
+  <!--                       Should "virtual" paths be interpreted as       -->
+  <!--                       relative to the context root, instead of       -->
+  <!--                       the server root? [false]                       -->
+  <!--                                                                      -->
+  <!--   allowExec           Is use of the exec command enabled? [false]    -->
+
+<!--
+    <filter>
+        <filter-name>ssi</filter-name>
+        <filter-class>
+          org.apache.catalina.ssi.SSIFilter
+        </filter-class>
+        <init-param>
+          <param-name>contentType</param-name>
+          <param-value>text/x-server-parsed-html(;.*)?</param-value>
+        </init-param>
+        <init-param>
+          <param-name>debug</param-name>
+          <param-value>0</param-value>
+        </init-param>
+        <init-param>
+          <param-name>expires</param-name>
+          <param-value>666</param-value>
+        </init-param>
+        <init-param>
+          <param-name>isVirtualWebappRelative</param-name>
+          <param-value>false</param-value>
+        </init-param>
+    </filter>
+-->
+
+
+  <!-- ==================== Built In Filter Mappings ====================== -->
+
+  <!-- The mapping for the HTTP header security Filter -->
+<!--
+    <filter-mapping>
+        <filter-name>httpHeaderSecurity</filter-name>
+        <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+    </filter-mapping>
+-->
+
+  <!-- The mapping for the Set Character Encoding Filter -->
+<!--
+    <filter-mapping>
+        <filter-name>setCharacterEncodingFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+-->
+
+  <!-- The mapping for the Failed Request Filter -->
+<!--
+    <filter-mapping>
+        <filter-name>failedRequestFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+-->
+
+  <!-- The mapping for the SSI Filter -->
+<!--
+    <filter-mapping>
+        <filter-name>ssi</filter-name>
+        <url-pattern>*.shtml</url-pattern>
+    </filter-mapping>
+-->
+
+
+  <!-- ==================== Default Session Configuration ================= -->
+  <!-- You can set the default session timeout (in minutes) for all newly   -->
+  <!-- created sessions by modifying the value below.                       -->
+
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+
+
+  <!-- ===================== Default MIME Type Mappings =================== -->
+  <!-- When serving static resources, Tomcat will automatically generate    -->
+  <!-- a "Content-Type" header based on the resource's filename extension,  -->
+  <!-- based on these mappings.  Additional mappings can be added here (to  -->
+  <!-- apply to all web applications), or in your own application's web.xml -->
+  <!-- deployment descriptor.                                               -->
+  <!-- Note: Extensions are always matched in a case-insensitive manner.    -->
+
+    <mime-mapping>
+        <extension>123</extension>
+        <mime-type>application/vnd.lotus-1-2-3</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>3dml</extension>
+        <mime-type>text/vnd.in3d.3dml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>3ds</extension>
+        <mime-type>image/x-3ds</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>3g2</extension>
+        <mime-type>video/3gpp2</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>3gp</extension>
+        <mime-type>video/3gpp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>7z</extension>
+        <mime-type>application/x-7z-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aab</extension>
+        <mime-type>application/x-authorware-bin</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aac</extension>
+        <mime-type>audio/x-aac</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aam</extension>
+        <mime-type>application/x-authorware-map</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aas</extension>
+        <mime-type>application/x-authorware-seg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>abs</extension>
+        <mime-type>audio/x-mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>abw</extension>
+        <mime-type>application/x-abiword</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ac</extension>
+        <mime-type>application/pkix-attr-cert</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>acc</extension>
+        <mime-type>application/vnd.americandynamics.acc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ace</extension>
+        <mime-type>application/x-ace-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>acu</extension>
+        <mime-type>application/vnd.acucobol</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>acutc</extension>
+        <mime-type>application/vnd.acucorp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>adp</extension>
+        <mime-type>audio/adpcm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aep</extension>
+        <mime-type>application/vnd.audiograph</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>afm</extension>
+        <mime-type>application/x-font-type1</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>afp</extension>
+        <mime-type>application/vnd.ibm.modcap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ahead</extension>
+        <mime-type>application/vnd.ahead.space</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ai</extension>
+        <mime-type>application/postscript</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aif</extension>
+        <mime-type>audio/x-aiff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aifc</extension>
+        <mime-type>audio/x-aiff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aiff</extension>
+        <mime-type>audio/x-aiff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aim</extension>
+        <mime-type>application/x-aim</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>air</extension>
+        <mime-type>application/vnd.adobe.air-application-installer-package+zip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ait</extension>
+        <mime-type>application/vnd.dvb.ait</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ami</extension>
+        <mime-type>application/vnd.amiga.ami</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>anx</extension>
+        <mime-type>application/annodex</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>apk</extension>
+        <mime-type>application/vnd.android.package-archive</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>appcache</extension>
+        <mime-type>text/cache-manifest</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>application</extension>
+        <mime-type>application/x-ms-application</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>apr</extension>
+        <mime-type>application/vnd.lotus-approach</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>arc</extension>
+        <mime-type>application/x-freearc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>art</extension>
+        <mime-type>image/x-jg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>asc</extension>
+        <mime-type>application/pgp-signature</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>asf</extension>
+        <mime-type>video/x-ms-asf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>asm</extension>
+        <mime-type>text/x-asm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aso</extension>
+        <mime-type>application/vnd.accpac.simply.aso</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>asx</extension>
+        <mime-type>video/x-ms-asf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>atc</extension>
+        <mime-type>application/vnd.acucorp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>atom</extension>
+        <mime-type>application/atom+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>atomcat</extension>
+        <mime-type>application/atomcat+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>atomsvc</extension>
+        <mime-type>application/atomsvc+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>atx</extension>
+        <mime-type>application/vnd.antix.game-component</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>au</extension>
+        <mime-type>audio/basic</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>avi</extension>
+        <mime-type>video/x-msvideo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>avx</extension>
+        <mime-type>video/x-rad-screenplay</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>aw</extension>
+        <mime-type>application/applixware</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>axa</extension>
+        <mime-type>audio/annodex</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>axv</extension>
+        <mime-type>video/annodex</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>azf</extension>
+        <mime-type>application/vnd.airzip.filesecure.azf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>azs</extension>
+        <mime-type>application/vnd.airzip.filesecure.azs</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>azw</extension>
+        <mime-type>application/vnd.amazon.ebook</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bat</extension>
+        <mime-type>application/x-msdownload</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bcpio</extension>
+        <mime-type>application/x-bcpio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bdf</extension>
+        <mime-type>application/x-font-bdf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bdm</extension>
+        <mime-type>application/vnd.syncml.dm+wbxml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bed</extension>
+        <mime-type>application/vnd.realvnc.bed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bh2</extension>
+        <mime-type>application/vnd.fujitsu.oasysprs</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bin</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>blb</extension>
+        <mime-type>application/x-blorb</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>blorb</extension>
+        <mime-type>application/x-blorb</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bmi</extension>
+        <mime-type>application/vnd.bmi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bmp</extension>
+        <mime-type>image/bmp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>body</extension>
+        <mime-type>text/html</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>book</extension>
+        <mime-type>application/vnd.framemaker</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>box</extension>
+        <mime-type>application/vnd.previewsystems.box</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>boz</extension>
+        <mime-type>application/x-bzip2</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bpk</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>btif</extension>
+        <mime-type>image/prs.btif</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bz</extension>
+        <mime-type>application/x-bzip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>bz2</extension>
+        <mime-type>application/x-bzip2</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>c</extension>
+        <mime-type>text/x-c</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>c11amc</extension>
+        <mime-type>application/vnd.cluetrust.cartomobile-config</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>c11amz</extension>
+        <mime-type>application/vnd.cluetrust.cartomobile-config-pkg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>c4d</extension>
+        <mime-type>application/vnd.clonk.c4group</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>c4f</extension>
+        <mime-type>application/vnd.clonk.c4group</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>c4g</extension>
+        <mime-type>application/vnd.clonk.c4group</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>c4p</extension>
+        <mime-type>application/vnd.clonk.c4group</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>c4u</extension>
+        <mime-type>application/vnd.clonk.c4group</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cab</extension>
+        <mime-type>application/vnd.ms-cab-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>caf</extension>
+        <mime-type>audio/x-caf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cap</extension>
+        <mime-type>application/vnd.tcpdump.pcap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>car</extension>
+        <mime-type>application/vnd.curl.car</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cat</extension>
+        <mime-type>application/vnd.ms-pki.seccat</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cb7</extension>
+        <mime-type>application/x-cbr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cba</extension>
+        <mime-type>application/x-cbr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cbr</extension>
+        <mime-type>application/x-cbr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cbt</extension>
+        <mime-type>application/x-cbr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cbz</extension>
+        <mime-type>application/x-cbr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cc</extension>
+        <mime-type>text/x-c</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cct</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ccxml</extension>
+        <mime-type>application/ccxml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdbcmsg</extension>
+        <mime-type>application/vnd.contact.cmsg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdf</extension>
+        <mime-type>application/x-cdf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdkey</extension>
+        <mime-type>application/vnd.mediastation.cdkey</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdmia</extension>
+        <mime-type>application/cdmi-capability</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdmic</extension>
+        <mime-type>application/cdmi-container</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdmid</extension>
+        <mime-type>application/cdmi-domain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdmio</extension>
+        <mime-type>application/cdmi-object</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdmiq</extension>
+        <mime-type>application/cdmi-queue</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdx</extension>
+        <mime-type>chemical/x-cdx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdxml</extension>
+        <mime-type>application/vnd.chemdraw+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cdy</extension>
+        <mime-type>application/vnd.cinderella</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cer</extension>
+        <mime-type>application/pkix-cert</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cfs</extension>
+        <mime-type>application/x-cfs-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cgm</extension>
+        <mime-type>image/cgm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>chat</extension>
+        <mime-type>application/x-chat</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>chm</extension>
+        <mime-type>application/vnd.ms-htmlhelp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>chrt</extension>
+        <mime-type>application/vnd.kde.kchart</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cif</extension>
+        <mime-type>chemical/x-cif</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cii</extension>
+        <mime-type>application/vnd.anser-web-certificate-issue-initiation</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cil</extension>
+        <mime-type>application/vnd.ms-artgalry</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cla</extension>
+        <mime-type>application/vnd.claymore</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>class</extension>
+        <mime-type>application/java</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>clkk</extension>
+        <mime-type>application/vnd.crick.clicker.keyboard</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>clkp</extension>
+        <mime-type>application/vnd.crick.clicker.palette</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>clkt</extension>
+        <mime-type>application/vnd.crick.clicker.template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>clkw</extension>
+        <mime-type>application/vnd.crick.clicker.wordbank</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>clkx</extension>
+        <mime-type>application/vnd.crick.clicker</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>clp</extension>
+        <mime-type>application/x-msclip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cmc</extension>
+        <mime-type>application/vnd.cosmocaller</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cmdf</extension>
+        <mime-type>chemical/x-cmdf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cml</extension>
+        <mime-type>chemical/x-cml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cmp</extension>
+        <mime-type>application/vnd.yellowriver-custom-menu</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cmx</extension>
+        <mime-type>image/x-cmx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cod</extension>
+        <mime-type>application/vnd.rim.cod</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>com</extension>
+        <mime-type>application/x-msdownload</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>conf</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cpio</extension>
+        <mime-type>application/x-cpio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cpp</extension>
+        <mime-type>text/x-c</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cpt</extension>
+        <mime-type>application/mac-compactpro</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>crd</extension>
+        <mime-type>application/x-mscardfile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>crl</extension>
+        <mime-type>application/pkix-crl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>crt</extension>
+        <mime-type>application/x-x509-ca-cert</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cryptonote</extension>
+        <mime-type>application/vnd.rig.cryptonote</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>csh</extension>
+        <mime-type>application/x-csh</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>csml</extension>
+        <mime-type>chemical/x-csml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>csp</extension>
+        <mime-type>application/vnd.commonspace</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>css</extension>
+        <mime-type>text/css</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cst</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>csv</extension>
+        <mime-type>text/csv</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cu</extension>
+        <mime-type>application/cu-seeme</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>curl</extension>
+        <mime-type>text/vnd.curl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cww</extension>
+        <mime-type>application/prs.cww</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cxt</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>cxx</extension>
+        <mime-type>text/x-c</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dae</extension>
+        <mime-type>model/vnd.collada+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>daf</extension>
+        <mime-type>application/vnd.mobius.daf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dart</extension>
+        <mime-type>application/vnd.dart</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dataless</extension>
+        <mime-type>application/vnd.fdsn.seed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>davmount</extension>
+        <mime-type>application/davmount+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dbk</extension>
+        <mime-type>application/docbook+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dcr</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dcurl</extension>
+        <mime-type>text/vnd.curl.dcurl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dd2</extension>
+        <mime-type>application/vnd.oma.dd2+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ddd</extension>
+        <mime-type>application/vnd.fujixerox.ddd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>deb</extension>
+        <mime-type>application/x-debian-package</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>def</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>deploy</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>der</extension>
+        <mime-type>application/x-x509-ca-cert</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dfac</extension>
+        <mime-type>application/vnd.dreamfactory</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dgc</extension>
+        <mime-type>application/x-dgc-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dib</extension>
+        <mime-type>image/bmp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dic</extension>
+        <mime-type>text/x-c</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dir</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dis</extension>
+        <mime-type>application/vnd.mobius.dis</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dist</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>distz</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>djv</extension>
+        <mime-type>image/vnd.djvu</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>djvu</extension>
+        <mime-type>image/vnd.djvu</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dll</extension>
+        <mime-type>application/x-msdownload</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dmg</extension>
+        <mime-type>application/x-apple-diskimage</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dmp</extension>
+        <mime-type>application/vnd.tcpdump.pcap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dms</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dna</extension>
+        <mime-type>application/vnd.dna</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>doc</extension>
+        <mime-type>application/msword</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>docm</extension>
+        <mime-type>application/vnd.ms-word.document.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>docx</extension>
+        <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dot</extension>
+        <mime-type>application/msword</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dotm</extension>
+        <mime-type>application/vnd.ms-word.template.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dotx</extension>
+        <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dp</extension>
+        <mime-type>application/vnd.osgi.dp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dpg</extension>
+        <mime-type>application/vnd.dpgraph</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dra</extension>
+        <mime-type>audio/vnd.dra</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dsc</extension>
+        <mime-type>text/prs.lines.tag</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dssc</extension>
+        <mime-type>application/dssc+der</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dtb</extension>
+        <mime-type>application/x-dtbook+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dtd</extension>
+        <mime-type>application/xml-dtd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dts</extension>
+        <mime-type>audio/vnd.dts</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dtshd</extension>
+        <mime-type>audio/vnd.dts.hd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dump</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dv</extension>
+        <mime-type>video/x-dv</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dvb</extension>
+        <mime-type>video/vnd.dvb.file</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dvi</extension>
+        <mime-type>application/x-dvi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dwf</extension>
+        <mime-type>model/vnd.dwf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dwg</extension>
+        <mime-type>image/vnd.dwg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dxf</extension>
+        <mime-type>image/vnd.dxf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dxp</extension>
+        <mime-type>application/vnd.spotfire.dxp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>dxr</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ecelp4800</extension>
+        <mime-type>audio/vnd.nuera.ecelp4800</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ecelp7470</extension>
+        <mime-type>audio/vnd.nuera.ecelp7470</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ecelp9600</extension>
+        <mime-type>audio/vnd.nuera.ecelp9600</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ecma</extension>
+        <mime-type>application/ecmascript</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>edm</extension>
+        <mime-type>application/vnd.novadigm.edm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>edx</extension>
+        <mime-type>application/vnd.novadigm.edx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>efif</extension>
+        <mime-type>application/vnd.picsel</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ei6</extension>
+        <mime-type>application/vnd.pg.osasli</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>elc</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>emf</extension>
+        <mime-type>application/x-msmetafile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>eml</extension>
+        <mime-type>message/rfc822</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>emma</extension>
+        <mime-type>application/emma+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>emz</extension>
+        <mime-type>application/x-msmetafile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>eol</extension>
+        <mime-type>audio/vnd.digital-winds</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>eot</extension>
+        <mime-type>application/vnd.ms-fontobject</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>eps</extension>
+        <mime-type>application/postscript</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>epub</extension>
+        <mime-type>application/epub+zip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>es3</extension>
+        <mime-type>application/vnd.eszigno3+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>esa</extension>
+        <mime-type>application/vnd.osgi.subsystem</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>esf</extension>
+        <mime-type>application/vnd.epson.esf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>et3</extension>
+        <mime-type>application/vnd.eszigno3+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>etx</extension>
+        <mime-type>text/x-setext</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>eva</extension>
+        <mime-type>application/x-eva</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>evy</extension>
+        <mime-type>application/x-envoy</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>exe</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>exi</extension>
+        <mime-type>application/exi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ext</extension>
+        <mime-type>application/vnd.novadigm.ext</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ez</extension>
+        <mime-type>application/andrew-inset</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ez2</extension>
+        <mime-type>application/vnd.ezpix-album</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ez3</extension>
+        <mime-type>application/vnd.ezpix-package</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>f</extension>
+        <mime-type>text/x-fortran</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>f4v</extension>
+        <mime-type>video/x-f4v</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>f77</extension>
+        <mime-type>text/x-fortran</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>f90</extension>
+        <mime-type>text/x-fortran</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fbs</extension>
+        <mime-type>image/vnd.fastbidsheet</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fcdt</extension>
+        <mime-type>application/vnd.adobe.formscentral.fcdt</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fcs</extension>
+        <mime-type>application/vnd.isac.fcs</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fdf</extension>
+        <mime-type>application/vnd.fdf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fe_launch</extension>
+        <mime-type>application/vnd.denovo.fcselayout-link</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fg5</extension>
+        <mime-type>application/vnd.fujitsu.oasysgp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fgd</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fh</extension>
+        <mime-type>image/x-freehand</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fh4</extension>
+        <mime-type>image/x-freehand</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fh5</extension>
+        <mime-type>image/x-freehand</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fh7</extension>
+        <mime-type>image/x-freehand</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fhc</extension>
+        <mime-type>image/x-freehand</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fig</extension>
+        <mime-type>application/x-xfig</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>flac</extension>
+        <mime-type>audio/flac</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fli</extension>
+        <mime-type>video/x-fli</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>flo</extension>
+        <mime-type>application/vnd.micrografx.flo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>flv</extension>
+        <mime-type>video/x-flv</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>flw</extension>
+        <mime-type>application/vnd.kde.kivio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>flx</extension>
+        <mime-type>text/vnd.fmi.flexstor</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fly</extension>
+        <mime-type>text/vnd.fly</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fm</extension>
+        <mime-type>application/vnd.framemaker</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fnc</extension>
+        <mime-type>application/vnd.frogans.fnc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>for</extension>
+        <mime-type>text/x-fortran</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fpx</extension>
+        <mime-type>image/vnd.fpx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>frame</extension>
+        <mime-type>application/vnd.framemaker</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fsc</extension>
+        <mime-type>application/vnd.fsc.weblaunch</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fst</extension>
+        <mime-type>image/vnd.fst</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ftc</extension>
+        <mime-type>application/vnd.fluxtime.clip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fti</extension>
+        <mime-type>application/vnd.anser-web-funds-transfer-initiation</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fvt</extension>
+        <mime-type>video/vnd.fvt</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fxp</extension>
+        <mime-type>application/vnd.adobe.fxp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fxpl</extension>
+        <mime-type>application/vnd.adobe.fxp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>fzs</extension>
+        <mime-type>application/vnd.fuzzysheet</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>g2w</extension>
+        <mime-type>application/vnd.geoplan</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>g3</extension>
+        <mime-type>image/g3fax</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>g3w</extension>
+        <mime-type>application/vnd.geospace</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gac</extension>
+        <mime-type>application/vnd.groove-account</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gam</extension>
+        <mime-type>application/x-tads</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gbr</extension>
+        <mime-type>application/rpki-ghostbusters</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gca</extension>
+        <mime-type>application/x-gca-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gdl</extension>
+        <mime-type>model/vnd.gdl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>geo</extension>
+        <mime-type>application/vnd.dynageo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gex</extension>
+        <mime-type>application/vnd.geometry-explorer</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ggb</extension>
+        <mime-type>application/vnd.geogebra.file</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ggt</extension>
+        <mime-type>application/vnd.geogebra.tool</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ghf</extension>
+        <mime-type>application/vnd.groove-help</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gif</extension>
+        <mime-type>image/gif</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gim</extension>
+        <mime-type>application/vnd.groove-identity-message</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gml</extension>
+        <mime-type>application/gml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gmx</extension>
+        <mime-type>application/vnd.gmx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gnumeric</extension>
+        <mime-type>application/x-gnumeric</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gph</extension>
+        <mime-type>application/vnd.flographit</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gpx</extension>
+        <mime-type>application/gpx+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gqf</extension>
+        <mime-type>application/vnd.grafeq</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gqs</extension>
+        <mime-type>application/vnd.grafeq</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gram</extension>
+        <mime-type>application/srgs</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gramps</extension>
+        <mime-type>application/x-gramps-xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gre</extension>
+        <mime-type>application/vnd.geometry-explorer</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>grv</extension>
+        <mime-type>application/vnd.groove-injector</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>grxml</extension>
+        <mime-type>application/srgs+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gsf</extension>
+        <mime-type>application/x-font-ghostscript</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gtar</extension>
+        <mime-type>application/x-gtar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gtm</extension>
+        <mime-type>application/vnd.groove-tool-message</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gtw</extension>
+        <mime-type>model/vnd.gtw</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gv</extension>
+        <mime-type>text/vnd.graphviz</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gxf</extension>
+        <mime-type>application/gxf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gxt</extension>
+        <mime-type>application/vnd.geonext</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>gz</extension>
+        <mime-type>application/x-gzip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>h</extension>
+        <mime-type>text/x-c</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>h261</extension>
+        <mime-type>video/h261</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>h263</extension>
+        <mime-type>video/h263</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>h264</extension>
+        <mime-type>video/h264</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hal</extension>
+        <mime-type>application/vnd.hal+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hbci</extension>
+        <mime-type>application/vnd.hbci</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hdf</extension>
+        <mime-type>application/x-hdf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hh</extension>
+        <mime-type>text/x-c</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hlp</extension>
+        <mime-type>application/winhlp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hpgl</extension>
+        <mime-type>application/vnd.hp-hpgl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hpid</extension>
+        <mime-type>application/vnd.hp-hpid</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hps</extension>
+        <mime-type>application/vnd.hp-hps</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hqx</extension>
+        <mime-type>application/mac-binhex40</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>htc</extension>
+        <mime-type>text/x-component</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>htke</extension>
+        <mime-type>application/vnd.kenameaapp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>htm</extension>
+        <mime-type>text/html</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>html</extension>
+        <mime-type>text/html</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hvd</extension>
+        <mime-type>application/vnd.yamaha.hv-dic</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hvp</extension>
+        <mime-type>application/vnd.yamaha.hv-voice</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>hvs</extension>
+        <mime-type>application/vnd.yamaha.hv-script</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>i2g</extension>
+        <mime-type>application/vnd.intergeo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>icc</extension>
+        <mime-type>application/vnd.iccprofile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ice</extension>
+        <mime-type>x-conference/x-cooltalk</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>icm</extension>
+        <mime-type>application/vnd.iccprofile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ico</extension>
+        <mime-type>image/x-icon</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ics</extension>
+        <mime-type>text/calendar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ief</extension>
+        <mime-type>image/ief</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ifb</extension>
+        <mime-type>text/calendar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ifm</extension>
+        <mime-type>application/vnd.shana.informed.formdata</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>iges</extension>
+        <mime-type>model/iges</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>igl</extension>
+        <mime-type>application/vnd.igloader</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>igm</extension>
+        <mime-type>application/vnd.insors.igm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>igs</extension>
+        <mime-type>model/iges</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>igx</extension>
+        <mime-type>application/vnd.micrografx.igx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>iif</extension>
+        <mime-type>application/vnd.shana.informed.interchange</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>imp</extension>
+        <mime-type>application/vnd.accpac.simply.imp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ims</extension>
+        <mime-type>application/vnd.ms-ims</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>in</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ink</extension>
+        <mime-type>application/inkml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>inkml</extension>
+        <mime-type>application/inkml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>install</extension>
+        <mime-type>application/x-install-instructions</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>iota</extension>
+        <mime-type>application/vnd.astraea-software.iota</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ipfix</extension>
+        <mime-type>application/ipfix</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ipk</extension>
+        <mime-type>application/vnd.shana.informed.package</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>irm</extension>
+        <mime-type>application/vnd.ibm.rights-management</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>irp</extension>
+        <mime-type>application/vnd.irepository.package+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>iso</extension>
+        <mime-type>application/x-iso9660-image</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>itp</extension>
+        <mime-type>application/vnd.shana.informed.formtemplate</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ivp</extension>
+        <mime-type>application/vnd.immervision-ivp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ivu</extension>
+        <mime-type>application/vnd.immervision-ivu</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jad</extension>
+        <mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jam</extension>
+        <mime-type>application/vnd.jam</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jar</extension>
+        <mime-type>application/java-archive</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>java</extension>
+        <mime-type>text/x-java-source</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jisp</extension>
+        <mime-type>application/vnd.jisp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jlt</extension>
+        <mime-type>application/vnd.hp-jlyt</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jnlp</extension>
+        <mime-type>application/x-java-jnlp-file</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>joda</extension>
+        <mime-type>application/vnd.joost.joda-archive</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jpe</extension>
+        <mime-type>image/jpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jpeg</extension>
+        <mime-type>image/jpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jpg</extension>
+        <mime-type>image/jpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jpgm</extension>
+        <mime-type>video/jpm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jpgv</extension>
+        <mime-type>video/jpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jpm</extension>
+        <mime-type>video/jpm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>js</extension>
+        <mime-type>application/javascript</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jsf</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>json</extension>
+        <mime-type>application/json</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jsonml</extension>
+        <mime-type>application/jsonml+json</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>jspf</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kar</extension>
+        <mime-type>audio/midi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>karbon</extension>
+        <mime-type>application/vnd.kde.karbon</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kfo</extension>
+        <mime-type>application/vnd.kde.kformula</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kia</extension>
+        <mime-type>application/vnd.kidspiration</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kml</extension>
+        <mime-type>application/vnd.google-earth.kml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kmz</extension>
+        <mime-type>application/vnd.google-earth.kmz</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kne</extension>
+        <mime-type>application/vnd.kinar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>knp</extension>
+        <mime-type>application/vnd.kinar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kon</extension>
+        <mime-type>application/vnd.kde.kontour</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kpr</extension>
+        <mime-type>application/vnd.kde.kpresenter</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kpt</extension>
+        <mime-type>application/vnd.kde.kpresenter</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kpxx</extension>
+        <mime-type>application/vnd.ds-keypoint</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ksp</extension>
+        <mime-type>application/vnd.kde.kspread</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ktr</extension>
+        <mime-type>application/vnd.kahootz</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ktx</extension>
+        <mime-type>image/ktx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ktz</extension>
+        <mime-type>application/vnd.kahootz</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kwd</extension>
+        <mime-type>application/vnd.kde.kword</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>kwt</extension>
+        <mime-type>application/vnd.kde.kword</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lasxml</extension>
+        <mime-type>application/vnd.las.las+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>latex</extension>
+        <mime-type>application/x-latex</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lbd</extension>
+        <mime-type>application/vnd.llamagraphics.life-balance.desktop</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lbe</extension>
+        <mime-type>application/vnd.llamagraphics.life-balance.exchange+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>les</extension>
+        <mime-type>application/vnd.hhe.lesson-player</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lha</extension>
+        <mime-type>application/x-lzh-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>link66</extension>
+        <mime-type>application/vnd.route66.link66+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>list</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>list3820</extension>
+        <mime-type>application/vnd.ibm.modcap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>listafp</extension>
+        <mime-type>application/vnd.ibm.modcap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lnk</extension>
+        <mime-type>application/x-ms-shortcut</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>log</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lostxml</extension>
+        <mime-type>application/lost+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lrf</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lrm</extension>
+        <mime-type>application/vnd.ms-lrm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ltf</extension>
+        <mime-type>application/vnd.frogans.ltf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lvp</extension>
+        <mime-type>audio/vnd.lucent.voice</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lwp</extension>
+        <mime-type>application/vnd.lotus-wordpro</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>lzh</extension>
+        <mime-type>application/x-lzh-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m13</extension>
+        <mime-type>application/x-msmediaview</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m14</extension>
+        <mime-type>application/x-msmediaview</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m1v</extension>
+        <mime-type>video/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m21</extension>
+        <mime-type>application/mp21</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m2a</extension>
+        <mime-type>audio/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m2v</extension>
+        <mime-type>video/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m3a</extension>
+        <mime-type>audio/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m3u</extension>
+        <mime-type>audio/x-mpegurl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m3u8</extension>
+        <mime-type>application/vnd.apple.mpegurl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m4a</extension>
+        <mime-type>audio/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m4b</extension>
+        <mime-type>audio/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m4r</extension>
+        <mime-type>audio/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m4u</extension>
+        <mime-type>video/vnd.mpegurl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>m4v</extension>
+        <mime-type>video/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ma</extension>
+        <mime-type>application/mathematica</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mac</extension>
+        <mime-type>image/x-macpaint</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mads</extension>
+        <mime-type>application/mads+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mag</extension>
+        <mime-type>application/vnd.ecowin.chart</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>maker</extension>
+        <mime-type>application/vnd.framemaker</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>man</extension>
+        <mime-type>text/troff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mar</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mathml</extension>
+        <mime-type>application/mathml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mb</extension>
+        <mime-type>application/mathematica</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mbk</extension>
+        <mime-type>application/vnd.mobius.mbk</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mbox</extension>
+        <mime-type>application/mbox</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mc1</extension>
+        <mime-type>application/vnd.medcalcdata</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mcd</extension>
+        <mime-type>application/vnd.mcd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mcurl</extension>
+        <mime-type>text/vnd.curl.mcurl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mdb</extension>
+        <mime-type>application/x-msaccess</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mdi</extension>
+        <mime-type>image/vnd.ms-modi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>me</extension>
+        <mime-type>text/troff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mesh</extension>
+        <mime-type>model/mesh</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>meta4</extension>
+        <mime-type>application/metalink4+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>metalink</extension>
+        <mime-type>application/metalink+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mets</extension>
+        <mime-type>application/mets+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mfm</extension>
+        <mime-type>application/vnd.mfmp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mft</extension>
+        <mime-type>application/rpki-manifest</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mgp</extension>
+        <mime-type>application/vnd.osgeo.mapguide.package</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mgz</extension>
+        <mime-type>application/vnd.proteus.magazine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mid</extension>
+        <mime-type>audio/midi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>midi</extension>
+        <mime-type>audio/midi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mie</extension>
+        <mime-type>application/x-mie</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mif</extension>
+        <mime-type>application/x-mif</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mime</extension>
+        <mime-type>message/rfc822</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mj2</extension>
+        <mime-type>video/mj2</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mjp2</extension>
+        <mime-type>video/mj2</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mk3d</extension>
+        <mime-type>video/x-matroska</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mka</extension>
+        <mime-type>audio/x-matroska</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mks</extension>
+        <mime-type>video/x-matroska</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mkv</extension>
+        <mime-type>video/x-matroska</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mlp</extension>
+        <mime-type>application/vnd.dolby.mlp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mmd</extension>
+        <mime-type>application/vnd.chipnuts.karaoke-mmd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mmf</extension>
+        <mime-type>application/vnd.smaf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mmr</extension>
+        <mime-type>image/vnd.fujixerox.edmics-mmr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mng</extension>
+        <mime-type>video/x-mng</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mny</extension>
+        <mime-type>application/x-msmoney</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mobi</extension>
+        <mime-type>application/x-mobipocket-ebook</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mods</extension>
+        <mime-type>application/mods+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mov</extension>
+        <mime-type>video/quicktime</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>movie</extension>
+        <mime-type>video/x-sgi-movie</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp1</extension>
+        <mime-type>audio/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp2</extension>
+        <mime-type>audio/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp21</extension>
+        <mime-type>application/mp21</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp2a</extension>
+        <mime-type>audio/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp3</extension>
+        <mime-type>audio/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp4</extension>
+        <mime-type>video/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp4a</extension>
+        <mime-type>audio/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp4s</extension>
+        <mime-type>application/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mp4v</extension>
+        <mime-type>video/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpa</extension>
+        <mime-type>audio/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpc</extension>
+        <mime-type>application/vnd.mophun.certificate</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpe</extension>
+        <mime-type>video/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpeg</extension>
+        <mime-type>video/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpega</extension>
+        <mime-type>audio/x-mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpg</extension>
+        <mime-type>video/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpg4</extension>
+        <mime-type>video/mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpga</extension>
+        <mime-type>audio/mpeg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpkg</extension>
+        <mime-type>application/vnd.apple.installer+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpm</extension>
+        <mime-type>application/vnd.blueice.multipass</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpn</extension>
+        <mime-type>application/vnd.mophun.application</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpp</extension>
+        <mime-type>application/vnd.ms-project</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpt</extension>
+        <mime-type>application/vnd.ms-project</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpv2</extension>
+        <mime-type>video/mpeg2</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mpy</extension>
+        <mime-type>application/vnd.ibm.minipay</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mqy</extension>
+        <mime-type>application/vnd.mobius.mqy</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mrc</extension>
+        <mime-type>application/marc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mrcx</extension>
+        <mime-type>application/marcxml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ms</extension>
+        <mime-type>text/troff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mscml</extension>
+        <mime-type>application/mediaservercontrol+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mseed</extension>
+        <mime-type>application/vnd.fdsn.mseed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mseq</extension>
+        <mime-type>application/vnd.mseq</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>msf</extension>
+        <mime-type>application/vnd.epson.msf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>msh</extension>
+        <mime-type>model/mesh</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>msi</extension>
+        <mime-type>application/x-msdownload</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>msl</extension>
+        <mime-type>application/vnd.mobius.msl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>msty</extension>
+        <mime-type>application/vnd.muvee.style</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mts</extension>
+        <mime-type>model/vnd.mts</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mus</extension>
+        <mime-type>application/vnd.musician</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>musicxml</extension>
+        <mime-type>application/vnd.recordare.musicxml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mvb</extension>
+        <mime-type>application/x-msmediaview</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mwf</extension>
+        <mime-type>application/vnd.mfer</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mxf</extension>
+        <mime-type>application/mxf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mxl</extension>
+        <mime-type>application/vnd.recordare.musicxml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mxml</extension>
+        <mime-type>application/xv+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mxs</extension>
+        <mime-type>application/vnd.triscape.mxs</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>mxu</extension>
+        <mime-type>video/vnd.mpegurl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>n-gage</extension>
+        <mime-type>application/vnd.nokia.n-gage.symbian.install</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>n3</extension>
+        <mime-type>text/n3</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nb</extension>
+        <mime-type>application/mathematica</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nbp</extension>
+        <mime-type>application/vnd.wolfram.player</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nc</extension>
+        <mime-type>application/x-netcdf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ncx</extension>
+        <mime-type>application/x-dtbncx+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nfo</extension>
+        <mime-type>text/x-nfo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ngdat</extension>
+        <mime-type>application/vnd.nokia.n-gage.data</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nitf</extension>
+        <mime-type>application/vnd.nitf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nlu</extension>
+        <mime-type>application/vnd.neurolanguage.nlu</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nml</extension>
+        <mime-type>application/vnd.enliven</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nnd</extension>
+        <mime-type>application/vnd.noblenet-directory</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nns</extension>
+        <mime-type>application/vnd.noblenet-sealer</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nnw</extension>
+        <mime-type>application/vnd.noblenet-web</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>npx</extension>
+        <mime-type>image/vnd.net-fpx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nsc</extension>
+        <mime-type>application/x-conference</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nsf</extension>
+        <mime-type>application/vnd.lotus-notes</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ntf</extension>
+        <mime-type>application/vnd.nitf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>nzb</extension>
+        <mime-type>application/x-nzb</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oa2</extension>
+        <mime-type>application/vnd.fujitsu.oasys2</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oa3</extension>
+        <mime-type>application/vnd.fujitsu.oasys3</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oas</extension>
+        <mime-type>application/vnd.fujitsu.oasys</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>obd</extension>
+        <mime-type>application/x-msbinder</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>obj</extension>
+        <mime-type>application/x-tgif</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oda</extension>
+        <mime-type>application/oda</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Database -->
+        <extension>odb</extension>
+        <mime-type>application/vnd.oasis.opendocument.database</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Chart -->
+        <extension>odc</extension>
+        <mime-type>application/vnd.oasis.opendocument.chart</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Formula -->
+        <extension>odf</extension>
+        <mime-type>application/vnd.oasis.opendocument.formula</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>odft</extension>
+        <mime-type>application/vnd.oasis.opendocument.formula-template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Drawing -->
+        <extension>odg</extension>
+        <mime-type>application/vnd.oasis.opendocument.graphics</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Image -->
+        <extension>odi</extension>
+        <mime-type>application/vnd.oasis.opendocument.image</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Master Document -->
+        <extension>odm</extension>
+        <mime-type>application/vnd.oasis.opendocument.text-master</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Presentation -->
+        <extension>odp</extension>
+        <mime-type>application/vnd.oasis.opendocument.presentation</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Spreadsheet -->
+        <extension>ods</extension>
+        <mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Text -->
+        <extension>odt</extension>
+        <mime-type>application/vnd.oasis.opendocument.text</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oga</extension>
+        <mime-type>audio/ogg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ogg</extension>
+        <mime-type>audio/ogg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ogv</extension>
+        <mime-type>video/ogg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- xiph mime types -->
+        <extension>ogx</extension>
+        <mime-type>application/ogg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>omdoc</extension>
+        <mime-type>application/omdoc+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>onepkg</extension>
+        <mime-type>application/onenote</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>onetmp</extension>
+        <mime-type>application/onenote</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>onetoc</extension>
+        <mime-type>application/onenote</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>onetoc2</extension>
+        <mime-type>application/onenote</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>opf</extension>
+        <mime-type>application/oebps-package+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>opml</extension>
+        <mime-type>text/x-opml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oprc</extension>
+        <mime-type>application/vnd.palm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>org</extension>
+        <mime-type>application/vnd.lotus-organizer</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>osf</extension>
+        <mime-type>application/vnd.yamaha.openscoreformat</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>osfpvg</extension>
+        <mime-type>application/vnd.yamaha.openscoreformat.osfpvg+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>otc</extension>
+        <mime-type>application/vnd.oasis.opendocument.chart-template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>otf</extension>
+        <mime-type>font/otf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Drawing Template -->
+        <extension>otg</extension>
+        <mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- HTML Document Template -->
+        <extension>oth</extension>
+        <mime-type>application/vnd.oasis.opendocument.text-web</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oti</extension>
+        <mime-type>application/vnd.oasis.opendocument.image-template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Presentation Template -->
+        <extension>otp</extension>
+        <mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Spreadsheet Template -->
+        <extension>ots</extension>
+        <mime-type>application/vnd.oasis.opendocument.spreadsheet-template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- OpenDocument Text Template -->
+        <extension>ott</extension>
+        <mime-type>application/vnd.oasis.opendocument.text-template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oxps</extension>
+        <mime-type>application/oxps</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>oxt</extension>
+        <mime-type>application/vnd.openofficeorg.extension</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p</extension>
+        <mime-type>text/x-pascal</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p10</extension>
+        <mime-type>application/pkcs10</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p12</extension>
+        <mime-type>application/x-pkcs12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p7b</extension>
+        <mime-type>application/x-pkcs7-certificates</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p7c</extension>
+        <mime-type>application/pkcs7-mime</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p7m</extension>
+        <mime-type>application/pkcs7-mime</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p7r</extension>
+        <mime-type>application/x-pkcs7-certreqresp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p7s</extension>
+        <mime-type>application/pkcs7-signature</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>p8</extension>
+        <mime-type>application/pkcs8</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pas</extension>
+        <mime-type>text/x-pascal</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>paw</extension>
+        <mime-type>application/vnd.pawaafile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pbd</extension>
+        <mime-type>application/vnd.powerbuilder6</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pbm</extension>
+        <mime-type>image/x-portable-bitmap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pcap</extension>
+        <mime-type>application/vnd.tcpdump.pcap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pcf</extension>
+        <mime-type>application/x-font-pcf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pcl</extension>
+        <mime-type>application/vnd.hp-pcl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pclxl</extension>
+        <mime-type>application/vnd.hp-pclxl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pct</extension>
+        <mime-type>image/pict</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pcurl</extension>
+        <mime-type>application/vnd.curl.pcurl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pcx</extension>
+        <mime-type>image/x-pcx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pdb</extension>
+        <mime-type>application/vnd.palm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pdf</extension>
+        <mime-type>application/pdf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pfa</extension>
+        <mime-type>application/x-font-type1</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pfb</extension>
+        <mime-type>application/x-font-type1</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pfm</extension>
+        <mime-type>application/x-font-type1</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pfr</extension>
+        <mime-type>application/font-tdpfr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pfx</extension>
+        <mime-type>application/x-pkcs12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pgm</extension>
+        <mime-type>image/x-portable-graymap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pgn</extension>
+        <mime-type>application/x-chess-pgn</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pgp</extension>
+        <mime-type>application/pgp-encrypted</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pic</extension>
+        <mime-type>image/pict</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pict</extension>
+        <mime-type>image/pict</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pkg</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pki</extension>
+        <mime-type>application/pkixcmp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pkipath</extension>
+        <mime-type>application/pkix-pkipath</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>plb</extension>
+        <mime-type>application/vnd.3gpp.pic-bw-large</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>plc</extension>
+        <mime-type>application/vnd.mobius.plc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>plf</extension>
+        <mime-type>application/vnd.pocketlearn</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+
+        <extension>pls</extension>
+        <mime-type>audio/x-scpls</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pml</extension>
+        <mime-type>application/vnd.ctc-posml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>png</extension>
+        <mime-type>image/png</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pnm</extension>
+        <mime-type>image/x-portable-anymap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pnt</extension>
+        <mime-type>image/x-macpaint</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>portpkg</extension>
+        <mime-type>application/vnd.macports.portpkg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pot</extension>
+        <mime-type>application/vnd.ms-powerpoint</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>potm</extension>
+        <mime-type>application/vnd.ms-powerpoint.template.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>potx</extension>
+        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ppam</extension>
+        <mime-type>application/vnd.ms-powerpoint.addin.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ppd</extension>
+        <mime-type>application/vnd.cups-ppd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ppm</extension>
+        <mime-type>image/x-portable-pixmap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pps</extension>
+        <mime-type>application/vnd.ms-powerpoint</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ppsm</extension>
+        <mime-type>application/vnd.ms-powerpoint.slideshow.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ppsx</extension>
+        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slideshow</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ppt</extension>
+        <mime-type>application/vnd.ms-powerpoint</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pptm</extension>
+        <mime-type>application/vnd.ms-powerpoint.presentation.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pptx</extension>
+        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pqa</extension>
+        <mime-type>application/vnd.palm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>prc</extension>
+        <mime-type>application/x-mobipocket-ebook</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pre</extension>
+        <mime-type>application/vnd.lotus-freelance</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>prf</extension>
+        <mime-type>application/pics-rules</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ps</extension>
+        <mime-type>application/postscript</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>psb</extension>
+        <mime-type>application/vnd.3gpp.pic-bw-small</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>psd</extension>
+        <mime-type>image/vnd.adobe.photoshop</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>psf</extension>
+        <mime-type>application/x-font-linux-psf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pskcxml</extension>
+        <mime-type>application/pskc+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ptid</extension>
+        <mime-type>application/vnd.pvi.ptid1</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pub</extension>
+        <mime-type>application/x-mspublisher</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pvb</extension>
+        <mime-type>application/vnd.3gpp.pic-bw-var</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pwn</extension>
+        <mime-type>application/vnd.3m.post-it-notes</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pya</extension>
+        <mime-type>audio/vnd.ms-playready.media.pya</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>pyv</extension>
+        <mime-type>video/vnd.ms-playready.media.pyv</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qam</extension>
+        <mime-type>application/vnd.epson.quickanime</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qbo</extension>
+        <mime-type>application/vnd.intu.qbo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qfx</extension>
+        <mime-type>application/vnd.intu.qfx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qps</extension>
+        <mime-type>application/vnd.publishare-delta-tree</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qt</extension>
+        <mime-type>video/quicktime</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qti</extension>
+        <mime-type>image/x-quicktime</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qtif</extension>
+        <mime-type>image/x-quicktime</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qwd</extension>
+        <mime-type>application/vnd.quark.quarkxpress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qwt</extension>
+        <mime-type>application/vnd.quark.quarkxpress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qxb</extension>
+        <mime-type>application/vnd.quark.quarkxpress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qxd</extension>
+        <mime-type>application/vnd.quark.quarkxpress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qxl</extension>
+        <mime-type>application/vnd.quark.quarkxpress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>qxt</extension>
+        <mime-type>application/vnd.quark.quarkxpress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ra</extension>
+        <mime-type>audio/x-pn-realaudio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ram</extension>
+        <mime-type>audio/x-pn-realaudio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rar</extension>
+        <mime-type>application/x-rar-compressed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ras</extension>
+        <mime-type>image/x-cmu-raster</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rcprofile</extension>
+        <mime-type>application/vnd.ipunplugged.rcprofile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rdf</extension>
+        <mime-type>application/rdf+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rdz</extension>
+        <mime-type>application/vnd.data-vision.rdz</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rep</extension>
+        <mime-type>application/vnd.businessobjects</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>res</extension>
+        <mime-type>application/x-dtbresource+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rgb</extension>
+        <mime-type>image/x-rgb</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rif</extension>
+        <mime-type>application/reginfo+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rip</extension>
+        <mime-type>audio/vnd.rip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ris</extension>
+        <mime-type>application/x-research-info-systems</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rl</extension>
+        <mime-type>application/resource-lists+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rlc</extension>
+        <mime-type>image/vnd.fujixerox.edmics-rlc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rld</extension>
+        <mime-type>application/resource-lists-diff+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rm</extension>
+        <mime-type>application/vnd.rn-realmedia</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rmi</extension>
+        <mime-type>audio/midi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rmp</extension>
+        <mime-type>audio/x-pn-realaudio-plugin</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rms</extension>
+        <mime-type>application/vnd.jcp.javame.midlet-rms</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rmvb</extension>
+        <mime-type>application/vnd.rn-realmedia-vbr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rnc</extension>
+        <mime-type>application/relax-ng-compact-syntax</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>roa</extension>
+        <mime-type>application/rpki-roa</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>roff</extension>
+        <mime-type>text/troff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rp9</extension>
+        <mime-type>application/vnd.cloanto.rp9</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rpss</extension>
+        <mime-type>application/vnd.nokia.radio-presets</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rpst</extension>
+        <mime-type>application/vnd.nokia.radio-preset</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rq</extension>
+        <mime-type>application/sparql-query</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rs</extension>
+        <mime-type>application/rls-services+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rsd</extension>
+        <mime-type>application/rsd+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rss</extension>
+        <mime-type>application/rss+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rtf</extension>
+        <mime-type>application/rtf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>rtx</extension>
+        <mime-type>text/richtext</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>s</extension>
+        <mime-type>text/x-asm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>s3m</extension>
+        <mime-type>audio/s3m</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>saf</extension>
+        <mime-type>application/vnd.yamaha.smaf-audio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sbml</extension>
+        <mime-type>application/sbml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sc</extension>
+        <mime-type>application/vnd.ibm.secure-container</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>scd</extension>
+        <mime-type>application/x-msschedule</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>scm</extension>
+        <mime-type>application/vnd.lotus-screencam</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>scq</extension>
+        <mime-type>application/scvp-cv-request</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>scs</extension>
+        <mime-type>application/scvp-cv-response</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>scurl</extension>
+        <mime-type>text/vnd.curl.scurl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sda</extension>
+        <mime-type>application/vnd.stardivision.draw</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sdc</extension>
+        <mime-type>application/vnd.stardivision.calc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sdd</extension>
+        <mime-type>application/vnd.stardivision.impress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sdkd</extension>
+        <mime-type>application/vnd.solent.sdkm+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sdkm</extension>
+        <mime-type>application/vnd.solent.sdkm+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sdp</extension>
+        <mime-type>application/sdp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sdw</extension>
+        <mime-type>application/vnd.stardivision.writer</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>see</extension>
+        <mime-type>application/vnd.seemail</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>seed</extension>
+        <mime-type>application/vnd.fdsn.seed</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sema</extension>
+        <mime-type>application/vnd.sema</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>semd</extension>
+        <mime-type>application/vnd.semd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>semf</extension>
+        <mime-type>application/vnd.semf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ser</extension>
+        <mime-type>application/java-serialized-object</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>setpay</extension>
+        <mime-type>application/set-payment-initiation</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>setreg</extension>
+        <mime-type>application/set-registration-initiation</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sfd-hdstx</extension>
+        <mime-type>application/vnd.hydrostatix.sof-data</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sfs</extension>
+        <mime-type>application/vnd.spotfire.sfs</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sfv</extension>
+        <mime-type>text/x-sfv</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sgi</extension>
+        <mime-type>image/sgi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sgl</extension>
+        <mime-type>application/vnd.stardivision.writer-global</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sgm</extension>
+        <mime-type>text/sgml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sgml</extension>
+        <mime-type>text/sgml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sh</extension>
+        <mime-type>application/x-sh</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>shar</extension>
+        <mime-type>application/x-shar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>shf</extension>
+        <mime-type>application/shf+xml</mime-type>
+    </mime-mapping>
+    <!--
+    <mime-mapping>
+        <extension>shtml</extension>
+        <mime-type>text/x-server-parsed-html</mime-type>
+    </mime-mapping>
+    -->
+    <mime-mapping>
+        <extension>sid</extension>
+        <mime-type>image/x-mrsid-image</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sig</extension>
+        <mime-type>application/pgp-signature</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sil</extension>
+        <mime-type>audio/silk</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>silo</extension>
+        <mime-type>model/mesh</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sis</extension>
+        <mime-type>application/vnd.symbian.install</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sisx</extension>
+        <mime-type>application/vnd.symbian.install</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sit</extension>
+        <mime-type>application/x-stuffit</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sitx</extension>
+        <mime-type>application/x-stuffitx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>skd</extension>
+        <mime-type>application/vnd.koan</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>skm</extension>
+        <mime-type>application/vnd.koan</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>skp</extension>
+        <mime-type>application/vnd.koan</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>skt</extension>
+        <mime-type>application/vnd.koan</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sldm</extension>
+        <mime-type>application/vnd.ms-powerpoint.slide.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sldx</extension>
+        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slide</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>slt</extension>
+        <mime-type>application/vnd.epson.salt</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sm</extension>
+        <mime-type>application/vnd.stepmania.stepchart</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>smf</extension>
+        <mime-type>application/vnd.stardivision.math</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>smi</extension>
+        <mime-type>application/smil+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>smil</extension>
+        <mime-type>application/smil+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>smv</extension>
+        <mime-type>video/x-smv</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>smzip</extension>
+        <mime-type>application/vnd.stepmania.package</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>snd</extension>
+        <mime-type>audio/basic</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>snf</extension>
+        <mime-type>application/x-font-snf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>so</extension>
+        <mime-type>application/octet-stream</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>spc</extension>
+        <mime-type>application/x-pkcs7-certificates</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>spf</extension>
+        <mime-type>application/vnd.yamaha.smaf-phrase</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>spl</extension>
+        <mime-type>application/x-futuresplash</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>spot</extension>
+        <mime-type>text/vnd.in3d.spot</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>spp</extension>
+        <mime-type>application/scvp-vp-response</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>spq</extension>
+        <mime-type>application/scvp-vp-request</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>spx</extension>
+        <mime-type>audio/ogg</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sql</extension>
+        <mime-type>application/x-sql</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>src</extension>
+        <mime-type>application/x-wais-source</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>srt</extension>
+        <mime-type>application/x-subrip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sru</extension>
+        <mime-type>application/sru+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>srx</extension>
+        <mime-type>application/sparql-results+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ssdl</extension>
+        <mime-type>application/ssdl+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sse</extension>
+        <mime-type>application/vnd.kodak-descriptor</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ssf</extension>
+        <mime-type>application/vnd.epson.ssf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ssml</extension>
+        <mime-type>application/ssml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>st</extension>
+        <mime-type>application/vnd.sailingtracker.track</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>stc</extension>
+        <mime-type>application/vnd.sun.xml.calc.template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>std</extension>
+        <mime-type>application/vnd.sun.xml.draw.template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>stf</extension>
+        <mime-type>application/vnd.wt.stf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sti</extension>
+        <mime-type>application/vnd.sun.xml.impress.template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>stk</extension>
+        <mime-type>application/hyperstudio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>stl</extension>
+        <mime-type>application/vnd.ms-pki.stl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>str</extension>
+        <mime-type>application/vnd.pg.format</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>stw</extension>
+        <mime-type>application/vnd.sun.xml.writer.template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sub</extension>
+        <mime-type>text/vnd.dvb.subtitle</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sus</extension>
+        <mime-type>application/vnd.sus-calendar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>susp</extension>
+        <mime-type>application/vnd.sus-calendar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sv4cpio</extension>
+        <mime-type>application/x-sv4cpio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sv4crc</extension>
+        <mime-type>application/x-sv4crc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>svc</extension>
+        <mime-type>application/vnd.dvb.service</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>svd</extension>
+        <mime-type>application/vnd.svd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>svg</extension>
+        <mime-type>image/svg+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>svgz</extension>
+        <mime-type>image/svg+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>swa</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>swf</extension>
+        <mime-type>application/x-shockwave-flash</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>swi</extension>
+        <mime-type>application/vnd.aristanetworks.swi</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sxc</extension>
+        <mime-type>application/vnd.sun.xml.calc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sxd</extension>
+        <mime-type>application/vnd.sun.xml.draw</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sxg</extension>
+        <mime-type>application/vnd.sun.xml.writer.global</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sxi</extension>
+        <mime-type>application/vnd.sun.xml.impress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sxm</extension>
+        <mime-type>application/vnd.sun.xml.math</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>sxw</extension>
+        <mime-type>application/vnd.sun.xml.writer</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>t</extension>
+        <mime-type>text/troff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>t3</extension>
+        <mime-type>application/x-t3vm-image</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>taglet</extension>
+        <mime-type>application/vnd.mynfc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tao</extension>
+        <mime-type>application/vnd.tao.intent-module-archive</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tar</extension>
+        <mime-type>application/x-tar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tcap</extension>
+        <mime-type>application/vnd.3gpp2.tcap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tcl</extension>
+        <mime-type>application/x-tcl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>teacher</extension>
+        <mime-type>application/vnd.smart.teacher</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tei</extension>
+        <mime-type>application/tei+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>teicorpus</extension>
+        <mime-type>application/tei+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tex</extension>
+        <mime-type>application/x-tex</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>texi</extension>
+        <mime-type>application/x-texinfo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>texinfo</extension>
+        <mime-type>application/x-texinfo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>text</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tfi</extension>
+        <mime-type>application/thraud+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tfm</extension>
+        <mime-type>application/x-tex-tfm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tga</extension>
+        <mime-type>image/x-tga</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>thmx</extension>
+        <mime-type>application/vnd.ms-officetheme</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tif</extension>
+        <mime-type>image/tiff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tiff</extension>
+        <mime-type>image/tiff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tmo</extension>
+        <mime-type>application/vnd.tmobile-livetv</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>torrent</extension>
+        <mime-type>application/x-bittorrent</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tpl</extension>
+        <mime-type>application/vnd.groove-tool-template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tpt</extension>
+        <mime-type>application/vnd.trid.tpt</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tr</extension>
+        <mime-type>text/troff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tra</extension>
+        <mime-type>application/vnd.trueapp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>trm</extension>
+        <mime-type>application/x-msterminal</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tsd</extension>
+        <mime-type>application/timestamped-data</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>tsv</extension>
+        <mime-type>text/tab-separated-values</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ttc</extension>
+        <mime-type>font/collection</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ttf</extension>
+        <mime-type>font/ttf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ttl</extension>
+        <mime-type>text/turtle</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>twd</extension>
+        <mime-type>application/vnd.simtech-mindmapper</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>twds</extension>
+        <mime-type>application/vnd.simtech-mindmapper</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>txd</extension>
+        <mime-type>application/vnd.genomatix.tuxedo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>txf</extension>
+        <mime-type>application/vnd.mobius.txf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>txt</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>u32</extension>
+        <mime-type>application/x-authorware-bin</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>udeb</extension>
+        <mime-type>application/x-debian-package</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ufd</extension>
+        <mime-type>application/vnd.ufdl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ufdl</extension>
+        <mime-type>application/vnd.ufdl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ulw</extension>
+        <mime-type>audio/basic</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ulx</extension>
+        <mime-type>application/x-glulx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>umj</extension>
+        <mime-type>application/vnd.umajin</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>unityweb</extension>
+        <mime-type>application/vnd.unity</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uoml</extension>
+        <mime-type>application/vnd.uoml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uri</extension>
+        <mime-type>text/uri-list</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uris</extension>
+        <mime-type>text/uri-list</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>urls</extension>
+        <mime-type>text/uri-list</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>ustar</extension>
+        <mime-type>application/x-ustar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>utz</extension>
+        <mime-type>application/vnd.uiq.theme</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uu</extension>
+        <mime-type>text/x-uuencode</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uva</extension>
+        <mime-type>audio/vnd.dece.audio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvd</extension>
+        <mime-type>application/vnd.dece.data</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvf</extension>
+        <mime-type>application/vnd.dece.data</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvg</extension>
+        <mime-type>image/vnd.dece.graphic</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvh</extension>
+        <mime-type>video/vnd.dece.hd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvi</extension>
+        <mime-type>image/vnd.dece.graphic</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvm</extension>
+        <mime-type>video/vnd.dece.mobile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvp</extension>
+        <mime-type>video/vnd.dece.pd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvs</extension>
+        <mime-type>video/vnd.dece.sd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvt</extension>
+        <mime-type>application/vnd.dece.ttml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvu</extension>
+        <mime-type>video/vnd.uvvu.mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvv</extension>
+        <mime-type>video/vnd.dece.video</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvva</extension>
+        <mime-type>audio/vnd.dece.audio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvd</extension>
+        <mime-type>application/vnd.dece.data</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvf</extension>
+        <mime-type>application/vnd.dece.data</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvg</extension>
+        <mime-type>image/vnd.dece.graphic</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvh</extension>
+        <mime-type>video/vnd.dece.hd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvi</extension>
+        <mime-type>image/vnd.dece.graphic</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvm</extension>
+        <mime-type>video/vnd.dece.mobile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvp</extension>
+        <mime-type>video/vnd.dece.pd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvs</extension>
+        <mime-type>video/vnd.dece.sd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvt</extension>
+        <mime-type>application/vnd.dece.ttml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvu</extension>
+        <mime-type>video/vnd.uvvu.mp4</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvv</extension>
+        <mime-type>video/vnd.dece.video</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvx</extension>
+        <mime-type>application/vnd.dece.unspecified</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvvz</extension>
+        <mime-type>application/vnd.dece.zip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvx</extension>
+        <mime-type>application/vnd.dece.unspecified</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>uvz</extension>
+        <mime-type>application/vnd.dece.zip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vcard</extension>
+        <mime-type>text/vcard</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vcd</extension>
+        <mime-type>application/x-cdlink</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vcf</extension>
+        <mime-type>text/x-vcard</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vcg</extension>
+        <mime-type>application/vnd.groove-vcard</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vcs</extension>
+        <mime-type>text/x-vcalendar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vcx</extension>
+        <mime-type>application/vnd.vcx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vis</extension>
+        <mime-type>application/vnd.visionary</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>viv</extension>
+        <mime-type>video/vnd.vivo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vob</extension>
+        <mime-type>video/x-ms-vob</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vor</extension>
+        <mime-type>application/vnd.stardivision.writer</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vox</extension>
+
+        <mime-type>application/x-authorware-bin</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vrml</extension>
+        <mime-type>model/vrml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vsd</extension>
+        <mime-type>application/vnd.visio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vsf</extension>
+        <mime-type>application/vnd.vsf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vss</extension>
+        <mime-type>application/vnd.visio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vst</extension>
+        <mime-type>application/vnd.visio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vsw</extension>
+        <mime-type>application/vnd.visio</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vtu</extension>
+        <mime-type>model/vnd.vtu</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>vxml</extension>
+        <mime-type>application/voicexml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>w3d</extension>
+        <mime-type>application/x-director</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wad</extension>
+        <mime-type>application/x-doom</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wav</extension>
+        <mime-type>audio/x-wav</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wax</extension>
+        <mime-type>audio/x-ms-wax</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- Wireless Bitmap -->
+        <extension>wbmp</extension>
+        <mime-type>image/vnd.wap.wbmp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wbs</extension>
+        <mime-type>application/vnd.criticaltools.wbs+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wbxml</extension>
+        <mime-type>application/vnd.wap.wbxml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wcm</extension>
+        <mime-type>application/vnd.ms-works</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wdb</extension>
+        <mime-type>application/vnd.ms-works</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wdp</extension>
+        <mime-type>image/vnd.ms-photo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>weba</extension>
+        <mime-type>audio/webm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>webm</extension>
+        <mime-type>video/webm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>webp</extension>
+        <mime-type>image/webp</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wg</extension>
+        <mime-type>application/vnd.pmi.widget</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wgt</extension>
+        <mime-type>application/widget</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wks</extension>
+        <mime-type>application/vnd.ms-works</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wm</extension>
+        <mime-type>video/x-ms-wm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wma</extension>
+        <mime-type>audio/x-ms-wma</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wmd</extension>
+        <mime-type>application/x-ms-wmd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wmf</extension>
+        <mime-type>application/x-msmetafile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- WML Source -->
+        <extension>wml</extension>
+        <mime-type>text/vnd.wap.wml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- Compiled WML -->
+        <extension>wmlc</extension>
+        <mime-type>application/vnd.wap.wmlc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- WML Script Source -->
+        <extension>wmls</extension>
+        <mime-type>text/vnd.wap.wmlscript</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <!-- Compiled WML Script -->
+        <extension>wmlsc</extension>
+        <mime-type>application/vnd.wap.wmlscriptc</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wmv</extension>
+        <mime-type>video/x-ms-wmv</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wmx</extension>
+        <mime-type>video/x-ms-wmx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wmz</extension>
+        <mime-type>application/x-msmetafile</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>woff</extension>
+        <mime-type>font/woff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>woff2</extension>
+        <mime-type>font/woff2</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wpd</extension>
+        <mime-type>application/vnd.wordperfect</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wpl</extension>
+        <mime-type>application/vnd.ms-wpl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wps</extension>
+        <mime-type>application/vnd.ms-works</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wqd</extension>
+        <mime-type>application/vnd.wqd</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wri</extension>
+        <mime-type>application/x-mswrite</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wrl</extension>
+        <mime-type>model/vrml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wsdl</extension>
+        <mime-type>application/wsdl+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wspolicy</extension>
+        <mime-type>application/wspolicy+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wtb</extension>
+        <mime-type>application/vnd.webturbo</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>wvx</extension>
+        <mime-type>video/x-ms-wvx</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>x32</extension>
+        <mime-type>application/x-authorware-bin</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>x3d</extension>
+        <mime-type>model/x3d+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>x3db</extension>
+        <mime-type>model/x3d+binary</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>x3dbz</extension>
+        <mime-type>model/x3d+binary</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>x3dv</extension>
+        <mime-type>model/x3d+vrml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>x3dvz</extension>
+        <mime-type>model/x3d+vrml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>x3dz</extension>
+        <mime-type>model/x3d+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xaml</extension>
+        <mime-type>application/xaml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xap</extension>
+        <mime-type>application/x-silverlight-app</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xar</extension>
+        <mime-type>application/vnd.xara</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xbap</extension>
+        <mime-type>application/x-ms-xbap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xbd</extension>
+        <mime-type>application/vnd.fujixerox.docuworks.binder</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xbm</extension>
+        <mime-type>image/x-xbitmap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xdf</extension>
+        <mime-type>application/xcap-diff+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+
+        <extension>xdm</extension>
+        <mime-type>application/vnd.syncml.dm+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xdp</extension>
+        <mime-type>application/vnd.adobe.xdp+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xdssc</extension>
+        <mime-type>application/dssc+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xdw</extension>
+        <mime-type>application/vnd.fujixerox.docuworks</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xenc</extension>
+        <mime-type>application/xenc+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xer</extension>
+        <mime-type>application/patch-ops-error+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xfdf</extension>
+        <mime-type>application/vnd.adobe.xfdf</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xfdl</extension>
+        <mime-type>application/vnd.xfdl</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xht</extension>
+        <mime-type>application/xhtml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xhtml</extension>
+        <mime-type>application/xhtml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xhvml</extension>
+        <mime-type>application/xv+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xif</extension>
+        <mime-type>image/vnd.xiff</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xla</extension>
+        <mime-type>application/vnd.ms-excel</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlam</extension>
+        <mime-type>application/vnd.ms-excel.addin.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlc</extension>
+        <mime-type>application/vnd.ms-excel</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlf</extension>
+        <mime-type>application/x-xliff+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlm</extension>
+        <mime-type>application/vnd.ms-excel</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xls</extension>
+        <mime-type>application/vnd.ms-excel</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlsb</extension>
+        <mime-type>application/vnd.ms-excel.sheet.binary.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlsm</extension>
+        <mime-type>application/vnd.ms-excel.sheet.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlsx</extension>
+        <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlt</extension>
+        <mime-type>application/vnd.ms-excel</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xltm</extension>
+        <mime-type>application/vnd.ms-excel.template.macroenabled.12</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xltx</extension>
+        <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.template</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xlw</extension>
+        <mime-type>application/vnd.ms-excel</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xm</extension>
+        <mime-type>audio/xm</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xml</extension>
+        <mime-type>application/xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xo</extension>
+        <mime-type>application/vnd.olpc-sugar</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xop</extension>
+        <mime-type>application/xop+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xpi</extension>
+        <mime-type>application/x-xpinstall</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xpl</extension>
+        <mime-type>application/xproc+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xpm</extension>
+        <mime-type>image/x-xpixmap</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xpr</extension>
+        <mime-type>application/vnd.is-xpr</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xps</extension>
+        <mime-type>application/vnd.ms-xpsdocument</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xpw</extension>
+        <mime-type>application/vnd.intercon.formnet</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xpx</extension>
+        <mime-type>application/vnd.intercon.formnet</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xsl</extension>
+        <mime-type>application/xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xslt</extension>
+        <mime-type>application/xslt+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xsm</extension>
+        <mime-type>application/vnd.syncml+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xspf</extension>
+        <mime-type>application/xspf+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xul</extension>
+        <mime-type>application/vnd.mozilla.xul+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xvm</extension>
+        <mime-type>application/xv+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xvml</extension>
+        <mime-type>application/xv+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xwd</extension>
+        <mime-type>image/x-xwindowdump</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xyz</extension>
+        <mime-type>chemical/x-xyz</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>xz</extension>
+        <mime-type>application/x-xz</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>yang</extension>
+        <mime-type>application/yang</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>yin</extension>
+        <mime-type>application/yin+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z</extension>
+        <mime-type>application/x-compress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>Z</extension>
+        <mime-type>application/x-compress</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z1</extension>
+        <mime-type>application/x-zmachine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z2</extension>
+        <mime-type>application/x-zmachine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z3</extension>
+        <mime-type>application/x-zmachine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z4</extension>
+        <mime-type>application/x-zmachine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z5</extension>
+        <mime-type>application/x-zmachine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z6</extension>
+        <mime-type>application/x-zmachine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z7</extension>
+        <mime-type>application/x-zmachine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>z8</extension>
+        <mime-type>application/x-zmachine</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>zaz</extension>
+        <mime-type>application/vnd.zzazz.deck+xml</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>zip</extension>
+        <mime-type>application/zip</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>zir</extension>
+        <mime-type>application/vnd.zul</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>zirz</extension>
+        <mime-type>application/vnd.zul</mime-type>
+    </mime-mapping>
+    <mime-mapping>
+        <extension>zmm</extension>
+        <mime-type>application/vnd.handheld-entertainment+xml</mime-type>
+    </mime-mapping>
+
+  <!-- ==================== Default Welcome File List ===================== -->
+  <!-- When a request URI refers to a directory, the default servlet looks  -->
+  <!-- for a "welcome file" within that directory and, if present, to the   -->
+  <!-- corresponding resource URI for display.                              -->
+  <!-- If no welcome files are present, the default servlet either serves a -->
+  <!-- directory listing (see default servlet configuration on how to       -->
+  <!-- customize) or returns a 404 status, depending on the value of the    -->
+  <!-- listings setting.                                                    -->
+  <!--                                                                      -->
+  <!-- If you define welcome files in your own application's web.xml        -->
+  <!-- deployment descriptor, that list *replaces* the list configured      -->
+  <!-- here, so be sure to include any of the default values that you wish  -->
+  <!-- to use within your application.                                       -->
+
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+        <welcome-file>index.htm</welcome-file>
+        <welcome-file>index.jsp</welcome-file>
+    </welcome-file-list>
+
+<security-constraint> <web-resource-collection> <web-resource-name>Protected Context</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <!-- auth-constraint goes here if you requre authentication --> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
+</web-app>
index 57c188f..e4b3568 100644 (file)
@@ -105,6 +105,7 @@ import { ManageServiceComponent } from "./views/services/sotn-management/manage-
 import { MonitorServiceComponent } from "./views/services/sotn-management/monitor-service/monitor-service.component";
 import { OrderServiceComponent } from "./views/services/sotn-management/order-service/order-service.component";
 import { SotnManagementComponent } from "./views/services/sotn-management/sotn-management.component";
+import { EventQueueService } from "@src/app/core/services/eventQueue.service";
 
 export function HttpLoaderFactory(httpClient: HttpClient) {
        return new TranslateHttpLoader(httpClient, "./assets/i18n/", ".json");
@@ -133,6 +134,7 @@ registerLocaleData(en);
                ManagemencsService,
                TextService,
                SlicingTaskServices,
+               EventQueueService,
                // fakeBackendProvider
        ],
        declarations: [
diff --git a/usecaseui-portal/src/app/core/services/appEvent.ts b/usecaseui-portal/src/app/core/services/appEvent.ts
new file mode 100644 (file)
index 0000000..775eced
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+    Copyright (C) 2021 Huawei Canada, Inc. and others. All rights reserved.
+
+    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.
+*/
+import {AppEventType} from "@src/app/core/services/appEventType";
+
+export class AppEvent<T> {
+    constructor(
+        public type: AppEventType,
+        public payload: T,
+    ) {}
+}
\ No newline at end of file
diff --git a/usecaseui-portal/src/app/core/services/appEventType.ts b/usecaseui-portal/src/app/core/services/appEventType.ts
new file mode 100644 (file)
index 0000000..e5369a8
--- /dev/null
@@ -0,0 +1,4 @@
+export enum AppEventType {
+    GenericEvent = 'GENERIC_EVENT',
+    UserNodeDrag = 'USER_NODE_DRAG'
+}
\ No newline at end of file
diff --git a/usecaseui-portal/src/app/core/services/eventQueue.service.ts b/usecaseui-portal/src/app/core/services/eventQueue.service.ts
new file mode 100644 (file)
index 0000000..e4c32c3
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+    Copyright (C) 2021 Huawei Canada, Inc. and others. All rights reserved.
+
+    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.
+*/
+
+import { Injectable } from '@angular/core';
+import {Observable, Subject} from "rxjs/Rx";
+import {AppEvent} from "@src/app/core/services/appEvent";
+import {AppEventType} from "@src/app/core/services/appEventType";
+import {filter} from "rxjs/operators";
+
+@Injectable()
+export class EventQueueService {
+
+    private eventBroker = new Subject<AppEvent<any>>();
+
+    on(eventType: AppEventType): Observable<AppEvent<any>> {
+        return this.eventBroker.pipe(filter(event => event.type === eventType));
+    }
+
+    dispatch<T>(event: AppEvent<T>): void {
+        this.eventBroker.next(event);
+    }
+
+}
\ No newline at end of file
index 20b79a7..0959f56 100644 (file)
@@ -27,6 +27,7 @@ export class networkHttpservice {
     url = {
         "getNetworkD3Data": this.baseUrl+"/uui-sotn/getNetWorkResources",
         "getLogicalLinksData": this.baseUrl+"/uui-sotn/getLogicalLinks",
+        "getPnfsData": this.baseUrl+"/uui-sotn/getPnfs",
         "deleteCloud": this.baseUrl+"/uui-sotn/deleteExtNetWork",
         "getPInterfacesData": this.baseUrl+"/uui-sotn/getPinterfaceByPnfName/",
         "createLink": this.baseUrl+"/uui-sotn/createLink/",
@@ -39,6 +40,7 @@ export class networkHttpservice {
         "createCloudLink": this.baseUrl+"/uui-sotn/createLink/",
         "createCloudUrl": this.baseUrl+"/uui-sotn/createHostUrl/",
         "deleteLink": this.baseUrl+"/uui-sotn/deleteLink/",
+        "getConnectivities": this.baseUrl+"/uui-sotn/getConnectivityInfo",
 
     };
 
@@ -47,6 +49,10 @@ export class networkHttpservice {
     getNetworkD3Data() {
         return this.http.get<any>(this.url["getNetworkD3Data"]);
     }
+    // GET AAI PNF(s) data
+    getPnfsData() {
+        return this.http.get<any>(this.url["getPnfsData"]);
+    }
     //Initialize the connection logical-links
     getLogicalLinksData() {
         return this.http.get<any>(this.url["getLogicalLinksData"]);
@@ -76,6 +82,11 @@ export class networkHttpservice {
     queryExtAAIIdVersion(aaiId) {
         return this.http.get<any>(this.url["queryExtAAIIdVersion"] + aaiId);
     }
+
+    getConnectivities(){
+        return this.http.get<any>(this.url["getConnectivities"]);
+    }
+
     //Create an external cloud newwork interface
     createNetwrok(paramsObj) {
         return this.http.put<any>(this.url["createNetwrok"] + paramsObj["network-id"], paramsObj);
index 967ec98..a43c8c4 100644 (file)
 {
   "connectivity": [
     {
-      "connectivity-id": "4424ea5a-3603-4040-baa9-4046ed533fe5",
-      "bandwidth-profile-name": "vpn1",
-      "vpn-type": "ethernet",
-      "color-aware": "true",
-      "coupling-flag": "true",
-      "etht-svc-name": "vpn1",
-      "access-provider-id": "",
-      "access-client-id": "",
-      "access-topology-id": "",
-      "access-node-id": "",
-      "access-ltp-id": "",
-      "connectivity-selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0/service-data/networks/network/4424ea5a-3603-4040-baa9-4046ed533fe5/network-data/",
-      "operational-status": "Active",
-      "model-customization-id": "2bafc8aa-c60c-4a17-a658-db4cbca07fac",
-      "model-invariant-id": "5d0ada6b-de04-4624-9410-3baab839cd6f",
-      "model-version-id": "15e21930-3248-4148-b071-a2a9be1f9889",
-      "resource-version": "1537623789475",
+      "connectivity-id": "0cdb3c80-e319-4690-bed9-ae081e69542c",
+      "bandwidth-profile-name": "3",
+      "vpn-type": "leaf",
+      "cir": "3000000",
+      "eir": "3000000",
+      "coupling-flag": "-,OA==",
+      "etht-svc-name": "cll-link-1",
+      "access-provider-id": "10",
+      "access-client-id": "0",
+      "access-topology-id": "2",
+      "access-node-id": "10.1.1.3",
+      "access-ltp-id": "1000001",
+      "connectivity-selflink": "restconf/config/GENERIC-RESOURCE-API:services/service//service-data/networks/network//network-data/",
+      "cvlan": "47",
+      "operational-status": "Activated",
+      "resource-version": "1632433788978",
       "relationship-list": {
         "relationship": [
           {
             "related-to": "vpn-binding",
-            "relationship-label": "org.onap.relationships.inventory.PartOf",
-            "related-link": "/aai/v13/network/vpn-bindings/vpn-binding/11.11.11.11-vpn1",
+            "relationship-label": "tosca.relationships.network.BindsTo",
+            "related-link": "/aai/v24/network/vpn-bindings/vpn-binding/7bdc2f8c-2d3f-4a9f-91c9-e13e105b3f85",
             "relationship-data": [
               {
                 "relationship-key": "vpn-binding.vpn-id",
-                "relationship-value": "11.11.11.11-vpn1"
+                "relationship-value": "7bdc2f8c-2d3f-4a9f-91c9-e13e105b3f85"
               }
             ],
             "related-to-property": [
               {
                 "property-key": "vpn-binding.vpn-name",
-                "property-value": "11.11.11.11-vpn1"
+                "property-value": "32edeb0d-1036-4f16-9c11-c5257d81ae0e"
               },
               {
-                "property-key": "vpn-binding.vpn-type",
-                "property-value": "ethernet"
+                "property-key": "vpn-binding.vpn-type"
               }
             ]
           },
           {
             "related-to": "service-instance",
             "relationship-label": "org.onap.relationships.inventory.PartOf",
-            "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0",
+            "related-link": "/aai/v24/business/customers/customer/IBNCustomer/service-subscriptions/service-subscription/IBN/service-instances/service-instance/cll-101",
             "relationship-data": [
               {
                 "relationship-key": "customer.global-customer-id",
-                "relationship-value": "demo"
+                "relationship-value": "IBNCustomer"
               },
               {
                 "relationship-key": "service-subscription.service-type",
-                "relationship-value": "ccvpn"
+                "relationship-value": "IBN"
               },
               {
                 "relationship-key": "service-instance.service-instance-id",
-                "relationship-value": "32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"
+                "relationship-value": "cll-101"
               }
             ],
             "related-to-property": [
               {
                 "property-key": "service-instance.service-instance-name",
-                "property-value": "SOTNVPNInfra"
+                "property-value": "cloud-leased-line-101"
               }
             ]
           },
           {
-            "related-to": "vpn-binding",
+            "related-to": "uni",
+            "relationship-label": "org.onap.relationships.inventory.PartOf",
+            "related-link": "/aai/v24/network/unis/uni/networkId-providerId-10-clientId-0-topologyId-2-nodeId-10.1.1.3-ltpId-1000001",
+            "relationship-data": [
+              {
+                "relationship-key": "uni.id",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-2-nodeId-10.1.1.3-ltpId-1000001"
+              }
+            ]
+          },
+          {
+            "related-to": "connectivity",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/connectivities/connectivity/c648ddff-7abe-44ba-946f-8d7a4fa2691b",
+            "relationship-data": [
+              {
+                "relationship-key": "connectivity.connectivity-id",
+                "relationship-value": "c648ddff-7abe-44ba-946f-8d7a4fa2691b"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "connectivity.etht-svc-name",
+                "property-value": "cll-link-1"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "connectivity-id": "c648ddff-7abe-44ba-946f-8d7a4fa2691b",
+      "bandwidth-profile-name": "3",
+      "vpn-type": "mdsc",
+      "cir": "3000000",
+      "eir": "3000000",
+      "color-aware": "networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512",
+      "etht-svc-name": "cll-link-1",
+      "connectivity-selflink": "restconf/config/GENERIC-RESOURCE-API:services/service//service-data/networks/network//network-data/",
+      "cvlan": "47",
+      "operational-status": "Created",
+      "resource-version": "1632433782443",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "service-instance",
+            "relationship-label": "org.onap.relationships.inventory.PartOf",
+            "related-link": "/aai/v24/business/customers/customer/IBNCustomer/service-subscriptions/service-subscription/IBN/service-instances/service-instance/cll-101",
+            "relationship-data": [
+              {
+                "relationship-key": "customer.global-customer-id",
+                "relationship-value": "IBNCustomer"
+              },
+              {
+                "relationship-key": "service-subscription.service-type",
+                "relationship-value": "IBN"
+              },
+              {
+                "relationship-key": "service-instance.service-instance-id",
+                "relationship-value": "cll-101"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "service-instance.service-instance-name",
+                "property-value": "cloud-leased-line-101"
+              }
+            ]
+          },
+          {
+            "related-to": "uni",
+            "relationship-label": "org.onap.relationships.inventory.PartOf",
+            "related-link": "/aai/v24/network/unis/uni/networkId-providerId-10-clientId-0-topologyId-2-nodeId-10.1.1.3-ltpId-1000001",
+            "relationship-data": [
+              {
+                "relationship-key": "uni.id",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-2-nodeId-10.1.1.3-ltpId-1000001"
+              }
+            ]
+          },
+          {
+            "related-to": "uni",
             "relationship-label": "org.onap.relationships.inventory.PartOf",
-            "related-link": "/aai/v13/network/vpn-bindings/vpn-binding/12.12.12.12-vpn1",
+            "related-link": "/aai/v24/network/unis/uni/networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512",
+            "relationship-data": [
+              {
+                "relationship-key": "uni.id",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512"
+              }
+            ]
+          },
+          {
+            "related-to": "connectivity",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/connectivities/connectivity/0cdb3c80-e319-4690-bed9-ae081e69542c",
+            "relationship-data": [
+              {
+                "relationship-key": "connectivity.connectivity-id",
+                "relationship-value": "0cdb3c80-e319-4690-bed9-ae081e69542c"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "connectivity.etht-svc-name",
+                "property-value": "cll-link-1"
+              }
+            ]
+          },
+          {
+            "related-to": "connectivity",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/connectivities/connectivity/8dfd5f6a-e795-47ff-8d66-ff26e78a7175",
+            "relationship-data": [
+              {
+                "relationship-key": "connectivity.connectivity-id",
+                "relationship-value": "8dfd5f6a-e795-47ff-8d66-ff26e78a7175"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "connectivity.etht-svc-name",
+                "property-value": "cll-link-1"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "connectivity-id": "8dfd5f6a-e795-47ff-8d66-ff26e78a7175",
+      "bandwidth-profile-name": "3",
+      "vpn-type": "root",
+      "cir": "3000000",
+      "eir": "3000000",
+      "color-aware": "networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512",
+      "coupling-flag": "-MTI=,",
+      "etht-svc-name": "cll-link-1",
+      "access-provider-id": "20",
+      "access-client-id": "0",
+      "access-topology-id": "2",
+      "access-node-id": "10.2.1.2",
+      "access-ltp-id": "512",
+      "connectivity-selflink": "restconf/config/GENERIC-RESOURCE-API:services/service//service-data/networks/network//network-data/",
+      "cvlan": "47",
+      "operational-status": "Activated",
+      "resource-version": "1632433789733",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "vpn-binding",
+            "relationship-label": "tosca.relationships.network.BindsTo",
+            "related-link": "/aai/v24/network/vpn-bindings/vpn-binding/c4b924e2-8a39-4f67-b9c1-d04b6c7a6053",
             "relationship-data": [
               {
                 "relationship-key": "vpn-binding.vpn-id",
-                "relationship-value": "12.12.12.12-vpn1"
+                "relationship-value": "c4b924e2-8a39-4f67-b9c1-d04b6c7a6053"
               }
             ],
             "related-to-property": [
               {
                 "property-key": "vpn-binding.vpn-name",
-                "property-value": "12.12.12.12-vpn1"
+                "property-value": "32edeb0d-1036-4f16-9c11-c5257d81ae0e"
+              },
+              {
+                "property-key": "vpn-binding.vpn-type"
+              }
+            ]
+          },
+          {
+            "related-to": "service-instance",
+            "relationship-label": "org.onap.relationships.inventory.PartOf",
+            "related-link": "/aai/v24/business/customers/customer/IBNCustomer/service-subscriptions/service-subscription/IBN/service-instances/service-instance/cll-101",
+            "relationship-data": [
+              {
+                "relationship-key": "customer.global-customer-id",
+                "relationship-value": "IBNCustomer"
               },
               {
-                "property-key": "vpn-binding.vpn-type",
-                "property-value": "ethernet"
+                "relationship-key": "service-subscription.service-type",
+                "relationship-value": "IBN"
+              },
+              {
+                "relationship-key": "service-instance.service-instance-id",
+                "relationship-value": "cll-101"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "service-instance.service-instance-name",
+                "property-value": "cloud-leased-line-101"
+              }
+            ]
+          },
+          {
+            "related-to": "uni",
+            "relationship-label": "org.onap.relationships.inventory.PartOf",
+            "related-link": "/aai/v24/network/unis/uni/networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512",
+            "relationship-data": [
+              {
+                "relationship-key": "uni.id",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512"
+              }
+            ]
+          },
+          {
+            "related-to": "connectivity",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/connectivities/connectivity/c648ddff-7abe-44ba-946f-8d7a4fa2691b",
+            "relationship-data": [
+              {
+                "relationship-key": "connectivity.connectivity-id",
+                "relationship-value": "c648ddff-7abe-44ba-946f-8d7a4fa2691b"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "connectivity.etht-svc-name",
+                "property-value": "cll-link-1"
               }
             ]
           }
index 1b8ecff..4ee81b6 100644 (file)
@@ -1,25 +1,25 @@
 {
   "logical-link": [
     {
-      "link-name": "cross-link-1",
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-1-linkId-10.1.1.2-22",
       "in-maint": false,
-      "link-type": "cross-link",
-      "resource-version": "1536029865021",
-      "operational-status": "up",
+      "link-type": "point-to-point",
+      "resource-version": "1632418647894",
+      "link-id": "10.1.1.2-22",
       "relationship-list": {
         "relationship": [
           {
             "related-to": "p-interface",
             "relationship-label": "tosca.relationships.network.LinksTo",
-            "related-link": "/aai/v13/network/pnfs/pnf/pnf2000/p-interfaces/p-interface/nodeId-78.78.78.78-ltpId-1",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-22",
             "relationship-data": [
               {
                 "relationship-key": "pnf.pnf-name",
-                "relationship-value": "pnf2000"
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2"
               },
               {
                 "relationship-key": "p-interface.interface-name",
-                "relationship-value": "nodeId-78.78.78.78-ltpId-1"
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-22"
               }
             ],
             "related-to-property": [
           {
             "related-to": "p-interface",
             "relationship-label": "tosca.relationships.network.LinksTo",
-            "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-1",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-12",
             "relationship-data": [
               {
                 "relationship-key": "pnf.pnf-name",
-                "relationship-value": "pnf1000"
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3"
               },
               {
                 "relationship-key": "p-interface.interface-name",
-                "relationship-value": "nodeId-79.79.79.79-ltpId-1"
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-12"
               }
             ],
             "related-to-property": [
       }
     },
     {
-      "link-name": "cross-link-2",
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-2-linkId-10.1.1.1-1000001",
       "in-maint": false,
-      "link-type": "cross-link",
-      "resource-version": "1536029865021",
-      "operational-status": "up",
+      "link-type": "point-to-point",
+      "resource-version": "1632418637582",
+      "link-id": "10.1.1.1-1000001"
+    },
+    {
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-2-linkId-10.1.1.1-2000001",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418638991",
+      "link-id": "10.1.1.1-2000001"
+    },
+    {
+      "link-name": "51000",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418711940",
+      "link-role": "cross-domain",
+      "link-id": "10.1.1.2-12",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "te-link-attribute",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/te-link-attributes/te-link-attribute/10.1.1.2-12",
+            "relationship-data": [
+              {
+                "relationship-key": "te-link-attribute.id",
+                "relationship-value": "10.1.1.2-12"
+              }
+            ]
+          },
+          {
+            "related-to": "te-link-attribute",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/te-link-attributes/te-link-attribute/10.2.1.1-22",
+            "relationship-data": [
+              {
+                "relationship-key": "te-link-attribute.id",
+                "relationship-value": "10.2.1.1-22"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-12",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-12"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-22",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-22"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-1-linkId-10.1.1.3-12",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418648333",
+      "link-id": "10.1.1.3-12",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-22",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-22"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-12",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-12"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "52000",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418711437",
+      "link-role": "cross-domain",
+      "link-id": "10.1.1.3-8",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "te-link-attribute",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/te-link-attributes/te-link-attribute/10.1.1.3-8",
+            "relationship-data": [
+              {
+                "relationship-key": "te-link-attribute.id",
+                "relationship-value": "10.1.1.3-8"
+              }
+            ]
+          },
+          {
+            "related-to": "te-link-attribute",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/te-link-attributes/te-link-attribute/10.2.1.3-12",
+            "relationship-data": [
+              {
+                "relationship-key": "te-link-attribute.id",
+                "relationship-value": "10.2.1.3-12"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-8",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-8"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-12",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-12"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-1-linkId-10.1.1.3-22",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418649331",
+      "link-id": "10.1.1.3-22",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1-ltpId-6",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1-ltpId-6"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-22",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-22"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-1-linkId-10.1.1.2-2",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418647397",
+      "link-id": "10.1.1.2-2",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1-ltpId-12",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1-ltpId-12"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-2",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-2"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "tranportEp_src_ID_111_2",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418767038",
+      "link-name2": "tranportEp_dst_ID_212_1",
+      "link-id": "111-2-212-1"
+    },
+    {
+      "link-name": "networkId-providerId-20-clientId-0-topologyId-1-linkId-10.2.1.2-22",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418710116",
+      "link-id": "10.2.1.2-22",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-12",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-12"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2-ltpId-22",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2-ltpId-22"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-1-linkId-10.1.1.1-12",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418648797",
+      "link-id": "10.1.1.1-12",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1-ltpId-12",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1-ltpId-12"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-2",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.2-ltpId-2"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-1-linkId-10.1.1.1-6",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418650687",
+      "link-id": "10.1.1.1-6",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1-ltpId-6",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.1-ltpId-6"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3/p-interfaces/p-interface/networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-22",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-10-clientId-0-topologyId-1-nodeId-10.1.1.3-ltpId-22"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-20-clientId-0-topologyId-2-linkId-10.2.1.2-512",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418701065",
+      "link-id": "10.2.1.2-512"
+    },
+    {
+      "link-name": "networkId-providerId-20-clientId-0-topologyId-1-linkId-10.2.1.1-12",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418710752",
+      "link-id": "10.2.1.1-12",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-12",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-12"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2-ltpId-22",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2-ltpId-22"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-20-clientId-0-topologyId-1-linkId-10.2.1.2-5",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418710349",
+      "link-id": "10.2.1.2-5",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-3",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-3"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2-ltpId-5",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2-ltpId-5"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-20-clientId-0-topologyId-1-linkId-10.2.1.3-3",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418710549",
+      "link-id": "10.2.1.3-3",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-3",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-3"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          },
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2-ltpId-5",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.2-ltpId-5"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-20-clientId-0-topologyId-1-linkId-10.2.1.3-22",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418710961",
+      "link-id": "10.2.1.3-22",
       "relationship-list": {
         "relationship": [
           {
             "related-to": "p-interface",
             "relationship-label": "tosca.relationships.network.LinksTo",
-            "related-link": "/aai/v13/network/pnfs/pnf/pnf3000/p-interfaces/p-interface/nodeId-80.80.80.80-ltpId-2",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-22",
             "relationship-data": [
               {
                 "relationship-key": "pnf.pnf-name",
-                "relationship-value": "pnf3000"
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3"
               },
               {
                 "relationship-key": "p-interface.interface-name",
-                "relationship-value": "nodeId-80.80.80.80-ltpId-2"
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-22"
               }
             ],
             "related-to-property": [
           {
             "related-to": "p-interface",
             "relationship-label": "tosca.relationships.network.LinksTo",
-            "related-link": "/aai/v13/network/pnfs/pnf/pnf-cloud/p-interfaces/p-interface/cloud-tp",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-9",
+            "relationship-data": [
+              {
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-9"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "link-name": "networkId-providerId-10-clientId-0-topologyId-2-linkId-10.1.1.3-1000001",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418639304",
+      "link-id": "10.1.1.3-1000001"
+    },
+    {
+      "link-name": "networkId-providerId-20-clientId-0-topologyId-1-linkId-10.2.1.1-9",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418709796",
+      "link-id": "10.2.1.1-9",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-22",
             "relationship-data": [
               {
                 "relationship-key": "pnf.pnf-name",
-                "relationship-value": "pnf-cloud"
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3"
               },
               {
                 "relationship-key": "p-interface.interface-name",
-                "relationship-value": "cloud-tp"
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.3-ltpId-22"
               }
             ],
             "related-to-property": [
             ]
           },
           {
-            "related-to": "ext-aai-network",
-            "relationship-label": "org.onap.relationships.inventory.BelongsTo",
-            "related-link": "/aai/v13/network/ext-aai-networks/ext-aai-network/gongjie666",
+            "related-to": "p-interface",
+            "relationship-label": "tosca.relationships.network.LinksTo",
+            "related-link": "/aai/v24/network/pnfs/pnf/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1/p-interfaces/p-interface/networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-9",
             "relationship-data": [
               {
-                "relationship-key": "ext-aai-network.aai-id",
-                "relationship-value": "gongjie666"
+                "relationship-key": "pnf.pnf-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1"
+              },
+              {
+                "relationship-key": "p-interface.interface-name",
+                "relationship-value": "networkId-providerId-20-clientId-0-topologyId-1-nodeId-10.2.1.1-ltpId-9"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "p-interface.prov-status"
               }
             ]
           }
         ]
       }
+    },
+    {
+      "link-name": "tranportEp_src_ID_113_1",
+      "in-maint": false,
+      "link-type": "point-to-point",
+      "resource-version": "1632418777509",
+      "link-name2": "tranportEp_dst_ID_212_1",
+      "link-id": "113-1-212-1"
     }
   ]
-}
+}
\ No newline at end of file
index fb025d9..48d01d3 100644 (file)
 <nz-spin [nzSpinning]="isSpinning" nzSize="large">
 <div class="model">
   <!--chart-->
-  <button nz-button nzType="primary" *ngIf="!nonetwork" style="margin-top: 2px;display: inline-block" (click)="showForm()"
-          [disabled]='isVisible' [attr.disabled] ='isVisible?true:undefined'>
-    {{"i18nTextDefine_CreateLink" | translate}}
-  </button>
+  <div class="action ant-tabs-bar">
+    <span>
+        <i class="icon">
+            <img src="assets/images/service-type.png"alt="">
+        </i>
+        {{"i18nTextDefine_Connectivity" | translate}} :
+    </span>
+    <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'">
+      <button nz-button nz-dropdown><span>{{connectivitySelected.name}}</span> <i class="anticon anticon-down"></i>
+      </button>
+      <ul nz-menu>
+        <li nz-menu-item (click)="choseConnectivity(item)" *ngFor="let item of connectivityList">
+          <a title="{{item.name}}">{{item.name}}</a>
+        </li>
+      </ul>
+    </nz-dropdown>
+
+<!--    <button class="create" nz-button [nzType]="'primary'" (click)="createModal()">
+      <i *ngIf="width>1200" class="anticon anticon-plus"></i>
+      <span> {{"i18nTextDefine_Create" | translate}} </span>
+    </button>-->
+  </div>
+
   <h2 *ngIf="!nonetwork" [ngClass]="{'title-modelshow':isVisible == true}">
     Please configure network links for registered devices and partner system.
   </h2>
+  <h3  [ngClass]="{'title-modelshow':isVisible == true}">
+    Service Instances:
+  </h3>
+  <div id="svcContainer" style="overflow: hidden;">
+  </div>
+  <h3  [ngClass]="{'title-modelshow':isVisible == true}">
+    Network Topology:
+  </h3>
   <div id="tpContainer" style="overflow: hidden;">
     <div *ngIf="nonetwork" style="padding: 20px">
       <h2>
index 5600954..d1e4067 100644 (file)
     See the License for the specific language governing permissions and
     limitations under the License.
 */
-import { Component, EventEmitter, OnInit, Output } from '@angular/core';
-import * as d3 from 'd3';
+import {Component, OnInit} from '@angular/core';
+import * as d3 from 'd3'
 import * as $ from 'jquery';
-import { networkHttpservice } from '../../../core/services/networkHttpservice.service';
+import {networkHttpservice} from '../../../core/services/networkHttpservice.service';
+import {EventQueueService} from "../../../core/services/eventQueue.service";
+import {AppEvent} from "@src/app/core/services/appEvent";
+import {AppEventType} from "@src/app/core/services/appEventType";
 
 @Component({
     selector: 'app-ccvpn-network',
@@ -25,62 +28,64 @@ import { networkHttpservice } from '../../../core/services/networkHttpservice.se
 })
 export class CcvpnNetworkComponent implements OnInit {
 
-    constructor(private myhttp: networkHttpservice) {
+   constructor(private myhttp: networkHttpservice,
+                private eventDispatcher: EventQueueService) {
     }
 
     ngOnInit() {
         let thisNg = this;
-        thisNg.getD3Data();
-
-
-        //Local cloud TP port connection, click on the right to expand the details
-        $('#tpContainer').on('click', '.line-port', function () {
-            thisNg.isVisible = false;
-            thisNg.delBoxisVisible = true;
-            thisNg.delcloud = false;
-
-            thisNg.delTp1 = $(this).attr('data-tp1');
-            thisNg.delTp2 = $(this).attr('data-tp2');
-            thisNg.delNode1 = $(this).attr('data-node1');
-            thisNg.delNode2 = $(this).attr('data-node2');
-            thisNg.delVersion = $(this).attr('data-version');
-            thisNg.delLinkname = $(this).attr('data-link');
-            thisNg.delcloudUrl = null;
-            thisNg.delLinkIndex = $(this);
-
-            let dataD3 = thisNg.d3Data;
-            for (let p = 0; p < dataD3.length; p++) {//Determine which Domain network the two tp ports belong to
-                if (dataD3[p]['name'] == thisNg.delTp1) {
-                    thisNg.network.push(dataD3[p]['source']['name']);
-                }
-                if (dataD3[p]['name'] == thisNg.delTp2) {
-                    thisNg.network.push(dataD3[p]['source']['name']);
+        this.isSpinning = true;
+        this.myhttp.getConnectivities()
+            .subscribe((data) => {
+                if(data){
+                    for (let conn of data["connectivity"]) {
+                        if (conn["vpn-type"] === "mdsc"){
+                            this.connectivityList.push({ "name": conn["connectivity-id"],
+                                                        "id": conn["connectivity-id"],
+                                                        "relationship-list" : conn["relationship-list"]
+                            });
+                        }
+                    }
+                    if (this.connectivityList.length !== 0) {
+                        this.connectivitySelected = this.connectivityList[0];
+                        this.choseConnectivity(this.connectivitySelected);
+
+                    };
                 }
-            }
-            thisNg.delNetwork1 = thisNg.network[0];
-            thisNg.delNetwork2 = thisNg.network[1];
-        });
+            },
+                 (err) => {
+                     console.log(err);
+                 });
+        this.myhttp.getLogicalLinksData()
+            .subscribe((data) => {
+                    if (data) {
+                        for (let ll of data["logical-link"]){
+                            // Filter layer1 logical link
+                            //if (ll["relationship-list"] !== undefined &&
+                            //    ll["relationship-list"]["relationship"].length) {
+                            thisNg.logicalLinks.push(ll);
+                            //}
+                        }
+                        let tpMapping = thisNg.getPnfTpMapping(thisNg.logicalLinks);
 
-        //External cloud connection, click on the right to expand the details
-        $('#tpContainer').on('click', '.cloudline', function () {
-            thisNg.isVisible = false;
-            thisNg.delBoxisVisible = true;
-            thisNg.delcloud = true;
-
-            thisNg.delTp1 = $(this).attr('data-tp1');
-            thisNg.delTp2 = $(this).attr('data-tp2');
-            thisNg.delNode1 = $(this).attr('data-node1');
-            thisNg.delNode2 = $(this).attr('data-node2');
-            thisNg.delVersion = $(this).attr('data-version');
-            thisNg.delNetwork1 = $(this).attr('data-network');
-            thisNg.delNetwork2 = $(this).attr('data-cloudnetwork');
-            thisNg.delcloudUrl = $(this).attr('data-url');
-            thisNg.delLinkname = $(this).attr('data-link');
-            thisNg.aaiId = $(this).attr('data-aaiid');
-            thisNg.getCloudUrl(thisNg.aaiId);
-        });
+                        let links = thisNg.getLinks( thisNg.logicalLinks, tpMapping);
+                        let tps = thisNg.getNodes(tpMapping);
+                        console.log(links);
+                        console.log(tps);
+
+                        thisNg.drawTopo(tps, links);
+
+                    }
+                    this.isSpinning = false;
+                },
+                (err) => {
+                    console.log(err);
+                })
     }
 
+    connectivityList = [];
+    connectivitySelected = { name: null, id: null };
+
     addLinkDisabled = true;
     nonetwork = false;
     isVisible = false;
@@ -89,6 +94,9 @@ export class CcvpnNetworkComponent implements OnInit {
     delBoxisVisible = false;
     isSpinning = true;
 
+    pnfs = [];
+    layer1Tps = [];
+
     d3Data = [];//D3Render the required data
     logicalLinks = [];//logicalLinks Existing connection data returned by the interface
     linkName = null;//Linked name link-name
@@ -129,12 +137,25 @@ export class CcvpnNetworkComponent implements OnInit {
     winWidth = $('#tpContainer').width();
     winHeight = $('#tpContainer').height();
     charge = -300;
+    SEPERATOR = '-';
 
-    imgmap = {
-        '1': 'assets/images/cloud-county1.png',
-        '2': 'assets/images/tp.png',
-        '3': 'assets/images/cloud-out.png',
+
+    imgMap = {
+        'pnf': 'assets/images/site.png',
+        'tp': 'assets/images/tp.png'
     };
+
+    //### SELECTION - store the selected node ###
+    //### EDITING - store the drag mode (either 'drag' or 'add_link') ###
+    svcEditorGlobal = {
+        selection: null
+    }
+    svcContainerOpt = {
+        containerId : "svcContainer",
+        width: 1000,
+        height: this.winHeight
+    };
+
     tpoption = {
         container: '#tpContainer',
         data: '',
@@ -142,1127 +163,907 @@ export class CcvpnNetworkComponent implements OnInit {
         height: this.winHeight
     };
 
-    showForm(): void {
-        if (this.addLinkDisabled == false) {
-            this.isVisible = true;
-            this.delBoxisVisible = false;
-        }
-    }
-
-    hideForm(): void {
-        this.isVisible = false;
-        this.delBoxisVisible = false;
-        this.linkName = null;
-        this.networkVal1 = null;//Initialize the default data of the network1 drop-down box
-        this.networkVal2 = null;//Initialize the network2 drop-down box default data
-        this.selectedNode1 = null;//Initialize the default data of the node1 drop-down box
-        this.selectedNode2 = null;//Initialize the default data of the node2 drop-down box
-        this.selecteTpName1 = null;//Initialize the default data of the TP1 drop-down box
-        this.selecteTpName2 = null;//Initialize the default data of the TP2 drop-down box
-        this.cloudUrl = null;//External cloud URL address
-        this.cloudNetwork = null;//External cloud network name
-        this.cloudNode = null;//External cloud Node name
-        this.cloudTp = null;//External cloud Tp name
-    }
-
-    //Get cloud image data
-    getD3Data() {
-        this.isSpinning = true;
-        this.myhttp.getNetworkD3Data()
-            .subscribe((data) => {
-                this.isSpinning = false;
-                if (data.length == 0) {
-                    this.addLinkDisabled = false;
-                    this.nonetwork = true;
-                    return;
-                }
-                this.nonetwork = false;
-                for (let ii = 0; ii < data.length; ii++) {//Determine if there is external cloud information in the data, and kick it out.
-                    if (data[ii]['aaiId'] != null) {
-                        this.dataCloud = data.splice(ii, 1);
-                    }
-                }
-
-                for (let i = 0; i < data.length; i++) {
-                    let name1 = {}, name2 = {};
-                    let nodess = [];
-                    name1['name'] = name2['network'] = data[i]['networkId'];
-                    name1['type'] = '1';
-                    name1['source'] = i;
-                    this.d3Data.push(name1);
-                    for (let c = 0; c < data[i]["pnfs"].length; c++) {
-                        nodess.push(data[i]['pnfs'][c]['pnfName']);
-                        this.nodeOption1[name2['network']] = nodess;
-                    }
-                    this.networkOption.push(name2);
+    /**
+     * Redraw the selected L2 ethernet service.
+     * @param {Array<object>} treeData parsed from AAI connectivity.
+     */
+    drawService(treeData) {
+        //Model of service graph
+        let graph = {
+            nodes: [
+            ],
+            links: [
+            ],
+            objectify: (function() {
+                /* resolve node IDs (not optimized at all!)
+                */
+                var l, n, _i, _len, _ref, _results;
+                _ref = graph.links;
+                _results = [];
+                for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+                    l = _ref[_i];
+                    _results.push((function() {
+                        var _j, _len2, _ref2, _results2;
+                        _ref2 = graph.nodes;
+                        _results2 = [];
+                        for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
+                            n = _ref2[_j];
+                            if (l.source === n.id) {
+                                l.source = n;
+                                continue;
+                            }
+                            if (l.target === n.id) {
+                                l.target = n;
+                                continue;
+                            } else {
+                                _results2.push(void 0);
+                            }
+                        }
+                        return _results2;
+                    })());
                 }
-                for (let i = 0; i < data.length; i++) {
-                    let tp_length = data[i]['tps'].length;
-                    for (let h = 0; h < tp_length; h++) {
-                        let name2 = {};
-                        let interface_name = data[i]['tps'][h]['interface-name'];
-                        name2['name'] = interface_name;
-                        name2['type'] = '2';
-                        name2['source'] = i;
-                        this.d3Data.push(name2);
-                    }
+                return _results;
+            }),
+            remove: (function(condemned) {
+                /* remove the given node or link from the graph, also deleting dangling links if a node is removed
+                */      if (Array.prototype.indexOf.call(this.nodes, condemned) >= 0) {
+                    this.nodes = this.nodes.filter(function(n) {
+                        return n !== condemned;
+                    });
+                    return this.links = this.links.filter(function(l) {
+                        return l.source.id !== condemned.id && l.target.id !== condemned.id;
+                    });
+                } else if (Array.prototype.indexOf.call(this.links, condemned) >= 0) {
+                    return this.links = this.links.filter(function(l) {
+                        return l !== condemned;
+                    });
                 }
-                for (let b = 0; b < this.d3Data.length; b++) {
-                    this.d3Data[b]['target'] = b;
+            }),
+            last_index: 0,
+            add_node: (function(type) {
+                var n;
+                n = {
+                    id: this.last_index++,
+                    x: 960 / 2,
+                    y: 500 / 2,
+                    type: type
+                };
+                this.nodes.push(n);
+                return n;
+            }),
+            add_link: (function(source, target) {
+                /* avoid links to self
+                */
+                var l, link, _i, _len, _ref;
+                if (source === target) return null;
+                /* avoid link duplicates
+                */
+                _ref = this.links;
+                for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+                    link = _ref[_i];
+                    if (link.source === source && link.target === target) return null;
                 }
-                this.initPosition(this.d3Data);
-                setTimeout(this.render(this.d3Data, this.imgmap, this.dataCloud, this.charge, data), 0);
-            }, (err) => {
-                console.log(err);
-            });
+                l = {
+                    source: source,
+                    target: target
+                };
+                this.links.push(l);
+                return l;
+            })
+        };
 
-    }
+        var nodeList = treeData.map(obj => {
+            let rObj = {};
+            rObj["id"] = obj["id"];
+            rObj["x"] = 500;
+            rObj["y"] = 500;
+            rObj["type"] = obj["type"];
+            return rObj;
+            })
 
-    //Get the initial connection status of the cloud image getlogicalLinksData
-    getLinksData() {
-        this.myhttp.getLogicalLinksData()
-            .subscribe((data) => {
-                if (data["status"] == "FAILED") {
-                    return;
+         var linkList = [] ;
+         for (var i = 0, e = treeData.length; i < e; i++){
+             for (var j = i+1, k = e; j < k; j++){
+                linkList.push({
+                                 source: treeData[i].id,
+                                 target: treeData[j].id
+                             });
                 }
-                for (let i = 0; i < data["logical-link"].length; i++) {//Determine whether there is an external cloud connection in the obtained connection, and kick it out.
-                    if (data['logical-link'][i]['relationship-list']['relationship'].length > 2) {
-                        this.dataCloudLink = data['logical-link'].splice(i, 1);
+         }
+        graph.nodes = nodeList;
+        graph.links = linkList;
+        graph.objectify();
+        var _this = this;
+        var margin = {top: 20, right: 120, bottom: 20, left: 120},
+            width = 1000 - margin.right - margin.left,
+            height = 350 - margin.top - margin.bottom;
+        //clean existing element
+        d3.select("div#" + this.svcContainerOpt.containerId).selectAll("*").remove();
+
+        let svg = d3.select("div#" + this.svcContainerOpt.containerId).append("svg")
+            .attr("width", width + margin.right + margin.left)
+            .attr("height", height + margin.top + margin.bottom);
+        let container = svg.append("g").style("fill", "transparent");
+
+        let vis = container.append('g');
+        container.call(d3.behavior.zoom().scaleExtent([0.5, 8])
+            .on('zoom', function(){
+                vis.attr('transform', "translate(" + d3.event.translate  + ")scale(" + d3.event.scale + ")");
+            }));
+
+        vis.append('rect')
+            .attr('class', 'overlay')
+            .attr('x', -500000)
+            .attr('y', -500000)
+            .attr('width', 1000000)
+            .attr('height', 1000000)
+            .on('click', function(d) {
+                _this.svcEditorGlobal.selection = null;
+                d3.selectAll('.node').classed('selected', false);
+                return d3.selectAll('.link').classed('selected', false);
+            });
+        let colorify = d3.scale.category10();
+        /* initialize the force layout
+        */
+        let force = d3.layout.force().size([width, height]).charge(-400).linkDistance(160)
+            .on('tick', (function(e) {
+            /* update nodes and links
+            */
+                let k = 16 * e.alpha;
+                graph.nodes.forEach(function(o, i) {
+                    if (o["type"] === "root"){
+                        o["x"] +=  k
+            //o["x"] += i & 2 ? k : -k;
+
+                    } else if (o["type"] === "leaf") {
+                        o["x"] +=  -k;
+            //o["x"] += i & 2 ? k : -k;
                     }
-                }
+                });
+                vis.selectAll('.node').attr('transform', function(d) {
+                        return "translate(" + d.x + "," + d.y + ")";
+                    });
 
-                for (let i = 0; i < data["logical-link"].length; i++) {
-                    let textval = [];
-                    textval[0] = data['logical-link'][i]['relationship-list']['relationship'][0]['relationship-data'][1]['relationship-value'];//tp1
-                    textval[1] = data['logical-link'][i]['relationship-list']['relationship'][1]['relationship-data'][1]['relationship-value'];//tp2
-                    textval[2] = data['logical-link'][i]['resource-version'];//version
-                    textval[3] = data['logical-link'][i]['relationship-list']['relationship'][0]['relationship-data'][0]['relationship-value'];//node1
-                    textval[4] = data['logical-link'][i]['relationship-list']['relationship'][1]['relationship-data'][0]['relationship-value'];//node2
-                    textval[5] = data['logical-link'][i]['operational-status'];
-                    textval[6] = data['logical-link'][i]['link-name'];
-                    this.logicalLinks.push(textval);
-                    this.chose(textval);
-                }
-                if (this.dataCloudLink.length > 0) {
-                    this.getcloudLine(this.dataCloudLink);
-                }
-            }, (err) => {
-                console.log(err);
-            });
-    }
 
-    //D3Cloud rendering
-    render(nodes, imgmap, dataCloud, charge, dataD3) {
-        let thiss = this;
-        let _this = this.tpoption,
-            width = null,
-            height = _this.height;
-        if (_this.width > 800) {
-            width = _this.width;
-        } else {
-            width = 800;
-        }
-        if (dataD3.length <= 4) {
-            charge = -300;
-        } else if (dataD3.length > 4 && dataD3.length <= 6) {
-            charge = -160;
-        } else if (dataD3.length > 6 && dataD3.length <= 10) {
-            charge = -110;
-        } else {
-            charge = -100;
-        }
-        let svg = d3.select(_this.container).append('svg')
-            .attr('width', width)
-            .attr('height', height)
-            .attr('id', 'content-svg')
-            .style('pointer-events', 'all')
-            .style('position', 'absolute')
-            .style('top', '1%')
-            .style('right', '2%'),
-            graph = svg.append('g').attr('class', 'graph').attr('id', 'graph'),
-
-            _g_nodes = graph.selectAll('g.node')
-                .data(nodes)
-                .enter()
-                .append('g')
-                .style('display', function (d) {
-                    let display = 'block';
-                    switch (d.type) {
-                        case '1':
-                            display = 'none';
-                            break;
-                        case '2':
-                            display = 'none';
-                            break;
-                        default:
-                            break;
+                //#svcContainer > svg > g > g > g:nth-child(3) > text
+                //_this.svcEditorGlobal.selection
+                return vis.selectAll('.link').attr('x1', function(d) {
+                    return d.source.x;
+                }).attr('y1', function(d) {
+                        return d.source.y;
+                }).attr('x2', function(d) {
+                        return d.target.x;
+                }).attr('y2', function(d) {
+                        return d.target.y;
+                });
+            }));
+        let nodeDragging = force.drag().on('dragstart', function (d){
+            d3.event.sourceEvent.stopPropagation();
+            d.fixed = true;
+        })
+
+        let topoNodeSync = _this.eventDispatcher.on(AppEventType.UserNodeDrag)
+            .subscribe(event => {
+                //console.log(event);
+                let pnfId: string  = event.payload.id;
+                let pnfId_short: string = pnfId.substr(pnfId.lastIndexOf('-')+1);
+                vis.selectAll('.node > circle').attr('stroke-width', function(d) {
+                    if (d.id.startsWith(pnfId_short)){
+                        return "4px";
                     }
-                    return display;
-                })
-                .style('cursor', 'pointer')
-                .attr('class', 'node'),
-
-            _g_lines = graph.selectAll('line.line')
-                .data(nodes)
-                .enter()
-                .append('g')
-                .style('display', 'none')
-                .attr('class', 'line');
-
-
-        _g_lines.append('line')
-            .style('stroke', '#93c62d'
-            )
-            .style('stroke-width', 2);
-
-        _g_nodes.append('image')
-            .attr('width', function (d) {
-                let width = 40;
-                switch (d.type) {
-                    case '1':
-                        width = 4.4 * width;
-                        break;
-                    case '2':
-                        width = 0.12 * width;
-                        break;
-                    default:
-                        break;
-                }
-                return width;
-            })
-            .attr('height', function (d) {
-                let height = 20;
-                switch (d.type) {
-                    case '1':
-                        height = 3.5 * height;
-                        break;
-                    case '2':
-                        height = 0.2 * height;
-                        break;
-                    default:
-                        break;
-                }
-                return height;
-            })
-            .attr('xlink:href', function (d) {
-                return imgmap[d.type];
+                    return "1px";
+                });
             });
 
-        _g_nodes.append('text')
-            .text(function (d) {
-                return d.name;
-            })
-            .style('transform', function (d) {
-                let x = null;
-                let y = null;
-                switch (d.type) {
-                    case '1':
-                        x = 7;
-                        y = -7;
-                        break;
-                    case '2':
-                        x = 1;
-                        y = -2;
-                        break;
-                    default:
-                        break;
-                }
-                return 'translate(' + x + '%,' + y + '%)';
-            })
-            .style('font-size', function (d) {
-                let size = 14;
-                switch (d.type) {
-                    case '1':
-                        size = 14;
-                        break;
-                    case '2':
-                        size = 12;
-                        break;
-                    default:
-                        break;
-                }
-                return size;
-            })
-            .style('fill', function (d) {
-                let color = '#666';
-                switch (d.type) {
-                    case '1':
-                        color = '#666';
-                        break;
-                    case '2':
-                        color = '#666';
-                        break;
-                    default:
-                        break;
-                }
-                return color;
-            })
-            .style('font-weight', '500');
-
+        // DELETION - pressing DEL deletes the selection
+        // CREATION - pressing N creates a new node
+        // d3.select(window).on('keydown', function() {
+        //     if (d3.event.keyCode === 46) {
+        //         if (global.selection != null) {
+        //             graph.remove(global.selection);
+        //             global.selection = null;
+        //             return update();
+        //         }
+        //     } else if (d3.event.keyCode === 78) {
+        //         graph.add_node();
+        //         return update();
+        //     }
+        // });
+
+        //Parameter for Editing tools
+        let toolbar = $("<div class='toolbar'></div>");
+        $("div#" + this.svcContainerOpt.containerId).append(toolbar);
+        toolbar.append($("<svg\n" +
+            "    class='active tool'\n    " +
+            "data-tool='pointer'\n" +
+            "    xmlns='http://www.w3.org/2000/svg'\n" +
+            "    version='1.1'\n" +
+            "    width='32'\n" +
+            "    height='32'\n" +
+            "    fill='#b52d0c'" +
+            "    viewBox='0 0 128 128'>\n" +
+            "    <g transform='translate(881.10358,-356.22543)'>\n" +
+            "      <g transform='matrix(0.8660254,-0.5,0.5,0.8660254,-266.51112,-215.31898)'>\n" +
+            "        <path\n" +
+            "           d='m -797.14902,212.29589 a 5.6610848,8.6573169 0 0 0 -4.61823,4.3125 l -28.3428,75.0625 a 5.6610848,8.6573169 0 0 0 4.90431,13 l 56.68561,0 a 5.6610848,8.6573169 0 0 0 4.9043,-13 l -28.3428,-75.0625 a 5.6610848,8.6573169 0 0 0 -5.19039,-4.3125 z m 0.28608,25.96875 18.53419,49.09375 -37.06838,0 18.53419,-49.09375 z'\n        />\n" +
+            "        <path\n" +
+            "           d='m -801.84375,290.40625 c -2.09434,2.1e-4 -3.99979,1.90566 -4,4 l 0,35.25 c 2.1e-4,2.09434 1.90566,3.99979 4,4 l 10,0 c 2.09434,-2.1e-4 3.99979,-1.90566 4,-4 l 0,-35.25 c -2.1e-4,-2.09434 -1.90566,-3.99979 -4,-4 z'\n        />\n" +
+            "      </g>\n" +
+            "    </g>\n" +
+            "</svg>"));
+        toolbar.append($("<svg\n" +
+            "    class='tool'\n" +
+            "    data-tool='add_node'\n" +
+            "    xmlns='http://www.w3.org/2000/svg'\n" +
+            "    version='1.1'\n" +
+            "    width='32'\n" +
+            "    height='32'\n" +
+            "    viewBox='0 0 128 128'>\n" +
+            "    <g transform='translate(720.71649,-356.22543)'>\n" +
+            "      <g transform='translate(-3.8571429,146.42857)'>\n" +
+            "        <path\n           d='m -658.27638,248.37149 c -1.95543,0.19978 -3.60373,2.03442 -3.59375,4 l 0,12.40625 -12.40625,0 c -2.09434,2.1e-4 -3.99979,1.90566 -4,4 l 0,10 c -0.007,0.1353 -0.007,0.27095 0,0.40625 0.19978,1.95543 2.03442,3.60373 4,3.59375 l 12.40625,0 0,12.4375 c 2.1e-4,2.09434 1.90566,3.99979 4,4 l 10,0 c 2.09434,-2.1e-4 3.99979,-1.90566 4,-4 l 0,-12.4375 12.4375,0 c 2.09434,-2.1e-4 3.99979,-1.90566 4,-4 l 0,-10 c -2.1e-4,-2.09434 -1.90566,-3.99979 -4,-4 l -12.4375,0 0,-12.40625 c -2.1e-4,-2.09434 -1.90566,-3.99979 -4,-4 l -10,0 c -0.1353,-0.007 -0.27095,-0.007 -0.40625,0 z'\n" +
+            "        />\n" +
+            "        <path\n" +
+            "           d='m -652.84375,213.9375 c -32.97528,0 -59.875,26.86847 -59.875,59.84375 0,32.97528 26.89972,59.875 59.875,59.875 32.97528,0 59.84375,-26.89972 59.84375,-59.875 0,-32.97528 -26.86847,-59.84375 -59.84375,-59.84375 z m 0,14 c 25.40911,0 45.84375,20.43464 45.84375,45.84375 0,25.40911 -20.43464,45.875 -45.84375,45.875 -25.40911,0 -45.875,-20.46589 -45.875,-45.875 0,-25.40911 20.46589,-45.84375 45.875,-45.84375 z'\n" +
+            "        />\n" +
+            "      </g>\n" +
+            "    </g>\n" +
+            "</svg>"));
+        toolbar.append($("<svg\n" +
+            "    class='tool'\n" +
+            "    data-tool='add_link'\n" +
+            "    xmlns='http://www.w3.org/2000/svg'\n" +
+            "    version='1.1'\n" +
+            "    width='32'\n" +
+            "    height='32'\n" +
+            "    viewBox='0 0 128 128'>\n" +
+            "<g transform='translate(557.53125,-356.22543)'>\n" +
+            "    <g transform='translate(20,0)'>\n" +
+            "      <path\n" +
+            "         d='m -480.84375,360 c -15.02602,0 -27.375,12.31773 -27.375,27.34375 0,4.24084 1.00221,8.28018 2.75,11.875 l -28.875,28.875 c -3.59505,-1.74807 -7.6338,-2.75 -11.875,-2.75 -15.02602,0 -27.34375,12.34898 -27.34375,27.375 0,15.02602 12.31773,27.34375 27.34375,27.34375 15.02602,0 27.375,-12.31773 27.375,-27.34375 0,-4.26067 -0.98685,-8.29868 -2.75,-11.90625 L -492.75,411.96875 c 3.60156,1.75589 7.65494,2.75 11.90625,2.75 15.02602,0 27.34375,-12.34898 27.34375,-27.375 C -453.5,372.31773 -465.81773,360 -480.84375,360 z m 0,14 c 7.45986,0 13.34375,5.88389 13.34375,13.34375 0,7.45986 -5.88389,13.375 -13.34375,13.375 -7.45986,0 -13.375,-5.91514 -13.375,-13.375 0,-7.45986 5.91514,-13.34375 13.375,-13.34375 z m -65.375,65.34375 c 7.45986,0 13.34375,5.91514 13.34375,13.375 0,7.45986 -5.88389,13.34375 -13.34375,13.34375 -7.45986,0 -13.34375,-5.88389 -13.34375,-13.34375 0,-7.45986 5.88389,-13.375 13.34375,-13.375 z'\n" +
+            "      />\n      <path\n" +
+            "         d='m -484.34375,429.25 c -1.95543,0.19978 -3.60373,2.03442 -3.59375,4 l 0,12.40625 -12.40625,0 c -2.09434,2.1e-4 -3.99979,1.90566 -4,4 l 0,10 c -0.007,0.1353 -0.007,0.27095 0,0.40625 0.19978,1.95543 2.03442,3.60373 4,3.59375 l 12.40625,0 0,12.4375 c 2.1e-4,2.09434 1.90566,3.99979 4,4 l 10,0 c 2.09434,-2.1e-4 3.99979,-1.90566 4,-4 l 0,-12.4375 12.4375,0 c 2.09434,-2.1e-4 3.99979,-1.90566 4,-4 l 0,-10 c -2.1e-4,-2.09434 -1.90566,-3.99979 -4,-4 l -12.4375,0 0,-12.40625 c -2.1e-4,-2.09434 -1.90566,-3.99979 -4,-4 l -10,0 c -0.1353,-0.007 -0.27095,-0.007 -0.40625,0 z'\n" +
+            "      />\n" +
+            "    </g>\n" +
+            "  </g>\n" +
+            "</svg>"));
+        let library = $("<div class='library'></div></div>");
+        toolbar.append(library);
+
+        ['PON', 'ETH'].forEach(function(type) {
+            var new_btn;
+            new_btn = $("<svg width='42' height='42'>\n" +
+                "    <g class='node'>\n" +
+                "        <circle\n" +
+                "            cx='21'\n" +
+                "            cy='21'\n" +
+                "            r='18'\n" +
+                "            stroke='" + (colorify(type)) + "'\n" +
+                "            fill='" + (d3.hcl(colorify(type)).brighter(3)) + "'\n" +
+                "        >\n" +
+                "        <title>" + (type) + " UNI</title>   \n" +
+                "       </circle>" +
+                "    </g>\n" +
+                "</svg>");
+            new_btn.bind('click', function() {
+                graph.add_node(type);
+                return update();
+            });
+            library.append(new_btn);
+            return library.hide();
+        });
 
-        //Add custom attributes online
-        _g_lines.each(function (d, i) {
-            let _this = d3.select(this);
-            if (d.name) {
-                _this.attr('data-text', d.name);
+        let tool = 'pointer';
+        let new_link_source = null;
+        let drag_link;
+        vis.on('mousemove.add_link', (function(d) {
+            /* check if there is a new link in creation
+            */
+            var p;
+            if (new_link_source != null) {
+                /* update the draggable link representation
+                */
+                p = d3.mouse(vis.node());
+                return drag_link.attr('x1', new_link_source.x).attr('y1', new_link_source.y).attr('x2', p[0]).attr('y2', p[1]);
+            }
+        })).on('mouseup.add_link', (function(d) {
+            new_link_source = null;
+            /* remove the draggable link representation, if exists
+            */
+            if (drag_link != null) return drag_link.remove();
+        }));
+        d3.selectAll('.tool').on('click', function() {
+            var new_tool, nodes;
+            d3.selectAll('.tool').classed('active', false).style("fill", "#a3a4c3");
+            d3.select(this).classed('active', true).style("fill", "#b52d0c");
+            new_tool = $(this).data('tool');
+            nodes = vis.selectAll('.node');
+
+            //mode change to add_link
+            if (new_tool === 'add_link' && tool !== 'add_link') {
+                /* remove drag handlers from nodes
+                */
+                nodes.on('mousedown.drag', null).on('touchstart.drag', null);
+                /* add drag handlers for the add_link tool
+                */
+                nodes.call(drag_add_link);
+            } else if (new_tool !== 'add_link' && tool === 'add_link') {
+                /* remove drag handlers for the add_link tool
+                */
+                nodes.on('mousedown.add_link', null).on('mouseup.add_link', null);
+                /* add drag behavior to nodes
+                */
+                nodes.call(nodeDragging);
+            }
+            if (new_tool === 'add_node') {
+                library.show();
+            } else {
+                library.hide();
             }
+            return tool = new_tool;
         });
-
-        let force = d3.layout.force()
-            .size([1000, this.winHeight])
-            .linkDistance(5)
-            // .theta(0.6)
-            .charge(charge)
-            .nodes(nodes)
-            .links(nodes)
-            .start();
-
-        force.on('tick', function () {
-            if (force.alpha() <= 0.04) {
-
-                _g_nodes.style('display', function (d) {
-                    let display = 'block';
-                    switch (d.type) {
-                        case '1':
-                            display = 'block';
-                            break;
-                        case '2':
-                            display = 'none';
-                            break;
-                        default:
-                            break;
-                    }
-                    return display;
+        update();
+        function update() {
+            /* update the layout
+      */
+            var links, new_nodes, nodes;
+            force.nodes(graph.nodes).links(graph.links).start();
+            /* create nodes and links
+            */
+            /* (links are drawn with insert to make them appear under the nodes)
+            */
+            /* also define a drag behavior to drag nodes
+            */
+            /* dragged nodes become fixed
+            */
+            nodes = vis.selectAll('.node').data(graph.nodes, function(d) {
+                return d.id;
+            });
+            new_nodes = nodes.enter().append('g').attr('class', 'node');
+/*            .on('click', (function(d) {
+                /!* SELECTION
+                *!/
+                _this.svcEditorGlobal.selection = d;
+                d3.selectAll('.node').classed('selected', function(d2) {
+                    return d2 === d;
                 });
+                return d3.selectAll('.link').classed('selected', false);
+            }));*/
+            links = vis.selectAll('.link').data(graph.links, function(d) {
+                return "" + d.source.id + "->" + d.target.id;
+            });
 
-                nodes.forEach(function (d, i) {
-                    d.x = d.x - 25 < 0 ? 25 : d.x;
-                    d.x = d.x + 25 > width ? width - 25 : d.x;
-                    d.y = d.y - 15 < 0 ? 15 : d.y;
-                    d.y = d.y + 15 > height ? height - 15 : d.y;
+            links.enter().insert('line', '.node').attr('class', 'link').on('click', (function(d) {
+                /* SELECTION
+                */
+                _this.svcEditorGlobal.selection = d;
+                d3.selectAll('.link').classed('selected', function(d2) {
+                    return d2 === d;
                 });
+                return d3.selectAll('.node').classed('selected', false);
+            }));
+            links
+                .style("stroke-width", "6px")
+                .style("stroke", "gray")
+                .style("opacity", "0.5");
+
+            links.exit().remove();
+            /* TOOLBAR - add link tool initialization for new nodes
+            */
+            if (tool === 'add_link') {
+                new_nodes.call(drag_add_link);
+            } else {
+                new_nodes.call(nodeDragging);
+            }
+            new_nodes.append('circle').attr('r', 18).attr('stroke', function(d) {
+                return colorify(d.type);
+            }).attr('fill', function(d) {
+                return d3.hcl(colorify(d.type)).brighter(3);
+            });
+            /* draw the label
+            */
+            new_nodes.append('text').text(function(d) {
+                return d.id;
+            }).attr('dy', '0.35em').attr('fill', function(d) {
+                return colorify(d.type);
+            });
+            return nodes.exit().remove();
+        };
+        function drag_add_link (selection) {
+            return selection.on('mousedown.add_link', (function(d) {
+                var p;
+                new_link_source = d;
+                /* create the draggable link representation
+                */
+                p = d3.mouse(vis.node());
+                drag_link = vis.insert('line', '.node').attr('class', 'drag_link').attr('x1', d.x).attr('y1', d.y).attr('x2', p[0]).attr('y2', p[1]);
+                drag_link
+                    .style("stroke-width", "6px")
+                    .style("stroke", "gray")
+                    .style("opacity", "0.5");
+                /* prevent pan activation
+                */
+                d3.event.stopPropagation();
+                /* prevent text selection
+                */
+                return d3.event.preventDefault();
+            })).on('mouseup.add_link', (function(d) {
+                /* add link and update, but only if a link is actually added
+                */      if (graph.add_link(new_link_source, d) != null) return update();
+            }));
+        };
 
-                _g_nodes.attr('transform', function (d) {
 
-                    let image = d3.select(this).select('image')[0][0],
-                        halfWidth = parseFloat(image.attributes[0]['value']) / 2,
-                        halfHeight = parseFloat(image.attributes[1]['value']) / 2;
-                    let xx = d.x - halfWidth,
-                        yy = d.y - halfHeight;
-                    return 'translate(' + xx + ',' + yy + ')';
-                });
+    }
 
-                _g_lines.select('line')
-                    .attr('x1', function (d) {
-                        return d.source.x;
-                    })
-                    .attr('y1', function (d) {
-                        return d.source.y;
-                    })
-                    .attr('x2', function (d) {
-                        return d.target.x;
-                    })
-                    .attr('y2', function (d) {
-                        return d.target.y;
-                    });
+    /**
+     * Redraw the underlay network topology.
+     * @param {Array<object>} nodes parsed from AAI logicalLinks.
+     * @param {Array<object>} lines parsed from AAI logicalLinks.
+     */
+    drawTopo(nodes: Array<object>, lines: Array<object>){
+        let margin = {top: 20, right: 120, bottom: 20, left: 120},
+            width = 1000 - margin.right - margin.left,
+            height = 350 - margin.top - margin.bottom;
 
-                _g_nodes.select('text').attr('dy', function (d) {
-                    let image = this.previousSibling,
-                        height = parseFloat(image.attributes[1]['value']),
-                        fontSize = 12;
-                    return height + 1.5 * fontSize;
-                });
-            }
+        let thisNg = this;
+
+        let nodeById = d3.map();
+
+        nodes.forEach(function(node) {
+            nodeById.set(node["id"], node);
         });
 
-        force.on('end', function () {
-            force.stop();
-            if (dataCloud.length > 0) {
-                thiss.getoutCloud(dataCloud, imgmap);
-            }
-            thiss.getLinksData();
-            thiss.addLinkDisabled = false;
+        lines.forEach(function(link) {
+            link["source"] = nodeById.get(link["source"]);
+            link["target"] = nodeById.get(link["target"]);
         });
 
-    };
+        let svg = d3.select("div#tpContainer").append("svg")
+            .attr("width", width + margin.right + margin.left)
+            .attr("height", height + margin.top + margin.bottom)
+            .style("pointer-events", "all");
 
-    //Topology drag and drop effect
-    getDragBehavior(force) {
+        let graph = svg.append("g").attr("class", "graph");
 
-        return d3.behavior.drag()
-            .origin(function (d) {
-                return d;
+        let force = d3.layout.force()
+            .nodes(nodes)
+            .links(lines)
+            .size([width, height])
+            /*            .linkStrength(function(d){
+                            switch(d.type){
+                                case 1:
+                                    return 0.15;
+                                case 2:
+                                default:
+                                    return 0.1;
+                            }
+                        })*/
+            //.gravity(0)
+            //.gravity(0)
+            .linkDistance(function (d) {
+                        return 150;
             })
-            .on('dragstart', dragstart)
-            .on('drag', dragging)
-            .on('dragend', dragend);
+            .charge(function(d) {
+                return -600;
+            })
+            .start();
 
-        function dragstart(d) {
-            d3.event.sourceEvent.stopPropagation();
-            d3.select(this).classed('dragging', true);
-            force.start();
-        }
+        let drag = force.drag()
+            .on("dragstart", dragstart)
+            .on("dragend", dragend);
 
-        function dragging(d) {
-            d.x = d3.event.x;
-            d.y = d3.event.y;
-        }
+        let _g_lines = graph.selectAll("line.line")
+                .data(lines)
+                .enter()
+                .append("g")
+                .attr("class", "line");
 
-        function dragend(d) {
-            d3.select(this).classed('dragging', false);
-        }
+        let  _g_nodes = graph.selectAll("g.node")
+                .data(nodes)
+                .enter()
+                .append("g")
+                .attr("class", "node")
+                .call(drag);
+        _g_lines.append("line")
+            .style('stroke', function (d) {
+                if(d.type === 2){
+                    return "#000000";
+                } else {
+                    return '#93c62d';
+                }
 
-    }
+            })
+            .style("stroke-width", 4);
 
-    //Initialize node location
-    initPosition(datas) {
-        let origin = [this.tpoption.width / 2, this.tpoption.height / 2];
-        let points = this.getVertices(origin, Math.min(this.tpoption.width / 2, this.tpoption.height / 2), datas.length);
-        datas.forEach((item, i) => {
-            item.x = points[i].x;
-            item.y = points[i].y;
-        });
-    }
 
-    //Get anchor points based on polygons
-    getVertices(origin, r, n) {
-        if (typeof n !== 'number') return;
-        let ox = origin[0];
-        let oy = origin[1];
-        let angle = 30 * n / n;
-        let i = 0;
-        let points = [];
-        let tempAngle = 0;
-        while (i < n) {
-            tempAngle = (i * angle * Math.PI) / 180;
-            points.push({
-                x: ox - r * Math.sin(tempAngle),
-                y: oy - r * Math.cos(tempAngle),
+        _g_nodes.append("image")
+            .attr("width", function (d) {
+                switch (d.group) {
+                    case 'pnf':
+                        return 70;
+                    case 'tp':
+                    default:
+                        return 10;
+                }
+            })
+            .attr("height", function (d) {
+                switch (d.group) {
+                    case 'pnf':
+                        return 70;
+                    case 'tp':
+                    default:
+                        return 10;
+                }
+            })
+            .attr("xlink:href", function (d) {
+                return thisNg.imgMap[d.group];
             });
-            i++;
-        }
-        return points;
-    }
 
-    //Rendering an external cloud
-    getoutCloud(dataCloud, imgmap) {
-        let _this = this,
-            width;
-        let networkId = dataCloud[0]['networkId'];
-        if (_this.tpoption.width > 800) {
-            width = _this.tpoption.width;
-        } else {
-            width = 800;
-        }
-        let svg = d3.select('#content-svg');
-        svg.append('g').attr('class', 'out').attr('id', 'out').style({ 'display': 'block' }).attr('transform', 'translate(' + (width - 200) + ',0)');
-        let out = d3.select('#out');
-        out.append('image').style('width', '200').style('height', '118').attr('xlink:href', imgmap['3']);
-        out.append('text').text(networkId)
-            .style('transform', 'translate(0,0)')
-            .style('font-size', '16')
-            .style('font-weight', '400')
-            .attr('dx', '40')
-            .attr('dy', '70')
-            .style('fill', '#666');
-    }
+        _g_nodes.append("text")
+            .text(function (d) {
+                return d.id.substr( d.id.lastIndexOf('-')+1);
+            })
+            .style('font-size', '12')
+            .style('fill', '#333');
+
+        //_g_nodes.each(function (d, i) {
+            var selection = d3.select(this);
+/*            if (d.status == '0') {
+                selection.append("g").attr("class", "error-tip")
+                    .append("image").attr("xlink:href", function (d) {
+                    return imgMap['error-tip'];
+                });
+            }*/
+       // });
 
-    //External cloud connection
-    getcloudLine(dataCloudLink) {
-        let textval = [];
-        textval[0] = dataCloudLink[0]['relationship-list']['relationship'][0]['relationship-data'][1]['relationship-value'];//tp1
-        textval[1] = dataCloudLink[0]['relationship-list']['relationship'][1]['relationship-data'][1]['relationship-value'];//tp2
-        textval[2] = dataCloudLink[0]['resource-version'];//version
-        textval[3] = dataCloudLink[0]['relationship-list']['relationship'][0]['relationship-data'][0]['relationship-value'];//node1
-        textval[4] = dataCloudLink[0]['relationship-list']['relationship'][1]['relationship-data'][0]['relationship-value'];//node2
-        textval[5] = dataCloudLink[0]['operational-status'];//status
-        textval[6] = dataCloudLink[0]['relationship-list']['relationship'][2]['relationship-data'][0]['relationship-value'];//aaiId
-        textval[7] = this.dataCloud[0]['networkId'];
-        let dataD3 = this.d3Data;
-        let arr = [
-            textval[0],
-            textval[1]
-        ];
-        for (let p = 0; p < dataD3.length; p++) {//Determine which Domain network the two tp ports belong to
-            for (let pp = 0; pp < arr.length; pp++) {//Determine which Domain network the two tp ports belong to
-                if (dataD3[p]['name'] == arr[pp]) {
-                    textval[8] = dataD3[p]['source']['name'];//network1
-                }
-            }
-        }
-        textval[9] = dataCloudLink[0]['link-name'];
-        let lines_json = {};
-        let _this = this,
-            width;
-        if (_this.tpoption.width > 800) {
-            width = _this.tpoption.width;
-        } else {
-            width = 800;
-        }
-        for (let i = 0; i < $(".node").length; i++) {
-            if ($('.node').eq(i).find('text').html() == textval[8]) {
-                //Get the x, y coordinates of the second level
-                let translates = $('.node').eq(i).css('transform');
-                lines_json['x1'] = parseFloat(translates.substring(7).split(',')[4]);
-                lines_json['y1'] = parseFloat(translates.substring(7).split(',')[5]);
-                lines_json['x2'] = width - 100;
-                lines_json['y2'] = 100;
+        _g_lines.each(function (d, i) {
+            var _this = d3.select(this);
+            if (d.type === 1) {
+                _this.append("text")
+                    .text("100GB")
+                    .style('fill', 'rgb(255,198,22)')
+                    .style('font-size', '11');
+
+                _this.append("rect")
+                    .attr("fill", function (d) {
+                        return '#555';
+                    })
+                    .attr("width", function (d) {
+                        return 4;
+                    })
+                    .attr("height", function (d) {
+                        return 4;
+                    })
+                    .append("animate");
+
+                _this.select("rect").append("animate");
+            } else {
+                _this.append("image")
+                    .attr("xlink:href", function () {
+                        return thisNg.imgMap['link-cut'];
+                    });
             }
-        }
-        let x1 = lines_json['x1'];
-        let y1 = lines_json['y1'];
-        let x2 = lines_json['x2'];
-        let y2 = lines_json['y2'];
-        let color = '#14bb58';
-        if (textval[5] == 'up') {
-            color = '#14bb58';
-        } else {
-            color = 'red';
-        }
-        let line = '<line class=\'line cloudline line-click\' stroke=\'' + color + '\' stroke-width=\'2\' style=\'cursor:pointer\'></line>';
-        let svg = d3.select('#graph');
-        $('.cloudline').remove();
-        $('#graph').prepend(line);
-        $('.cloudline').attr({
-            x1: x1 + 100,
-            y1: y1 + 10,
-            x2: x2,
-            y2: y2,
-            'data-tp1': textval[0],
-            'data-tp2': textval[1],
-            'data-version': textval[2],
-            'data-node1': textval[3],
-            'data-node2': textval[4],
-            'data-network': textval[8],
-            'data-cloudnetwork': textval[7],
-            'data-url': '',
-            'data-aaiid': textval[6],
-            'data-link': textval[9],
         });
-        svg.html(svg.html());
-        this.getCloudUrl(textval[6]);
-        this.getExtAAIIdVersion(textval[6]);
-    }
 
 
-    //Query external cloud host url address
-    getCloudUrl(aaiId) {
-        this.myhttp.queryCloudUrl(aaiId)
-            .subscribe((data) => {
-                this.delcloudUrl = data['service-url'];
-                $('.cloudline').attr({
-                    'data-url': data['service-url']
+        force.on("tick", function (e) {
+
+            _g_lines.select("line").attr("x1", function (d) {
+                return d.source.x;
+            })
+                .attr("y1", function (d) {
+                    return d.source.y;
+                })
+                .attr("x2", function (d) {
+                    return d.target.x;
+                })
+                .attr("y2", function (d) {
+                    return d.target.y;
+                });
+            _g_lines.select("image").attr("x", function (d) {
+                var x1 = d.source.x,
+                    x2 = d.target.x,
+                    x = x1 - (x1 - x2) / 2;
+                return x - 8;
+            })
+                .attr("y", function (d) {
+                    var y1 = d.source.y,
+                        y2 = d.target.y,
+                        y = y1 - (y1 - y2) / 2;
+                    return y - 15;
                 });
-            }, (err) => {
-                console.log(err);
-            });
-    }
 
-    //Query external cloud ext-aai-id resource-version
-    getExtAAIIdVersion(aaiId) {
-        this.myhttp.queryExtAAIIdVersion(aaiId)
-            .subscribe((data) => {
-                this.delVersion = data["resource-version"];
-                $('.cloudline').attr({
-                    'data-version': data["resource-version"],
+            _g_lines.select("text")
+                .attr('x', function (d) {
+                    var x1 = d.source.x,
+                        x2 = d.target.x,
+                        halfX = x1 - (x1 - x2) / 2,
+                        x3 = x1 - (x1 - halfX) / 2;
+                    return x3;
+                })
+                .attr('y', function (d) {
+                    var y1 = d.source.y,
+                        y2 = d.target.y,
+                        halfY = y1 - (y1 - y2) / 2,
+                        y3 = y1 - (y1 - halfY) / 2;
+                    y3 = y3 - 5;
+                    return y3;
+                })
+                .attr("transform", function (d) {
+                    var x1 = d.source.x,
+                        x2 = d.target.x,
+                        y1 = d.source.y,
+                        y2 = d.target.y,
+                        x = x1 - (x1 - x2) / 2,
+                        y = y1 - (y1 - y2) / 2,
+                        rightAngleSide1 = Math.abs(y2 - y1),
+                        rightAngleSide2 = Math.abs(x2 - x1),
+                        _asin = 0,
+                        _rotateAngle = 0,
+                        x3 = x1 - (x1 - x) / 2,
+                        y3 = y1 - (y1 - y) / 2;
+
+                    if (x1 < x2) {
+                        _asin = (y2 - y1) / Math.sqrt(Math.pow(rightAngleSide1, 2) + Math.pow(
+                            rightAngleSide2, 2));
+                        _rotateAngle = Math.asin(_asin) * 180 / Math.PI;
+                    } else {
+                        _asin = (y1 - y2) / Math.sqrt(Math.pow(rightAngleSide1, 2) + Math.pow(
+                            rightAngleSide2, 2));
+                        _rotateAngle = Math.asin(_asin) * 180 / Math.PI;
+                        _rotateAngle = _rotateAngle < 0 ? (180 + _rotateAngle) : -(180 -
+                            _rotateAngle);
+                    }
+                    return 'rotate(' + (_rotateAngle) + ',' + x3 + ' ' + y3 + ')';
                 });
-            }, (err) => {
-                console.log(err);
-            });
-    }
 
+            _g_lines.select("rect")
+                .attr('x', function (d) {
+                    return d.source.x - 1;
+                })
+                .attr('y', function (d) {
+                    return d.source.y - 1;
+                })
+                .selectAll('animate').each(function (d, i) {
+                if (i == 0) {
+                    d3.select(this)
+                        .attr("attributeName", function (d) {
+                            return 'x';
+                        })
+                        .attr("from", function (d) {
+                            return d.source.x - 1;
+                        })
+                        .attr("to", function (d) {
+                            return d.target.x;
+                        });
+                } else {
+                    d3.select(this)
+                        .attr("attributeName", function (d) {
+                            return 'y';
+                        })
+                        .attr("from", function (d) {
+                            return d.source.y - 1;
+                        })
+                        .attr("to", function (d) {
+                            return d.target.y;
+                        });
+                }
 
-    //The right form drop-down box data is filled with three levels of linkage
-    //Left Port
-    network1Change(value: string): void {
-        this.selectedNode1 = this.nodeOption1[value][0];
-        this.getPInterfaces1();
-    }
+                d3.select(this).attr("attributeType", "XML")
+                    .attr("dur", function (d) {
+                        return '1.5s';
+                    })
+                    .attr("repeatCount", "indefinite");
 
-    node1Change(): void {
-        this.getPInterfaces1();
-    }
+            })
+/*            let k = 6 * e.alpha;
+            nodes.forEach(function(o, i) {
+                if (o["layer"] === "Otn"){
+                    o["y"] +=  k
+                    //o["x"] += i & 2 ? k : -k;
+
+                } else if (o["layer"] === "Eth") {
+                    o["y"] +=  -k;
+                    //o["x"] += i & 2 ? k : -k;
+                }
+            });*/
 
-    //Get the TP data under the specified node
-    getPInterfaces1() {
-        let params = {
-            pnfName: this.selectedNode1,
-        };
-        this.myhttp.getPInterfacesData(params)
-            .subscribe((data) => {
-                this.tpOption1 = [];
-                for (let i = 0; i < data.length; i++) {
-                    let tpName = data[i]['interface-name'];
-                    this.tpOption1.push(tpName);
+            _g_nodes.attr("transform", function (d) {
+                if(d.group === 'pnf') {
+                    var image = d3.select(this).select("image")[0][0],
+                        halfWidth = parseFloat("70") / 2,
+                        halfHeight = parseFloat("70") / 2;
+
+                    return 'translate(' + (d.x - halfWidth) + ',' + (d.y - halfHeight) + ')';
+                } else {
+                    return 'translate(' + (d.x) + ',' + (d.y) + ')';
                 }
-                this.selecteTpName1 = this.tpOption1[0];
-            }, (err) => {
-                console.log(err);
-            });
-    }
 
-    //Right Port
-    network2Change(value: string): void {
-        this.selectedNode2 = this.nodeOption1[value][0];
-        this.getPInterfaces2();
-    }
+            });
 
-    node2Change(): void {
-        this.getPInterfaces2();
-    }
+            _g_nodes.select("text").attr('dy', function (d) {
+                var image = this.previousSibling,
+                    height = parseFloat("10"),
+                    fontSize = parseFloat(this.style.fontSize);
 
-    //Get the TP data under the specified node
-    getPInterfaces2() {
-        let params = {
-            pnfName: this.selectedNode2,
-        };
-        this.myhttp.getPInterfacesData(params)
-            .subscribe((data) => {
-                this.tpOption2 = [];
-                for (let i = 0; i < data.length; i++) {
-                    let tpName = data[i]['interface-name'];
-                    this.tpOption2.push(tpName);
-                }
-                this.selecteTpName2 = this.tpOption2[0];
-            }, (err) => {
-                console.log(err);
+                return height + 1.5 * fontSize;
             });
-    }
 
-    //Submit form, connect
-    submitForm(): void {
-        //When the page ONAP is not selected, the local cloud TP connection
-        let _thiss = this;
-        if (this.inputshow == false) {
-            if (this.linkName == null || this.networkVal1 == null || this.selectedNode1 == null || this.selecteTpName1 == null || this.networkVal2 == null || this.selectedNode2 == null || this.selecteTpName2 == null) {
-                alert('The service port cannot be empty. Please select the port information.');
-                return;
-            } else if (this.networkVal1 == this.networkVal2) {
-                alert('The TP port under the same cloud service cannot be connected!');
-                return;
-            }
-            let tp_links = [],
-                tp1 = this.selecteTpName1,
-                tp2 = this.selecteTpName2;
-            for (let i = 0; i < $(".line-port").length; i++) {
-                let data_text1 = $('.line-port').eq(i).attr('data-tp1');
-                let data_text2 = $('.line-port').eq(i).attr('data-tp2');
-                tp_links.push(data_text1);
-                tp_links.push(data_text2);
-            }
-            if (tp_links.indexOf(tp1) != -1 || tp_links.indexOf(tp2) != -1) {
-                alert('This port number connection already exists!');
-                return;
-            }
-            this.createTpLinks();
+            _g_nodes.select(".error-tip").attr("transform", function (d) {
 
-        } else {
-            //When the page ONAP is selected, the external cloud is created, and the connection is made.
-            if (this.linkName == null || this.networkVal1 == null || this.selectedNode1 == null || this.selecteTpName1 == null || this.cloudUrl == null || this.cloudNetwork == null || this.cloudNode == null || this.cloudTp == null) {
-                alert('The service port cannot be empty. Please fill in the complete port information.');
-                return;
-            }
-            let tp_links = [],
-                tp1 = this.selecteTpName1;
-            for (let i = 0; i < $(".line-port").length; i++) {
-                let data_text1 = $('.line-port').eq(i).attr('data-tp1');
-                tp_links.push(data_text1);
-            }
-            if (tp_links.indexOf(tp1) != -1) {
-                alert('This port number connection already exists!');
-                return;
-            }
+                var image = this.parentNode.firstChild,
+                    width = parseFloat("70");
 
-            let time = this.cloudNetwork + new Date().getTime();//Create aaiid for the external cloud, this identifier is unique and cannot be repeated
-            this.createCloudUrls(time)
-        }
-    }
+                return 'translate(' + 0.8 * width + ',0)';
 
-    //Create tp connection call interface createLink
-    createTpLinks() {
-        let params = {
-            'link-name': this.linkName,
-            'link-type': 'cross-link',
-            'operational-status': 'up',
-            'relationship-list': {
-                'relationship': [
-                    {
-                        'related-to': 'p-interface',
-                        'related-link': '/aai/v14/network/pnfs/pnf/' + this.selectedNode1 + '/p-interfaces/p-interface/' + this.selecteTpName1,
-                        'relationship-data': [
-                            {
-                                'relationship-key': 'pnf.pnf-id',
-                                'relationship-value': this.selectedNode1
-                            },
-                            {
-                                'relationship-key': 'p-interface.p-interface-id',
-                                'relationship-value': this.selecteTpName1,
-                            }
-                        ]
-                    },
-                    {
-                        'related-to': 'p-interface',
-                        'related-link': '/aai/v14/network/pnfs/pnf/' + this.selectedNode2 + '/p-interfaces/p-interface/' + this.selecteTpName2,
-                        'relationship-data': [
-                            {
-                                'relationship-key': 'pnf.pnf-id',
-                                'relationship-value': this.selectedNode2
-                            },
-                            {
-                                'relationship-key': 'p-interface.p-interface-id',
-                                'relationship-value': this.selecteTpName2
-                            }
-                        ]
-                    }
-                ]
-            }
-        };
-        this.myhttp.createLink(params)
-            .subscribe((data) => {
-                if (data['status'] == 'SUCCESS') {
-                    this.queryAddLink();
-                }
-            }, (err) => {
-                console.log(err);
-                console.log('Create connection interface call failed');
             });
-    }
 
-    //Query the newly added connection immediately after creating the tp cable
-    queryAddLink() {
-        let linkName = this.linkName,
-            selecteTpName1 = this.selecteTpName1,
-            selecteTpName2 = this.selecteTpName2,
-            selectedNode1 = this.selectedNode1,
-            selectedNode2 = this.selectedNode2;
-        let params = {
-            'link-name': linkName,
-        };
-        this.myhttp.querySpecificLinkInfo(params)
-            .subscribe((data) => {
-                let version = data['resource-version'],
-                    operational_status = data['operational-status'],
-                    linkname = data['link-name'];
-                let textval = [selecteTpName1, selecteTpName2, version, selectedNode1, selectedNode2, operational_status, linkname];
-                this.hideForm();
-                this.chose(textval);
-            }, (err) => {
-                console.log(err);
-            });
-    }
+        });
 
-    //Connection between two TP coordinates
-    chose(textval) {
-        let lines_json = {};
-        lines_json['tp1'] = textval[0];
-        lines_json['tp2'] = textval[1];
-        lines_json['version'] = textval[2];
-        lines_json['node1'] = textval[3];
-        lines_json['node2'] = textval[4];
-        lines_json['status'] = textval[5];
-        lines_json['linkname'] = textval[6];
-        for (let i = 0; i < $(".node").length; i++) {
-            if ($('.node').eq(i).find('text').html() == textval[0]) {
-                $('.node').eq(i).show();
-                //Get the x, y coordinates of the second level
-                let translates = $('.node').eq(i).css('transform');
-                lines_json['x1'] = parseFloat(translates.substring(7).split(',')[4]);
-                lines_json['y1'] = parseFloat(translates.substring(7).split(',')[5]);
-            }
-            if ($('.node').eq(i).find('text').html() == textval[1]) {
-                $('.node').eq(i).show();
-                let translates = $('.node').eq(i).css('transform');
-                lines_json['x2'] = parseFloat(translates.substring(7).split(',')[4]);
-                lines_json['y2'] = parseFloat(translates.substring(7).split(',')[5]);
-            }
-        }
-        this.addLine(lines_json);
-    }
 
-    //Connection between two TPs
-    addLine(lines) {
-        let tp1 = lines.tp1;
-        let tp2 = lines.tp2;
-        let version = lines.version;
-        let node1 = lines.node1;
-        let node2 = lines.node2;
-        let status = lines.status;
-        let linkname = lines.linkname;
-        let x1 = lines.x1;
-        let y1 = lines.y1;
-        let x2 = lines.x2;
-        let y2 = lines.y2;
-        let color = '#14bb58';
-        if (status == 'up') {
-            color = '#14bb58';
-        } else {
-            color = 'red';
+        function dblclick(d) {
+            d3.select(this).classed("fixed", d.fixed = false);
         }
-        let line = '<line class=\'line line-port line-click\' stroke=\'' + color + '\' stroke-width=\'2\' style=\'cursor:pointer\'></line>';
-        let svg = d3.select('#graph');
-        $('#graph').prepend(line);
-        $('.line').first().attr({
-            x1: x1,
-            y1: y1,
-            x2: x2,
-            y2: y2,
-            'data-tp1': tp1,
-            'data-tp2': tp2,
-            'data-version': version,
-            'data-node1': node1,
-            'data-node2': node2,
-            'data-link': linkname
-        });
-        svg.html(svg.html());
-    }
-
-    //After creating an external cloud connection, query the connection immediately
-    queryOutCloudLink(time) {
-        let networkVal1 = this.networkVal1,
-            selectedNode1 = this.selectedNode1,
-            selecteTpName1 = this.selecteTpName1,
-            cloudUrl = this.cloudUrl,
-            cloudNetWork = this.cloudNetwork,
-            cloudNode = this.cloudNode,
-            cloudTp = this.cloudTp,
-            linkname = this.linkName;
-        let params = {
-            'link-name': linkname,
-        };
-        this.myhttp.querySpecificLinkInfo(params)
-            .subscribe((data) => {
-                let status = data['operational-status'];
-                let link_name = data['link-name'];
-                this.outCloudShow = true;
-                this.hideForm();
-                this.outCloud(this.imgmap);
-                setTimeout(this.cloudLine(networkVal1, selectedNode1, selecteTpName1, cloudUrl, cloudNetWork, cloudNode, cloudTp, status, link_name, time), 0);
-            }, (err) => {
-                console.log(err);
-            });
-    }
 
-    //Add external cloud
-    outCloud(imgmap) {
-        let _this = this,
-            width;
-        if (_this.tpoption.width > 800) {
-            width = _this.tpoption.width;
-        } else {
-            width = 800;
+        function dragstart(d) {
+            d3.select(this).classed("fixed", d.fixed = true);
+            thisNg.eventDispatcher.dispatch(new AppEvent(AppEventType.UserNodeDrag, d));
         }
-        let svg = d3.select('#content-svg');
-        svg.append('g').attr('class', 'out').attr('id', 'out').style({ 'display': 'block' }).attr('transform', 'translate(' + (width - 200) + ',0)');
-        let out = d3.select('#out');
-        out.append('image').style('width', '200').style('height', '118').attr('xlink:href', imgmap['3']);
-        out.append('text').text('Partner Network')
-            .style('transform', 'translate(0,0)')
-            .style('font-size', '16')
-            .style('font-weight', 'bold')
-            .attr('dx', '40')
-            .attr('dy', '70')
-            .style('fill', '#fff');
-    }
+        function dragend(d) {
 
-    //Add external cloud connection
-    cloudLine(networkVal1, selectedNode1, selecteTpName1, cloudUrl, cloudNetWork, cloudNode, cloudTp, status, link_name, time) {
-        let lines_json = {};
-        let _this = this,
-            width;
-        if (_this.tpoption.width > 800) {
-            width = _this.tpoption.width;
-        } else {
-            width = 800;
         }
-        for (let i = 0; i < $(".node").length; i++) {
-            if ($('.node').eq(i).find('text').html() == networkVal1) {
-                //Get the x, y coordinates of the second level
-                let translates = $('.node').eq(i).css('transform');
-                lines_json['x1'] = parseFloat(translates.substring(7).split(',')[4]);
-                lines_json['y1'] = parseFloat(translates.substring(7).split(',')[5]);
-                lines_json['x2'] = width - 100;
-                lines_json['y2'] = 100;
+
+        function color (d){
+            const scale = d3.scaleOrdinal(d3.schemeCategory10);
+            switch(d.group){
+                case "pnf":
+                    return  scale(1);
+                case "tp":
+                    return  scale(2);
+                default:
+                    return  scale(9);
             }
         }
-        let x1 = lines_json['x1'];
-        let y1 = lines_json['y1'];
-        let x2 = lines_json['x2'];
-        let y2 = lines_json['y2'];
-        let color = '#14bb58';
-        if (status == 'up') {
-            color = '#14bb58';
-        } else {
-            color = 'red';
-        }
-        let line = '<line class=\'line cloudline line-click\' stroke=\'' + color + '\' stroke-width=\'2\' style=\'cursor:pointer\'></line>';
-        let svg = d3.select('#graph');
-        $('.cloudline').remove();
-        $('#graph').prepend(line);
-        $('.cloudline').attr({
-            x1: x1 + 100,
-            y1: y1 + 10,
-            x2: x2,
-            y2: y2,
-            'data-tp1': selecteTpName1,
-            'data-tp2': cloudTp,
-            'data-node1': selectedNode1,
-            'data-node2': cloudNode,
-            'data-network': networkVal1,
-            'data-cloudnetwork': cloudNetWork,
-            'data-url': cloudUrl,
-            'data-aaiid': time,
-            'data-link': link_name
-        });
-        svg.html(svg.html());
-        this.getExtAAIIdVersion(time);
     }
 
-    //Create an external cloud, call the following 5 interfaces when connecting:createCloudNetwork,createPnfs,createCloudTp,createCloudLinks,createCloudUrls
-    createCloudNetwork(time) {
-        let _thiss = this;
-        let params = {
-            '-xmlns': 'http://org.onap.aai.inventory/v14',
-            'in-maint': 'false',
-            "network-id": this.cloudNetwork,
-            "provider-id": "",
-            "client-id": "",
-            "te-topo-id": "",
-            "relationship-list": {
-                "relationship": [{
-                    "related-to": "ext-aai-network",
-                    'related-link': '/aai/v14/network/ext-aai-networks/ext-aai-network/' + time
-                }]
-            }
-        };
+    choseConnectivity(item) {
+        if (this.connectivitySelected !== item) this.connectivitySelected = item;
+           this.drawService(this.getSvcTree());
+    }
 
-        //Do some asynchronous operations
-        _thiss.myhttp.createNetwrok(params)
-            .subscribe((data) => {
-                if (data["status"] == "SUCCESS") {
-                    _thiss.createPnfs(time)
-                }
-            }, (err) => {
-                console.log(err);
-            });
+    getSvcTree(): Array<object> {
+            let tree = []
+            let rel = this.connectivitySelected["relationship-list"]["relationship"] || null;
+            if (rel){
+                   tree = rel.filter(rl => rl["related-to"] === "uni")
+                        .map(obj => {
+                               let rObj ={};
+                               rObj["id"] = obj["relationship-data"][0]["relationship-value"],
+                               rObj["type"] = "leaf";
+                               return rObj;
+                        })
+            }
+            return tree;
+    }
 
+    getNodes(ptMapping: Array<object>) : Array<object>{
+        let nodes = [];
+        for (let pnf of ptMapping){
+            if (pnf["layer"] === 2){
+                continue;
+            }
+            let name = pnf["pnfName"];
+            let newNode = {
+                "id" : name,
+                "group": "pnf",
+                "radius" : 2,
+                "layer" : pnf["layer"] === 2? "Eth" : "Otn"
+            }
+            nodes.push(newNode);
+        }
+        return nodes;
     }
 
-    createPnfs(time) {
-        let _thiss = this;
-        let params = {
-            "-xmlns": "http://org.onap.aai.inventory/v14",
-            "pnf-name": this.cloudNode,
-            "pnf-id": this.cloudNode,
-            "in-maint": "true",
-            "relationship-list": {
-                "relationship": [
-                    {
-                        "related-to": "ext-aai-network",
-                        "relationship-label": "org.onap.relationships.inventory.BelongsTo",
-                        "related-link": "/aai/v14/network/ext-aai-networks/ext-aai-network/" + time,
-                        "relationship-data": {
-                            "relationship-key": "ext-aai-network.aai-id",
-                            "relationship-value": time
+    getLinks(logicalLinks: Array<object>, ptMapping: Array<object>) : Array<object> {
+        let links = [];
+        for (let ll of logicalLinks){
+            let lkName:string = ll["link-name"];
+            let topoIdIdx:number = lkName.lastIndexOf("topologyId-");
+            if (topoIdIdx !== -1 && lkName.charAt(topoIdIdx + 11) === '2'){
+                //Ignore
+                continue;
+            } else if (typeof ll["relationship-list"] === 'undefined' ||
+                           typeof ll["relationship-list"]["relationship"] === 'undefined'){
+                continue;
+            }
+            //pnf to pnf
+            let endpoints = [];
+            for (let pi of ll["relationship-list"]["relationship"]) {
+                if (pi["related-to"] === "p-interface"){
+                    for (let rd of pi["relationship-data"]){
+                        if (rd["relationship-key"] === "pnf.pnf-name"){
+                            endpoints.push(rd["relationship-value"]);
                         }
-                    },
-                    {
-                        "related-to": "network-resource",
-                        "relationship-label": "tosca.relationships.network.LinksTo",
-                        "related-link": "/aai/v14/network/network-resources/network-resource/" + this.cloudNetwork
                     }
-                ]
-            }
-        };
-
-        //Do some asynchronous operations
-        _thiss.myhttp.createPnf(params)
-            .subscribe((data) => {
-                if (data["status"] == "SUCCESS") {
-                    _thiss.createCloudTp(time)
                 }
-            }, (err) => {
-                console.log(err);
-            });
-    }
-
-    createCloudTp(time) {
-        let _thiss = this;
-        let params = {
-            "-xmlns": "http://org.onap.aai.inventory/v14",
-            "interface-name": this.cloudTp,
-            "speed-value": "1000000",
-            "in-maint": "true",
-            "network-ref": "",
-            "transparent": "true",
-            "operational-status": "up"
-        };
-
-        let cloudNodeName = this.cloudNode;
-        //Do some asynchronous operations
-        _thiss.myhttp.createTp(params, cloudNodeName)
-            .subscribe((data) => {
-                if (data["status"] == "SUCCESS") {
-                    _thiss.createCloudLinks(time)
+            }
+            if (endpoints.length === 2){
+                let newlk = {
+                    "source": endpoints[0],
+                    "target": endpoints[1],
+                    "type" : 1
                 }
-            }, (err) => {
-                console.log(err);
-            });
+                links.push(newlk);
+            }
+        }
+        return links;
     }
 
-    createCloudLinks(time) {
-        let _thiss = this;
-        let params = {
-            "-xmlns": "http://org.onap.aai.inventory/v14",
-            "link-name": this.linkName,
-            "in-maint": "false",
-            "link-type": "cross-link",
-            "speed-value": "",
-            "operational-status": "up",
-            "relationship-list": {
-                "relationship": [
-                    {
-                        "related-to": "p-interface",
-                        "relationship-label": "tosca.relationships.network.LinksTo",
-                        "related-link": "/aai/v14/network/pnfs/pnf/" + this.selectedNode1 + "/p-interfaces/p-interface/" + this.selecteTpName1,
-                        "relationship-data": [
-                            {
-                                "relationship-key": "pnf.pnf-name",
-                                "relationship-value": this.selectedNode1
-                            },
-                            {
-                                "relationship-key": "p-interface.interface-name",
-                                "relationship-value": this.selecteTpName1
-                            }
-                        ],
-                        "related-to-property": [{
-                            "property-key": "p-interface.prov-status"
-                        }]
-                    },
-                    {
-                        "related-to": "p-interface",
-                        "relationship-label": "tosca.relationships.network.LinksTo",
-                        "related-link": "/aai/v14/network/pnfs/pnf/" + this.cloudNode + "/p-interfaces/p-interface/" + this.cloudTp,
-                        "relationship-data": [
-                            {
-                                "relationship-key": "pnf.pnf-name",
-                                "relationship-value": this.cloudNode
-                            },
-                            {
-                                "relationship-key": "p-interface.interface-name",
-                                "relationship-value": this.cloudTp
-                            }
-                        ],
-                        "related-to-property": [{
-                            "property-key": "p-interface.prov-status"
-                        }]
-                    },
-                    {
-                        "related-to": "ext-aai-network",
-                        "relationship-label": "org.onap.relationships.inventory.BelongsTo",
-                        "related-link": "/aai/v14/network/ext-aai-networks/ext-aai-network/" + time,
-                        "relationship-data": [
-                            {
-                                "relationship-key": "ext-aai-network.aai-id",
-                                "relationship-value": time
-                            }
-                        ]
+    getPnfTpMapping(logicalLinks: Array<object>) {
+        let pnfs = [];
+        let pnfVisited = {};
+        let pnfIndex: number = 0;
+        for (let ll of logicalLinks){
+            let lkName:string = ll["link-name"];
+            let topoIdIdx:number = lkName.lastIndexOf("topologyId-");
+            if (topoIdIdx !== -1 && lkName.charAt(topoIdIdx + 11) === '2'){
+                //Ethernet layer logical-link
+                let lastDashIdx:number = lkName.lastIndexOf("-");
+                let pnfName: string = lkName.replace("linkId", "nodeId").substr(0, lastDashIdx);
+                let uniName: string = lkName.substr( lastDashIdx+1);
+
+                if (pnfVisited[pnfName]){
+                    let idx: number = parseInt(pnfVisited[pnfName].substr(1));
+                    pnfs[idx].tps[uniName] = true;
+                } else {
+                    pnfVisited[pnfName] = '#' + pnfIndex;
+                    let newPnf = {
+                        "pnfName" : pnfName,
+                        "tps" : {
+                        },
+                        "layer" :2
                     }
-                ]
-            }
-        };
+                    newPnf.tps[uniName] = true;
+                    pnfs.push(newPnf);
+                    pnfIndex++;
 
-        //Do some asynchronous operations
-        _thiss.myhttp.createCloudLink(params)
-            .subscribe((data) => {
-                // resolve(data['status']);
-                if (data["status"] == "SUCCESS") {
-                    _thiss.queryOutCloudLink(time);
                 }
-            }, (err) => {
-                console.log(err);
-            });
-    }
-
-    createCloudUrls(time) {
-        let _thiss = this;
-        let params = {
-            '-xmlns': 'http://org.onap.aai.inventory/v14',
-            'aai-id': time,
-            'esr-system-info': {
-                'esr-system-info-id': 'example-esr-system-info-id-val-0',
-                'service-url': this.cloudUrl,
-                'user-name': 'demo',
-                'password': 'demo123456!',
-                'system-type': 'ONAP'
+                continue;
+            } else if (ll["relationship-list"] === undefined ||
+                    ll["relationship-list"]["relationship"].length === 0 ){
+                continue;
             }
-        };
-        _thiss.myhttp.createCloudUrl(params)
-            .subscribe((data) => {
-                if (data['status'] == 'SUCCESS') {
-                    _thiss.createCloudNetwork(time);
-                }
-            }, (err) => {
-                console.log(err);
-            });
-    }
+            for (let pi of ll["relationship-list"]["relationship"]) {
+                if (pi["related-to"] === "p-interface"){
+                    let pnfName:string;
+                    let tpName:string;
+                    for (let rd of pi["relationship-data"]){
+                        if (rd["relationship-key"] === "pnf.pnf-name"){
+                            pnfName = rd["relationship-value"];
+                        } else if (rd["relationship-key"] === "p-interface.interface-name"){
+                            tpName = rd["relationship-value"];
+                        }
+                    }
+                    if (pnfVisited[pnfName]){
+                        let idx: number = parseInt(pnfVisited[pnfName].substr(1));
+                        pnfs[idx].tps[tpName] = true;
+                    } else {
+                        pnfVisited[pnfName] = '#' + pnfIndex;
+                        let newPnf = {
+                            "pnfName" : pnfName,
+                            "tps" : {
+                            },
+                            "layer" : 1
+                        }
+                        newPnf.tps[tpName] = true;
+                        pnfs.push(newPnf);
+                        pnfIndex++;
 
-    //Local cloud TP port Delete connection Call interface deleteLink
-    delLink(): void {
-        let deltp1 = this.delTp1,
-            deltp2 = this.delTp2,
-            version = this.delVersion,
-            dellinkname = this.delLinkname,
-            delLinkIndex = this.delLinkIndex;
-        let params = {
-            'logical-link': dellinkname,
-            'resource-version': version,
-        };
-        this.myhttp.deleteLink(params)
-            .subscribe((data) => {
-                if (data['status'] == 'SUCCESS') {
-                    this.delLine(deltp1, deltp2);
-                    delLinkIndex.remove();
+                    }
                 }
-            }, (err) => {
-                console.log(err);
-                console.log('Deleting a connection interface call failed');
-            });
-    }
-
-    delLine(val1, val2) {
-        this.delBoxisVisible = false;
-        for (let i = 0; i < $(".node").length; i++) {
-            if ($('.node').eq(i).find('text').html() == val1) {
-                $('.node').eq(i).hide();
-            }
-            if ($('.node').eq(i).find('text').html() == val2) {
-                $('.node').eq(i).hide();
             }
         }
+        return pnfs;
     }
-
-
-    //External cloud Delete connection Call interface deleteCloudLink
-    delCloudLink(): void {
-        let deltp1 = this.delTp1,
-            deltp2 = this.delTp2,
-            version = this.delVersion,
-            aaiId = this.aaiId;
-        let params = {
-            "aaiId": aaiId,
-            "version": version,
-        };
-        this.myhttp.deleteCloudLink(params)
-            .subscribe((data) => {
-                if (data['status'] == 'SUCCESS') {
-                    this.delLine(deltp1, deltp2);
-                    $('.cloudline').remove();
-                    $('#out').remove();
-                }
-            }, (err) => {
-                console.log(err);
-                console.log('Deleting a connection interface call failed');
-            });
-    }
-
 }
index fc02bb7..f408608 100644 (file)
   "i18nTextDefine_PartnerNetwork": "伙伴网络",
   "i18nTextDefine_HostUrl": "主机网址",
   "i18nTextDefine_deleteLink": "删除链接",
+  "i18nTextDefine_Connectivty": "L3业务实例",
 
   "sotn-component": "--:",
   "i18nTextDefine_subscriptionType": "订购类型",
index 10218f4..10fd214 100644 (file)
   "i18nTextDefine_PartnerNetwork": "Partner Network",
   "i18nTextDefine_HostUrl": "Host Url",
   "i18nTextDefine_DeleteLink": "Delete Link",
+  "i18nTextDefine_Connectivity": "Connectivity",
 
   "sotn-component": "--:",
   "i18nTextDefine_subscriptionType": "Service Type",