From 816afc4dc733692bd0a20b08ea730ba5e775c555 Mon Sep 17 00:00:00 2001 From: Nikolaus Krismer <nikolaus.krismer@uibk.ac.at> Date: Tue, 13 Jan 2015 15:15:17 +0100 Subject: [PATCH] added vm configuration (from project isochrone) --- .gitignore | 5 + Vagrantfile | 63 + bootstrap.sh | 1016 +++++ build.gradle | 150 + conf/geoserver_setup_neo4j_ds.gs | 5 + conf/geoserver_setup_neo4j_ft.gs | 3 + conf/geoserver_setup_neo4j_ft_bz.gs | 5 + conf/geoserver_setup_neo4j_ft_ibk.gs | 5 + conf/geoserver_setup_neo4j_ft_it.gs | 5 + conf/geoserver_setup_neo4j_ft_sf.gs | 5 + conf/geoserver_setup_neo4j_ft_st.gs | 5 + conf/geoserver_setup_postgis_ds.gs | 5 + conf/geoserver_setup_postgis_ft.gs | 3 + conf/geoserver_setup_postgis_ft_bz.gs | 6 + conf/geoserver_setup_postgis_ft_ibk.gs | 6 + conf/geoserver_setup_postgis_ft_it.gs | 6 + conf/geoserver_setup_postgis_ft_sf.gs | 6 + conf/geoserver_setup_postgis_ft_st.gs | 6 + conf/geoserver_setup_styles.gs | 7 + conf/geoserver_setup_ws.gs | 6 + conf/geoserver_style_edge.sld | 32 + conf/geoserver_style_edgeexpiration.sld | 31 + conf/geoserver_style_isocoverage.sld | 29 + conf/geoserver_style_nodeexpiration.sld | 107 + conf/geoserver_style_stations.sld | 115 + conf/maven-settings.xml | 4 + conf/pg_hba.conf | 6 + conf/pg_procedures.sql | 25 + conf/phpPgAdmin.conf | 11 + conf/poly_bz.poly | 14 + conf/poly_ibk.poly | 16 + conf/poly_it.poly | 149 + conf/poly_sf.poly | 509 +++ conf/poly_st.poly | 795 ++++ conf/srid_82344_insert.sql | 9 + conf/srid_82344_proj4.txt | 11 + conf/srid_82344_wkt.txt | 17 + conf/tomcat-users.xml | 12 + conf/tomcat_startscript.sh | 56 + conf/tomcat_web.xml | 4622 ++++++++++++++++++++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 51018 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 + gradlew.bat | 90 + img/bus.png | Bin 0 -> 3707 bytes img/car.png | Bin 0 -> 847 bytes img/ferry.png | Bin 0 -> 3707 bytes img/tram.png | Bin 0 -> 3707 bytes settings.gradle | 1 + 49 files changed, 8149 insertions(+) create mode 100644 .gitignore create mode 100644 Vagrantfile create mode 100644 bootstrap.sh create mode 100644 build.gradle create mode 100644 conf/geoserver_setup_neo4j_ds.gs create mode 100644 conf/geoserver_setup_neo4j_ft.gs create mode 100644 conf/geoserver_setup_neo4j_ft_bz.gs create mode 100644 conf/geoserver_setup_neo4j_ft_ibk.gs create mode 100644 conf/geoserver_setup_neo4j_ft_it.gs create mode 100644 conf/geoserver_setup_neo4j_ft_sf.gs create mode 100644 conf/geoserver_setup_neo4j_ft_st.gs create mode 100644 conf/geoserver_setup_postgis_ds.gs create mode 100644 conf/geoserver_setup_postgis_ft.gs create mode 100644 conf/geoserver_setup_postgis_ft_bz.gs create mode 100644 conf/geoserver_setup_postgis_ft_ibk.gs create mode 100644 conf/geoserver_setup_postgis_ft_it.gs create mode 100644 conf/geoserver_setup_postgis_ft_sf.gs create mode 100644 conf/geoserver_setup_postgis_ft_st.gs create mode 100644 conf/geoserver_setup_styles.gs create mode 100644 conf/geoserver_setup_ws.gs create mode 100644 conf/geoserver_style_edge.sld create mode 100644 conf/geoserver_style_edgeexpiration.sld create mode 100644 conf/geoserver_style_isocoverage.sld create mode 100644 conf/geoserver_style_nodeexpiration.sld create mode 100644 conf/geoserver_style_stations.sld create mode 100644 conf/maven-settings.xml create mode 100644 conf/pg_hba.conf create mode 100644 conf/pg_procedures.sql create mode 100644 conf/phpPgAdmin.conf create mode 100644 conf/poly_bz.poly create mode 100644 conf/poly_ibk.poly create mode 100644 conf/poly_it.poly create mode 100644 conf/poly_sf.poly create mode 100644 conf/poly_st.poly create mode 100644 conf/srid_82344_insert.sql create mode 100644 conf/srid_82344_proj4.txt create mode 100644 conf/srid_82344_wkt.txt create mode 100644 conf/tomcat-users.xml create mode 100644 conf/tomcat_startscript.sh create mode 100644 conf/tomcat_web.xml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100755 img/bus.png create mode 100755 img/car.png create mode 100755 img/ferry.png create mode 100755 img/tram.png create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f5eee0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/.classpath +/.gradle +/.project +/.settings +/.vagrant \ No newline at end of file diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..109b256 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,63 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +REQUIRED_PLUGINS = %w(vagrant-cachier vagrant-vbguest) +exit unless REQUIRED_PLUGINS.all? do |plugin| + Vagrant.has_plugin?(plugin) || ( + puts "The #{plugin} plugin is required. Please install it with:" + puts "$ vagrant plugin install #{plugin}" + false + ) +end + +# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! +VAGRANTFILE_API_VERSION = "2" +HOSTNAME=`hostname -s` +isLocalMode=true + +if HOSTNAME.strip.eql? "dbis-w65107" +# puts "Server mode" + isLocalMode=false +else +# puts "Local mode" + isLocalMode=true +end + +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| + config.vm.boot_timeout = 600 + + # Hardware configuration + # WARNING: Be VERY careful with this settings!!! + # -> giving the client more cores can SLOW DOWN the VM (if there is not enough workload on the guest, two less cores on the host...) + config.vm.provider "virtualbox" do |v| + v.name = (isLocalMode ? "isochrone-local" : "isochrone") + v.gui = false + v.cpus = 1 + v.memory = 2048 + v.customize ["modifyvm", :id, "--cpuexecutioncap", "100"] + v.customize ["modifyvm", :id, "--ostype", "RedHat_64"] + end + + # Enable vagrant-cachier plugin + config.cache.enable :yum + + # Information about the box itself (name from vagrantcloud) + config.vm.box = "jayunit100/centos7" + + # Setup of shared folders + config.vm.synced_folder "conf", "/setup/conf" + config.vm.synced_folder "img", "/setup/img" + + # Setup environment on startup (done using a shell script) + config.vm.provision "shell", path: "bootstrap.sh", args: ["niko", "secretPhdPassword#2014!", (isLocalMode ? "true" : "false")] + + # Network configuration + config.vm.network :forwarded_port, guest: 5432, host: 5432, auto_correct: true, id: "postgresql" + config.vm.network :forwarded_port, guest: 7474, host: 7474, auto_correct: true, id: "neo4j" + config.vm.network :forwarded_port, guest: 80, host: 8000, auto_correct: true, id: "httpd" + unless isLocalMode + config.vm.network :forwarded_port, guest: 8080, host: 8080, auto_correct: true, id: "tomcat" + end +# config.vm.network :private_network, :ip => '192.168.4.50' +# config.vm.network :public_network +end diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100644 index 0000000..2d07c2b --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,1016 @@ +#! /bin/bash +############################# +# This bootstrap script sets up some build tools and the installs the packages +# - geoserver +# - httpd +# - neo4j +# - neo4j-spatial +# - postgresql +# - postgis +# - pgRouting +# - osmosis +# - osm2pgrouting +# into a centos6 (32bit, 64bit) or centos7 (64bit only) environment +# (fedora 20 might also work - in 32bit or 64bit versions - but is untested) +# +# It can be used in the context of a Vagrantfile to configure a vagrant box and all +# the installations can be configured using global variables (some packages are only +# installed if their installed flag is set to "true") +# +# Some data (from the road network of innsbruck) is also downloaded (from osm) and +# imported into the installed databases (neo4j and postgresql) +# After various installations the installed services are started as well +############################ + +if [ -f "/var/vagrant_provision" ]; then + exit 0 +fi + +if [ "$EUID" -ne "0" ]; then + echo '- The bootstrap script must be run as root!' + exit 1 +fi + +############################ +# Variable definitions # +############################ + +IMPORT_DATA_OSM=false +IMPORT_DATA_OSM_CACHED=false +IMPORT_DATA_SQL=true +IMPORT_SCHEDULES=true +INSTALL_GEOSERVER=false +INSTALL_HTTPD=true +INSTALL_ISOCHRONE_LOCAL=false # installs isochrone from vagrant start directory (eclipse project) +INSTALL_ISOCHRONE_RELEASE=true # installs latest isochrone release from nexus repository +INSTALL_ISOCHRONE_SNAPSHOT=true # installs latest isochrone snapshot from nexus repository +INSTALL_NEO4J=false +INSTALL_NEO4J_SPATIAL=false +INSTALL_PGROUTING=false +INSTALL_POSTGIS=true +INSTALL_POSTGRES=true +INSTALL_POSTGRES_ADMIN=true +INSTALL_PROJECT_PSIPROBE=true + +############################ +# Ext. argument handling # +############################ + +IS_LOCAL_TEST_DEPLOY=false # will prevent install of projects if set to true +PG_DB_NAME="isochrone" +PG_DB_USER="@db_username@" +PG_DB_PASSWORD="@db_password@" + +if [ ${PG_DB_USER:0:1} == "@" ]; then + PG_DB_USER=$1 +fi +if [ ${PG_DB_USER:0:1} == "@" ]; then + echo '- No (or invalid) database user supplied!' + exit 1 +fi + +if [ ${PG_DB_PASSWORD:0:1} == "@" ]; then + PG_DB_PASSWORD=$2 +fi +if [ ${PG_DB_PASSWORD:0:1} == "@" ]; then + echo '- No (or invalid) database password supplied!' + exit 1 +fi + +if [ -n "$3" ]; then + if [ "$3" = "true" ]; then + IS_LOCAL_TEST_DEPLOY=true + fi +fi + +############################ +# General configuration # +############################ + +CACHE_DIR_LOCAL="/tmp/vagrant-cache" +CACHE_DIR_REMOTE="http://dbis-informatik.uibk.ac.at/static/ma/niko/isochrone" +DEPLOY_DIR="/opt" +DOWNLOAD_DIR="$CACHE_DIR_LOCAL/wget" +SHARED_CONF_DIR="/setup/conf" +SHARED_IMG_DIR="/setup/img" +WORKING_DIR=`pwd` + +############################ +# Components configuration # +############################ + +#Armadillo from epel is too new for postgis (version 4 instead of 3), so use hard-coded file here +ARMADILLO_FILE="armadillo-3.800.2-1.el6.x86_64.rpm" +ARMADILLO_URL="$CACHE_DIR_REMOTE/armadillo-3.800.2-1.el6.x86_64.rpm" +GEOSERVER_VERSION="2.6.1" +GEOSERVER_FILE="geoserver-$GEOSERVER_VERSION-war.zip" +GEOSERVER_DOWNLOAD_URL="http://sourceforge.net/projects/geoserver/files/GeoServer/$GEOSERVER_VERSION/$GEOSERVER_FILE" +GEOSERVER_SHELL_VERSION="0.2-SNAPSHOT" +GEOSERVER_SHELL_FILE="gs-shell-$GEOSERVER_SHELL_VERSION-app.zip" +JAVA_VERSION="8u25" +JAVA_FILE_32="jdk-$JAVA_VERSION-linux-i586.rpm" +JAVA_FILE_64="jdk-$JAVA_VERSION-linux-x64.rpm" +JAVA_CRYPTO_FILE="jce_policy-8.zip" +MAVEN_VERSION="3.2.2" +MAVEN_FILE="apache-maven-$MAVEN_VERSION-bin.zip" +MAVEN_DOWNLOAD_URL="http://tweedo.com/mirror/apache/maven/maven-3/$MAVEN_VERSION/binaries/$MAVEN_FILE" +NEO4J_DB_USER="neo4j" +NEO4J_VERSION="2.1.6" +NEO4J_FILE="neo4j-community-$NEO4J_VERSION-unix.tar.gz" +NEO4J_DOWNLOAD_URL="http://dist.neo4j.org/$NEO4J_FILE" +NEO4J_SERVICE_NAME="neo4j-service" +NEO4J_SPATIAL_GIT_URL="https://github.com/neo4j/spatial.git" +NEO4J_SPATIAL_VERSION="0.13-neo4j-2.1" +NEO4J_SPATIAL_PLUGIN_DOWNLOAD_URL="http://dist.neo4j.org.s3.amazonaws.com/spatial/neo4j-spatial-$NEO4J_SPATIAL_VERSION-server-plugin.zip" +NEXUS_ARTIFACT_NAME="isochrone-web" +NEXUS_BASE_URL="http://138.232.66.78/nexus" +NEXUS_PUBLIC_REPO="isochrone" +#NEXUS_PUBLIC_REPO="public" +NEXUS_RELEASE_ISOCHRONE="$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME&v=RELEASE&p=war" +#NEXUS_RELEASE_ISOCHRONE="$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME&v=0.2.2&p=war" +NEXUS_SNAPSHOT_ISOCHRONE="$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME&v=LATEST&p=war" +NEXUS_YUM_REPO="http://www.krismer.de/files/krismer.repo" +#OSM_BBOX_BZ="top=46.5200 left=11.3000 bottom=46.4500 right=11.3873" +#OSM_BBOX_IBK="top=47.3592 left=11.3020 bottom=47.2108 right=11.4554" +OSM_BBOX_BZ="${SHARED_CONF_DIR}/poly_bz.poly" +OSM_BBOX_IBK="${SHARED_CONF_DIR}/poly_ibk.poly" +OSM_BBOX_IT="${SHARED_CONF_DIR}/poly_it.poly" +OSM_BBOX_SF="${SHARED_CONF_DIR}/poly_sf.poly" +OSM_BBOX_ST="${SHARED_CONF_DIR}/poly_st.poly" +OSM_DOWNLOAD_MIRROR="http://download.geofabrik.de" +OSM_FILE_AUSTRIA="europe/austria-140301.osm.pbf" +OSM_FILE_ITALY="europe/italy-140301.osm.pbf" +OSM_FILE_CALIFORNIA="north-america/us/california-140301.osm.pbf" +OSM_FILE_BZ_FILTERED="bozen-140301-filtered.osm" +OSM_FILE_IBK_FILTERED="innsbruck-140301-filtered.osm" +OSM_FILE_IT_FILTERED="italy-140301-filtered.osm" +OSM_FILE_SF_FILTERED="sanfrancisco-140301-filtered.osm" +OSM_FILE_ST_FILTERED="southtyrol-140301-filtered.osm" +OSM_KEYS="aerialway,highway,public_transport,railway,route" +OSM2PGROUTING_GIT_URL="https://github.com/pgRouting/osm2pgrouting.git" +OSM2PGROUTING_VERSION="v2.0.0" +OSM2PGROUTING_MAPPING_CONF="$DEPLOY_DIR/osm2pgrouting/mapconfig.xml" +OSMOSIS_VERSION="0.43.1" +OSMOSIS_FILE="osmosis-$OSMOSIS_VERSION.zip" +OSMOSIS_DOWNLOAD_URL="http://bretth.dev.openstreetmap.org/osmosis-build/$OSMOSIS_FILE" +POSTGIS_GIT_URL="https://github.com/postgis/postgis.git" +POSTGIS_VERSION="auto" # activate to install from repository +#POSTGIS_VERSION="2.1.3" # activate to install from source +POSTGRESQL_DATA_DIR="/var/lib/pgsql/data" +POSTGRESQL_SERVICE_NAME="postgresql" +POSTGRESQL_SHORT_VERSION="" +POSTGRESQL_VERSION="" +PGROUTING_GIT_URL="https://github.com/pgRouting/pgrouting.git" +PGROUTING_VERSION="auto" # activate to install from repository +#PGROUTING_VERSION="2.0.0" # activate to install from source +REPO_ELGIS="none" +REPO_EPEL="none" +REPO_POSTGRESQL="" # will be set later (depending on architecture) +REPO_POSTGRESQL_32="auto" +REPO_POSTGRESQL_64="auto" +REPO_RPMFORGE="" # will be set later (depending on architecture) +REPO_RPMFORGE_32="http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm" +REPO_RPMFORGE_64="http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm" +REPO_RPMFORGE_CONFIG="/etc/yum.repos.d/rpmforge.repo" +SELINUX_CONFIG="/etc/selinux/config" +TABLE_PREFIX_BZ="bz_" +TABLE_PREFIX_IBK="ibk_" +TABLE_PREFIX_IT="it_" +TABLE_PREFIX_SF="sf_" +TABLE_PREFIX_ST="st_" +TEMPLATE_PSIPROBE_VERSION="2.3.3" +TEMPLATE_PSIPROBE_FILE="probe-$TEMPLATE_PSIPROBE_VERSION.zip" +TEMPLATE_PSIPROBE_DOWNLOAD_URL="https://psi-probe.googlecode.com/files/$TEMPLATE_PSIPROBE_FILE" +TEMPLATE_DIR_ISOCHRONE="/vagrant" +TOMCAT_VERSION="8.0.15" +TOMCAT_FILE="apache-tomcat-$TOMCAT_VERSION.tar.gz" +TOMCAT_DOWNLOAD_URL="http://tweedo.com/mirror/apache/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/$TOMCAT_FILE" +TOMCAT_MEMORY_OPTS="-Xmx2048m -Xms512m" +TOMCAT_NAME="tomcat" +TOMCAT_USER="tomcat" +TOMCAT_WEBAPP_DIR="$DEPLOY_DIR/$TOMCAT_NAME/webapps" +TOPOLOGY_TOLERANCE=0.0005 + +############################ +# OS check & configuration # +############################ + +IS_64_BIT=false +if [ "x86_64" == $(uname -m) ]; then + IS_64_BIT=true +fi + +DISTRI_FILE="/etc/redhat-release" +if [ ! -f "$DISTRI_FILE" ]; then + DISTRI_FILE="/etc/issue" +fi + +DISTRI_NAME=$(cat "$DISTRI_FILE" | head -n 1) +DISTRI_SUPPORTED=false +DISTRI_TYPE="Fedora 20" +DISTRI=$(printf "$DISTRI_NAME" | cut -d " " -f 1) +if [ "$DISTRI" == "CentOS" ]; then + POSTGRESQL_SHORT_VERSION="94" + POSTGRESQL_VERSION="9.4" + if printf "$DISTRI_NAME" | egrep -q " 6." ; then + DISTRI_TYPE="CentOS 6" + REPO_ELGIS="http://elgis.argeo.org/repos/6/elgis-release-6-6_0.noarch.rpm" + REPO_EPEL="http://mirror.vutbr.cz/epel/6/i386/epel-release-6-8.noarch.rpm" + REPO_POSTGRESQL_32="http://yum.postgresql.org/$POSTGRESQL_VERSION/redhat/rhel-6-i386/pgdg-centos$POSTGRESQL_SHORT_VERSION-$POSTGRESQL_VERSION-1.noarch.rpm" + REPO_POSTGRESQL_64="http://yum.postgresql.org/$POSTGRESQL_VERSION/redhat/rhel-6-x86_64/pgdg-centos$POSTGRESQL_SHORT_VERSION-$POSTGRESQL_VERSION-1.noarch.rpm" + DISTRI_SUPPORTED=true + elif printf "$DISTRI_NAME" | egrep -q " 7." ; then + DISTRI_TYPE="CentOS 7" + ARMADILLO_FILE="" + REPO_EPEL="http://mirror.vutbr.cz/epel/7/x86_64/e/epel-release-7-5.noarch.rpm" + REPO_POSTGRESQL_64="http://yum.postgresql.org/$POSTGRESQL_VERSION/redhat/rhel-7-x86_64/pgdg-centos$POSTGRESQL_SHORT_VERSION-$POSTGRESQL_VERSION-1.noarch.rpm" + REPO_RPMFORGE_64="http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm" + DISTRI_SUPPORTED=$IS_64_BIT + fi +elif [ "$DISTRI" == "Fedora"]; then + if echo $DISTRI_NAME | egrep -q " 20 (Heisenbug)" ; then + DISTRI_SUPPORTED=true + fi +fi + +if ! $DISTRI_SUPPORTED; then + echo "Unsupported OS. Only CentOS 6, CentOS 7 (64bit) and Fedora 20 are supported!" + exit 1; +fi + +############################ +# Calculated configuration # +############################ + +IMPORT_DATA=false +INSTALL_JAVA=false +INSTALL_MAVEN=false +INSTALL_TOMCAT=false + +if $IS_LOCAL_TEST_DEPLOY; then + # Some projects will never be installed when in local deploy mode (like latest release/snapshot from nexus) + INSTALL_PROJECT_PSIPROBE=false + INSTALL_ISOCHRONE_LOCAL=false + INSTALL_ISOCHRONE_RELEASE=false + INSTALL_ISOCHRONE_SNAPSHOT=false +fi +if $IMPORT_DATA_OSM || $IMPORT_DATA_OSM_CACHED || $IMPORT_DATA_SQL; then + IMPORT_DATA=true +fi +if $INSTALL_GEOSERVER || $INSTALL_ISOCHRONE_LOCAL || $INSTALL_ISOCHRONE_RELEASE || $INSTALL_ISOCHRONE_SNAPSHOT || $INSTALL_PROJECT_PSIPROBE; then + INSTALL_TOMCAT=true +fi +if $INSTALL_NEO4J_SPATIAL; then + INSTALL_MAVEN=$IMPORT_DATA_OSM || $IMPORT_DATA_OSM_CACHED +fi +if $INSTALL_TOMCAT || $INSTALL_GEOSERVER || $INSTALL_NEO4J || $INSTALL_NEO4J_SPATIAL || $IMPORT_DATA_OSM; then + INSTALL_JAVA=true +fi +if $INSTALL_PGROUTING; then + INSTALL_POSTGIS=true +fi +if $INSTALL_POSTGRES_ADMIN || $INSALL_POSTGIS; then + INSTALL_POSTGRES=true +fi + +if [ ! $POSTGRESQL_VERSION == "" ]; then + POSTGRESQL_DATA_DIR="/var/lib/pgsql/$POSTGRESQL_VERSION/data" + POSTGRESQL_SERVICE_NAME="postgresql-$POSTGRESQL_VERSION" +fi +POSTGRESQL_GLOB_CONF="$POSTGRESQL_DATA_DIR/postgresql.conf" +POSTGRESQL_HBA_CONF="$POSTGRESQL_DATA_DIR/pg_hba.conf" +POSTGRESQL_PKG_NAME="postgresql$POSTGRESQL_SHORT_VERSION" + +if $IS_64_BIT; then + REPO_POSTGRESQL="$REPO_POSTGRESQL_64" + REPO_RPMFORGE="$REPO_RPMFORGE_64" + JAVA_FILE="$JAVA_FILE_64" +else + REPO_POSTGRESQL="$REPO_POSTGRESQL_32" + REPO_RPMFORGE="$REPO_RPMFORGE_32" + JAVA_FILE="$JAVA_FILE_32" +fi + +############################ +# Function definitions # +############################ + +fn_download() +{ + local FILE="$1" + local URL="$2" + + if wget --no-check-certificate -q -O /dev/null "$URL"; then + wget --no-check-certificate -q -O "$FILE" "$URL" + fi +} + +# "wget -N" does not work with "-O" option... so we use a workaround here +fn_download_newer() +{ + local FILE="$1" + local URL="$2" + + if [ ! -f "$FILE" ]; then + if wget --no-check-certificate -q -O /dev/null "$URL"; then + wget --no-check-certificate -q -O "$FILE" "$URL" + fi + fi +} + +fn_import_data() +{ + local NAME="$1" + local OSM_FILE="$2" + local OSM_FILE_FILTERED="$3" + local BOUNDING="$4" + local SQL_EXPORT_FILE="$5" + local TABLE_PREFIX="$6" + + local VALID_OSM=false + local VALID_SQL=false + if $IMPORT_DATA_SQL && $INSTALL_POSTGIS && $IMPORT_SCHEDULES; then + if [ -n "$SQL_EXPORT_FILE" ]; then + VALID_SQL=true + fi + fi + if ( $INSTALL_PGROUTING || $INSTALL_NEO4J_SPATIAL ) && ( $IMPORT_DATA_OSM_CACHED || $IMPORT_DATA_OSM ); then + # osm data does not need to be downloaded (since it would not be imported afterwards) + VALID_OSM=true + fi + + echo "Importing data for region of $NAME" + if ! ( $VALID_SQL || $VALID_OSM ); then + echo " - skipping import" + return 1 + fi + + if $VALID_SQL; then + echo " - downloading sql export" + fn_download_newer $DOWNLOAD_DIR/$SQL_EXPORT_FILE $CACHE_DIR_REMOTE/$SQL_EXPORT_FILE + cp $DOWNLOAD_DIR/$SQL_EXPORT_FILE $DEPLOY_DIR/$SQL_EXPORT_FILE >> /dev/null 2>&1 + + echo " - importing sql export into postgis database" + gunzip -c $DEPLOY_DIR/$SQL_EXPORT_FILE | PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost "$PG_DB_NAME" >> "$WORKING_DIR/import_schedule_$NAME.log" 2>&1 + + echo " - getting table permissions" + tables=`PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';" "$PG_DB_NAME"` + + echo " - fixing table permissions" + for tbl in $tables ; do + PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "ALTER TABLE $tbl OWNER TO $PG_DB_USER" "$PG_DB_NAME"; + done + fi + + if ! $VALID_OSM; then + return 0 + fi + + if $IMPORT_DATA_OSM_CACHED; then + echo " - downloading cached OpenStreetMap file" + fn_download_newer $DOWNLOAD_DIR/$OSM_FILE_FILTERED $CACHE_DIR_REMOTE/$OSM_FILE_FILTERED + cp $DOWNLOAD_DIR/$OSM_FILE_FILTERED $DEPLOY_DIR/$OSM_FILE_FILTERED >> /dev/null 2>&1 + fi + + if [ ! -f $DEPLOY_DIR/$OSM_FILE_FILTERED ]; then + if $IMPORT_DATA_OSM; then + echo " - downloading OpenStreetMap file (no cached file found)" + OSM_FILENAME=$DOWNLOAD_DIR/${OSM_FILE##*/} + fn_download_newer $OSM_FILENAME $OSM_DOWNLOAD_MIRROR/$OSM_FILE + + echo " - filtering OpenStreetMap data" + if [[ "$BOUNDING" == *.poly ]]; then + $DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-polygon file="$BOUNDING" --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1 + else + $DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-box $BOUNDING --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1 + fi + else + echo " - problems with downloading cached osm file... this will most likely lead cause errors" + fi + fi + + if $INSTALL_PGROUTING; then + echo " - importing filtered OpenStreetMap data into pgRouting" + $DEPLOY_DIR/osm2pgrouting/build/osm2pgrouting -file "$DEPLOY_DIR/$OSM_FILE_FILTERED" -conf "$OSM2PGROUTING_MAPPING_CONF" -dbname $PG_DB_NAME -user $PG_DB_USER -passwd $PG_DB_PASSWORD -clean -prefixtables $TABLE_PREFIX >> "import_osm2pgrouting_$NAME.log" 2>&1 + + echo " - creating pgRouting topology" + PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "SELECT pgr_createTopology('${TABLE_PREFIX}ways', $TOPOLOGY_TOLERANCE, 'the_geom', 'gid');" >> "$WORKING_DIR/setup_database_$NAME.log" 2>&1 + fi + + if $INSTALL_NEO4J_SPATIAL; then + echo " - importing filtered OpenStreetMap data into neo4j-spatial" + cd $DEPLOY_DIR/neo4j-spatial + mvn exec:java -Dexec.mainClass=org.neo4j.gis.spatial.osm.OSMImporter -Dexec.args="$DEPLOY_DIR/neo4j/data/graph.db $DEPLOY_DIR/$OSM_FILE_FILTERED" >> $WORKING_DIR/import_osm2neo4j.log 2>&1 + cd $WORKING_DIR + fi + + return 0 +} + +fn_service_start() +{ + local SERVICE_NAME="$1" + + touch "service_start_$SERVICE_NAME.log" 2>&1 + if [ "$DISTRI_TYPE" == "CentOS 6" ]; then + service $SERVICE_NAME start >> "service_start_$SERVICE_NAME.log" 2>&1 + chkconfig $SERVICE_NAME on "service_start_$SERVICE_NAME.log" 2>&1 + else + systemctl start $SERVICE_NAME >> "service_start_$SERVICE_NAME.log" 2>&1 + systemctl enable $SERVICE_NAME >> "service_start_$SERVICE_NAME.log" 2>&1 + fi + + sleep 2 +} + +fn_service_stop() +{ + local SERVICE_NAME="$1" + + touch "service_stop_$SERVICE_NAME.log" 2>&1 + if [ "$DISTRI_TYPE" == "CentOS 6" ]; then + service $SERVICE_NAME stop >> "service_stop_$SERVICE_NAME.log" 2>&1 + chkconfig $SERVICE_NAME off "service_stop_$SERVICE_NAME.log" 2>&1 + else + systemctl stop $SERVICE_NAME >> "service_stop_$SERVICE_NAME.log" 2>&1 + systemctl disable $SERVICE_NAME >> "service_stop_$SERVICE_NAME.log" 2>&1 + fi + + sleep 2 +} + +START=$(date +%s) + +echo "" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Performing basic system preparations:" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + +############################ +# Basic preparations # +############################ + +cd $WORKING_DIR +mkdir -p $DOWNLOAD_DIR + +echo "Configuring timezone" +cp /usr/share/zoneinfo/Europe/Vienna /etc/localtime >> setup_timezone.log 2>&1 + +echo "Installing utils (gcc, git, ...)" +yum -y install gcc gcc-c++ git gzip iptables-services nano nmap sed tar unzip wget >> install_utils.log 2>&1 + +############################ +# Security preparations # +############################ + +echo "Stopping Firewall and SELinux" +if [ "$DISTRI_TYPE" == "CentOS 6" ]; then + fn_service_stop "iptables" + fn_service_stop "ip6tables" +else + fn_service_stop "firewalld" +fi + +if [ $(getenforce) == "Enforcing" ]; then + setenforce 0 >> stop_selinux.log 2>&1 +fi +sed -i 's/SELINUX=enabled/SELINUX=disabled/' $SELINUX_CONFIG +sed -i 's/SELINUX=enforcing/SELINUX=permissive/' $SELINUX_CONFIG + +############################ +# Repository preparations # +############################ + +if [ ! $REPO_ELGIS == "none" ]; then + # Postgresql 9.4 needs never version of gdal which is not part of epel yet (so we install elgis repo) + if [ $POSTGRESQL_SHORT_VERSION \> "93" ]; then + echo "Installing elgis repository" + fn_download $DOWNLOAD_DIR/elgis-repo.rpm $REPO_ELGIS + yum -y localinstall $DOWNLOAD_DIR/elgis-repo.rpm >> install_elgis_repo.log 2>&1 + echo " - enabled" + fi +fi + +if [ ! $REPO_EPEL == "none" ]; then + # Epel Repository is needed for dependencies (gdal!) of postgresql/postgis/pgRouting + echo "Installing epel repository" + fn_download $DOWNLOAD_DIR/epel-repo.rpm $REPO_EPEL + yum -y localinstall $DOWNLOAD_DIR/epel-repo.rpm >> install_epel_repo.log 2>&1 + echo " - enabled" +fi + +if $INSTALL_POSTGRES; then + if [ "$DISTRI" == "CentOS" ]; then + REPO_CONFIG="/etc/yum.repos.d/CentOS-Base.repo" + sed -i 's/\[base\]/\[base\]\nexclude=postgresql\*/' $REPO_CONFIG + sed -i 's/\[updates\]/\[updates\]\nexclude=postgresql\*/' $REPO_CONFIG + fi + + echo "Installing $POSTGRESQL_SERVICE_NAME repository" + fn_download $DOWNLOAD_DIR/postgresql-repo.rpm $REPO_POSTGRESQL + yum -y localinstall $DOWNLOAD_DIR/postgresql-repo.rpm >> install_postgresql_repo.log 2>&1 + echo " - enabled" +fi + +# RpmForge is deactivated by default and has to be explicitly activated when using yum +echo "Installing rpmForge repository" +fn_download_newer $DOWNLOAD_DIR/rpmforge-repo.rpm $REPO_RPMFORGE +yum -y localinstall $DOWNLOAD_DIR/rpmforge-repo.rpm >> install_rpmforge_repo.log 2>&1 +echo " - disabled" +sed -i 's/enabled = 1/enabled = 0/' $REPO_RPMFORGE_CONFIG + +############################ +# Starting boostrap # +############################ + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Bootstrapping the VM:" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo "Operating system $DISTRI_NAME" +echo " - osType: $DISTRI_TYPE" +if [ "$DISTRI_TYPE" == "Fedora 20" ]; then + echo " - using untested operating system!!" +fi +if $IS_LOCAL_TEST_DEPLOY; then echo "Starting in local test deploy mode"; fi +echo "Installing software:" +if $INSTALL_HTTPD; then echo " - apache webserver"; fi +if $INSTALL_MAVEN; then echo " - apache maven $MAVEN_VERSION"; fi +if $INSTALL_JAVA; then echo " - java $JAVA_VERSION"; fi +if $INSTALL_NEO4J; then echo " - neo4j $NEO4J_VERSION"; fi +if $INSTALL_NEO4J_SPATIAL; then echo " - neo4j-spatial $NEO4J_SPATIAL_VERSION"; fi +if $INSTALL_POSTGRES; then echo " - postgresql $POSTGRESQL_VERSION"; fi +if $INSTALL_POSTGIS; then + if [ "$POSTGIS_VERSION" == "auto" ]; then + echo " - postgis2" + else + echo " - postgis $POSTGIS_VERSION" + fi +fi +if $INSTALL_PGROUTING; then + if [ "$PGROUTING_VERSION" == "auto" ]; then + echo " - pgRouting" + else + echo " - pgRouting $PGROUTING_VERSION" + fi +fi +if $INSTALL_TOMCAT; then echo " - tomcat $TOMCAT_VERSION"; fi +if $INSTALL_GEOSERVER; then echo " - geoserver $GEOSERVER_VERSION"; fi +if $INSTALL_POSTGRES_ADMIN; then echo " - phpPgAdmin"; fi +if $IMPORT_DATA_OSM; then echo " - osmosis $OSMOSIS_VERSION"; fi +if $IMPORT_DATA_OSM_CACHED; then echo "Importing cached data from OSM (if possible)"; elif $IMPORT_DATA_OSM; then echo "Importing data from OSM"; fi +if $IMPORT_SCHEDULES; then echo "Importing schedules"; fi +if $INSTALL_ISOCHRONE_LOCAL; then echo "Importing project \"isochrone (local testing)\""; fi +if $INSTALL_ISOCHRONE_RELEASE; then echo "Importing project \"isochrone (release)\""; fi +if $INSTALL_ISOCHRONE_SNAPSHOT; then echo "Importing project \"isochrone (testing)\""; fi +if $INSTALL_PROJECT_PSIPROBE; then echo "Importing project \"psi-probe\""; fi +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Performing installations:" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + +echo "Installing cmake" +yum -y --enablerepo=rpmforge-extras install cmake >> install_cmake.log 2>&1 + +if $INSTALL_HTTPD; then + echo "Installing httpd server" + yum -y install httpd >> install_httpd.log 2>&1 +fi + +if $INSTALL_POSTGRES; then + echo "Installing $POSTGRESQL_SERVICE_NAME" + yum -y install $POSTGRESQL_PKG_NAME $POSTGRESQL_PKG_NAME-contrib $POSTGRESQL_PKG_NAME-server >> install_postgresql.log 2>&1 + + echo " - exporting postgresql options" + echo "export PostgreSQL_ROOT=/usr/pgsql-$POSTGRESQL_VERSION" >> /etc/profile.d/postgresql.sh + source /etc/profile.d/postgresql.sh +fi + +if $INSTALL_POSTGIS; then + if [ "$ARMADILLO_FILE" != "" ]; then + fn_download_newer $DOWNLOAD_DIR/$ARMADILLO_FILE "$ARMADILLO_URL" + yum -y localinstall $DOWNLOAD_DIR/$ARMADILLO_FILE >> install_armadillo.log 2>&1 + fi + + if [ "$POSTGIS_VERSION" == "auto" ]; then + echo "Installing postgis2 (from repository)" + yum -y install postgis2_$POSTGRESQL_SHORT_VERSION >> install_postgis.log 2>&1 + else + echo "Installing postgis dependencies" + yum -y install gdal-devel geos-devel json-c-devel libxml2-devel proj-devel >> install_postgis_deps.log 2>&1 + + echo "Installing postgis $POSTGIS_VERSION (from source)" + git clone -q "$POSTGIS_GIT_URL" $DEPLOY_DIR/postgis-$POSTGIS_VERSION + ln -sf $DEPLOY_DIR/postgis-$POSTGIS_VERSION $DEPLOY_DIR/postgis + cd $DEPLOY_DIR/postgis + git checkout -q $POSTGIS_VERSION >> /dev/null 2>&1 + ./configure >> $WORKING_DIR/install_postgis.log 2>&1 + make >> $WORKING_DIR/install_postgis.log 2>&1 + make install >> $WORKING_DIR/install_postgis.log 2>&1 + cd $WORKING_DIR + fi +fi + +if $INSTALL_POSTGRES_ADMIN; then + echo "Installing phpPgAdmin" + yum -y install phpPgAdmin >> install_phpPgAdmin.log 2>&1 +fi + +if $INSTALL_PGROUTING; then + if [ "$PGROUTING_VERSION" == "auto" ]; then + echo "Installing pgRouting (from repository)" + yum -y install pgrouting_$POSTGRESQL_SHORT_VERSION >> install_pgRouting.log 2>&1 + else + echo "Installing pgRouting dependencies" + yum -y install boost-devel $POSTGRESQL_PKG_NAME-devel $POSTGRESQL_PKG_NAME-libs postgis2_$POSTGRESQL_SHORT_VERSION-devel >> install_pgRouting_deps.log 2>&1 + +# echo "Installing CGAL 4.3" +# fn_download_newer $DOWNLOAD_DIR/CGAL-4.3.zip https://gforge.inria.fr/frs/download.php/32996/CGAL-4.3.zip +# cp $DOWNLOAD_DIR/CGAL-4.3.zip $DEPLOY_DIR/CGAL-4.3.zip +# unzip -o -d $DEPLOY_DIR $DEPLOY_DIR/CGAL-4.3.zip >> install_cgal.log 2>&1 +# cd $DEPLOY_DIR/CGAL-4.3 +# cmake . >> install_cgal.log 2>&1 +# make >> install_cgal.log 2>&1 +# make install >> install_cgal.log 2>&1 +# cd $WORKING_DIR + + echo "Installing pgRouting $PGROUTING_VERSION (from source)" + git clone -q "$PGROUTING_GIT_URL" $DEPLOY_DIR/pgRouting-$PGROUTING_VERSION + ln -sf $DEPLOY_DIR/pgRouting-$PGROUTING_VERSION $DEPLOY_DIR/pgRouting + cd $DEPLOY_DIR/pgRouting + git checkout -q pgrouting-$PGROUTING_VERSION >> /dev/null 2>&1 + mkdir build + cd build + cmake -DWITH_DD=OFF -DBoost_DIR:PATH=/usr/lib64/boost -DPOSTGRESQL_EXECUTABLE:FILEPATH="$PostgreSQL_ROOT"/bin/postgres -DPOSTGRESQL_PG_CONFIG:FILEPATH="$PostgreSQL_ROOT"/bin/pg_config .. >> $WORKING_DIR/install_pgRouting.log 2>&1 + make >> $WORKING_DIR/install_pgRouting.log 2>&1 + make install >> $WORKING_DIR/install_pgRouting.log 2>&1 + cd $WORKING_DIR + fi +fi + +if $INSTALL_JAVA; then + echo "Installing java (oracle jdk-$JAVA_VERSION)" + fn_download_newer $DOWNLOAD_DIR/$JAVA_FILE $CACHE_DIR_REMOTE/$JAVA_FILE + yum -y localinstall $DOWNLOAD_DIR/$JAVA_FILE >> install_java.log 2>&1 + ln -sf /usr/java/latest $DEPLOY_DIR/jdk >> setup_java.log 2>&1 + ln -sf /usr/java/latest/jre $DEPLOY_DIR/jre >> setup_java.log 2>&1 + + echo " - setting alternatives for java" + alternatives --install /usr/bin/java java $DEPLOY_DIR/jre/bin/java 200000 >> setup_java.log 2>&1 + alternatives --install /usr/bin/javaws javaws $DEPLOY_DIR/jre/bin/javaws 200000 >> setup_java.log 2>&1 + alternatives --set java $DEPLOY_DIR/jre/bin/java >> setup_java.log 2>&1 + alternatives --install /usr/bin/javac javac $DEPLOY_DIR/jdk/bin/javac 200000 >> setup_java.log 2>&1 + alternatives --install /usr/bin/jar jar $DEPLOY_DIR/jdk/bin/jar 200000 >> setup_java.log 2>&1 + + echo " - exporting java options" + echo "export JAVA_HOME=$DEPLOY_DIR/jre" >> /etc/profile.d/java.sh + echo "export PATH=\${JAVA_HOME}/bin:\${PATH}" >> /etc/profile.d/java.sh + source /etc/profile.d/java.sh + + echo " - installing strong cryptographie" + fn_download_newer $DOWNLOAD_DIR/$JAVA_CRYPTO_FILE $CACHE_DIR_REMOTE/$JAVA_CRYPTO_FILE + unzip -j -u $DOWNLOAD_DIR/$JAVA_CRYPTO_FILE -d $DEPLOY_DIR/jre/lib/security >> setup_java.log 2>&1 +fi + +if $INSTALL_TOMCAT; then + echo "Installing $TOMCAT_NAME $TOMCAT_VERSION servlet container" +# yum -y install $TOMCAT_NAME $TOMCAT_NAME-webapps $TOMCAT_NAME-admin-webapps >> install_tomcat.log 2>&1 +# ln -sf /usr/share/$TOMCAT_NAME $DEPLOY_DIR/$TOMCAT_NAME + + fn_download_newer $DOWNLOAD_DIR/$TOMCAT_FILE $TOMCAT_DOWNLOAD_URL + cp $DOWNLOAD_DIR/$TOMCAT_FILE $DEPLOY_DIR/$TOMCAT_FILE + tar -xvzf $DEPLOY_DIR/$TOMCAT_FILE -C $DEPLOY_DIR >> install_tomcat.log 2>&1 + rm -f $DEPLOY_DIR/$TOMCAT_FILE >> install_tomcat.log 2>&1 + ln -sf $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION $DEPLOY_DIR/$TOMCAT_NAME >> install_tomcat.log 2>&1 + + echo " - exporting catalina options" + if $INSTALL_GEOSERVER; then + echo "export CATALINA_OPTS=\"-Djava.awt.headless=true $TOMCAT_MEMORY_OPTS -DGEOSERVER_DATA_DIR=$DEPLOY_DIR/geoserver/data\"" >> /etc/profile.d/catalina.sh + else + echo "export CATALINA_OPTS=\"-Djava.awt.headless=true $TOMCAT_MEMORY_OPTS\"" >> /etc/profile.d/catalina.sh + fi + source /etc/profile.d/catalina.sh +fi + +if $INSTALL_GEOSERVER; then + echo "Installing geoserver $GEOSERVER_VERSION" + fn_download_newer $DOWNLOAD_DIR/$GEOSERVER_FILE $GEOSERVER_DOWNLOAD_URL + unzip -o -d $TOMCAT_WEBAPP_DIR $DOWNLOAD_DIR/$GEOSERVER_FILE geoserver.war >> install_geoserver.log 2>&1 + + echo " - copying web archive into tomcat" + mkdir -p $TOMCAT_WEBAPP_DIR/geoserver + unzip -o -d $TOMCAT_WEBAPP_DIR/geoserver $TOMCAT_WEBAPP_DIR/geoserver.war >> install_geoserver.log 2>&1 + rm -f $TOMCAT_WEBAPP_DIR/geoserver.war >> install_geoserver.log 2>&1 + + echo " - creating geoserver data directory" +# mkdir -p $DEPLOY_DIR/geoserver >> install_geoserver.log 2>&1 +# mv $TOMCAT_WEBAPP_DIR/geoserver/data $DEPLOY_DIR/geoserver >> install_geoserver.log 2>&1 + mkdir -p $DEPLOY_DIR/geoserver/data >> install_geoserver.log 2>&1 + + echo "Installing geoserver-shell $GEOSERVER_SHELL_VERSION" + fn_download_newer $DOWNLOAD_DIR/$GEOSERVER_SHELL_FILE $CACHE_DIR_REMOTE/$GEOSERVER_SHELL_FILE + unzip $DOWNLOAD_DIR/$GEOSERVER_SHELL_FILE -d $DEPLOY_DIR >> install_geoserver_shell.log 2>&1 + ln -sf $DEPLOY_DIR/gs-shell-0.2-SNAPSHOT $DEPLOY_DIR/gs-shell + make >> install_geoserver_shell.log 2>&1 + make install >> install_geoserver_shell.log 2>&1 +fi + +if $INSTALL_ISOCHRONE_LOCAL; then + echo "Installing template project \"isochrone (local testing)\"" + echo " - creating war using gradle from $TEMPLATE_DIR_ISOCHRONE" + + $TEMPLATE_DIR_ISOCHRONE/gradlew -b $TEMPLATE_DIR_ISOCHRONE/build.gradle -c $TEMPLATE_DIR_ISOCHRONE/settings.gradle clean war >> install_isochrone_local.log 2>&1 + unzip -o -d $TOMCAT_WEBAPP_DIR/localTesting $TEMPLATE_DIR_ISOCHRONE/build/libs/isochrone-*.war >> install_isochrone_local.log 2>&1 +fi + +if $INSTALL_ISOCHRONE_RELEASE; then + echo "Installing template project \"isochrone (release)\"" + echo " - artifact: $NEXUS_RELEASE_ISOCHRONE" + + # we do not save this file in download dir (we do not want caching for isochrone.war) + fn_download $DOWNLOAD_DIR/isochrone.war $NEXUS_RELEASE_ISOCHRONE + cp $DOWNLOAD_DIR/isochrone.war $TOMCAT_WEBAPP_DIR/isochrone.war + unzip -o -d $TOMCAT_WEBAPP_DIR/isochrone $TOMCAT_WEBAPP_DIR/isochrone.war >> install_isochrone_release.log 2>&1 + rm -f $TOMCAT_WEBAPP_DIR/isochrone.war >> install_isochrone_release.log 2>&1 +fi + +if $INSTALL_ISOCHRONE_SNAPSHOT; then + echo "Installing template project \"isochrone (testing)\"" + echo " - artifact: $NEXUS_SNAPSHOT_ISOCHRONE" + + # we do not save this file in download dir (we do not want caching for testing.war) + fn_download $DOWNLOAD_DIR/testing.war $NEXUS_SNAPSHOT_ISOCHRONE + cp $DOWNLOAD_DIR/testing.war $TOMCAT_WEBAPP_DIR/testing.war + unzip -o -d $TOMCAT_WEBAPP_DIR/testing $TOMCAT_WEBAPP_DIR/testing.war >> install_isochrone_snapshot.log 2>&1 + rm -f $TOMCAT_WEBAPP_DIR/testing.war >> install_isochrone_snapshot.log 2>&1 +fi + +if $INSTALL_PROJECT_PSIPROBE; then + echo "Installing template project \"psi-probe\" version $TEMPLATE_PSIPROBE_VERSION" + echo " - artifact: $TEMPLATE_PSIPROBE_DOWNLOAD_URL" + + fn_download_newer $DOWNLOAD_DIR/$TEMPLATE_PSIPROBE_FILE "$TEMPLATE_PSIPROBE_DOWNLOAD_URL" + unzip $DOWNLOAD_DIR/$TEMPLATE_PSIPROBE_FILE probe.war -d $TOMCAT_WEBAPP_DIR + unzip -o -d $TOMCAT_WEBAPP_DIR/psiprobe $TOMCAT_WEBAPP_DIR/probe.war >> install_psiprobe.log 2>&1 + rm -f $TOMCAT_WEBAPP_DIR/probe.war >> install_psiprobe.log 2>&1 +fi + +if $INSTALL_MAVEN; then + echo "Installing maven $MAVEN_VERSION" + mkdir -p $CACHE_DIR_LOCAL/maven + fn_download_newer $DOWNLOAD_DIR/$MAVEN_FILE "$MAVEN_DOWNLOAD_URL" + unzip -o $DOWNLOAD_DIR/$MAVEN_FILE -d $DEPLOY_DIR >> install_maven.log 2>&1 + ln -sf $DEPLOY_DIR/apache-maven-$MAVEN_VERSION $DEPLOY_DIR/apache-maven + + echo " - exporting maven options" + echo "export M2_HOME=$DEPLOY_DIR/apache-maven" >> /etc/profile.d/maven.sh + echo "export PATH=\${M2_HOME}/bin:\${PATH}" >> /etc/profile.d/maven.sh + source /etc/profile.d/maven.sh + + echo " - configuring maven to use vagrant-cache plugin" +# yum -y install xmlstarlet >> install_xmlstarlet.log +# xmlstarlet edit --inplace --subnode "/_:settings" -t elem -n "localRepository" -v "$CACHE_DIR_LOCAL/maven" $DEPLOY_DIR/apache-maven/conf/settings.xml + cp $SHARED_CONF_DIR/maven-settings.xml $DEPLOY_DIR/apache-maven/conf/settings.xml +fi + +if $INSTALL_NEO4J; then + echo "Installing neo4j dependencies" + yum install -y lsof >> install_neo4j_deps.log 2>&1 + + echo "Installing neo4j $NEO4J_VERSION" + fn_download_newer $DOWNLOAD_DIR/$NEO4J_FILE "$NEO4J_DOWNLOAD_URL" + tar -xvzf $DOWNLOAD_DIR/$NEO4J_FILE -C $DEPLOY_DIR >> install_neo4j.log 2>&1 + ln -sf $DEPLOY_DIR/neo4j-community-$NEO4J_VERSION $DEPLOY_DIR/neo4j + + echo " - enabling neo4j network access" + echo "org.neo4j.server.webserver.address=0.0.0.0" >> $DEPLOY_DIR/neo4j/conf/neo4j-server.properties +fi + +if $INSTALL_NEO4J_SPATIAL; then + echo "Installing neo4j-spatial $NEO4J_SPATIAL_VERSION" + git clone -q "$NEO4J_SPATIAL_GIT_URL" $DEPLOY_DIR/neo4j-spatial-$NEO4J_SPATIAL_VERSION + ln -sf $DEPLOY_DIR/neo4j-spatial-$NEO4J_SPATIAL_VERSION $DEPLOY_DIR/neo4j-spatial + cd $DEPLOY_DIR/neo4j-spatial + git checkout -q $NEO4J_SPATIAL_VERSION >> /dev/null 2>&1 + + if $INSTALL_GEOSERVER; then + if $IMPORT_DATA_OSM || $IMPORT_DATA_OSM_CACHED; then + # We need to compile the source when importing data, so that the main class gets compiled + echo " - copying neo4j-spatial into geoserver (from source)" + mvn clean install -DskipTests >> $WORKING_DIR/install_neo4j_spatial.log 2>&1 + unzip -o $DEPLOY_DIR/neo4j-spatial/target/*server-plugin.zip -d $TOMCAT_WEBAPP_DIR/geoserver/WEB-INF/lib >> $WORKING_DIR/install_neo4j_spatial_plugin.log 2>&1 + else + echo " - copying neo4j-spatial into geoserver (from binary)" + fn_download_newer $DOWNLOAD_DIR/neo4j-spatial-$NEO4J_SPATIAL_VERSION-server-plugin.zip "$NEO4J_SPATIAL_PLUGIN_DOWNLOAD_URL" + unzip -o $DOWNLOAD_DIR/neo4j-spatial-$NEO4J_SPATIAL_VERSION-server-plugin.zip -d $TOMCAT_WEBAPP_DIR/geoserver/WEB-INF/lib >> $WORKING_DIR/install_neo4j_spatial_plugin.log 2>&1 + fi + fi + cd $WORKING_DIR +fi + +if $IMPORT_DATA_OSM; then + echo "Installing osmosis $OSMOSIS_VERSION" + fn_download_newer $DOWNLOAD_DIR/$OSMOSIS_FILE "$OSMOSIS_DOWNLOAD_URL" + mkdir -p $DEPLOY_DIR/osmosis-$OSMOSIS_VERSION + unzip -o $DOWNLOAD_DIR/$OSMOSIS_FILE -d $DEPLOY_DIR/osmosis-$OSMOSIS_VERSION >> install_osmosis.log 2>&1 + ln -sf $DEPLOY_DIR/osmosis-* $DEPLOY_DIR/osmosis + chmod a+x $DEPLOY_DIR/osmosis/bin/osmosis +fi + +if ( $IMPORT_DATA_OSM || $IMPORT_DATA_OSM_CACHED ) && $INSTALL_PGROUTING; then + echo "Installing osm2pgrouting dependencies" + yum install -y expat-devel boost-devel $POSTGRESQL_PKG_NAME-devel >> install_osm2pgrouting_deps.log 2>&1 + + echo "Installing osm2pgrouting $OSM2PGROUTING_VERSION" + git clone -q "$OSM2PGROUTING_GIT_URL" $DEPLOY_DIR/osm2pgrouting-$OSM2PGROUTING_VERSION + ln -sf $DEPLOY_DIR/osm2pgrouting-$OSM2PGROUTING_VERSION $DEPLOY_DIR/osm2pgrouting + + cd $DEPLOY_DIR/osm2pgrouting + git checkout -q $OSM2PGROUTING_VERSION >> /dev/null 2>&1 + cmake -H. -Bbuild >> $WORKING_DIR/install_osm2pgrouting.log 2>&1 + cd build/ + make >> $WORKING_DIR/install_osm2pgrouting.log 2>&1 + make install >> $WORKING_DIR/install_osm2pgrouting.log 2>&1 + cd $WORKING_DIR +fi + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Installations performed!" +echo " Preparing services:" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + +if $INSTALL_POSTGRES; then + echo "Initializing postgresql database" + if [ -f "$PostgreSQL_ROOT/bin/postgresql$POSTGRESQL_SHORT_VERSION-setup" ]; then + rm -rf $POSTGRESQL_DATA_DIR + $PostgreSQL_ROOT/bin/postgresql$POSTGRESQL_SHORT_VERSION-setup initdb >> initialize_postgresql.log 2>&1 + else + service $POSTGRESQL_SERVICE_NAME initdb >> initialize_postgresql.log 2>&1 + fi + sleep 2 + + echo "Configuring and starting postgresql-server" + cp $SHARED_CONF_DIR/pg_hba.conf $POSTGRESQL_HBA_CONF + echo "listen_addresses = '*'" >> $POSTGRESQL_GLOB_CONF + echo "port = 5432" >> $POSTGRESQL_GLOB_CONF + echo "log_hostname = off" >> $POSTGRESQL_GLOB_CONF +fi + +if $INSTALL_POSTGRES_ADMIN; then + echo "Configuring phpPgAdmin" + cp $SHARED_CONF_DIR/phpPgAdmin.conf /etc/httpd/conf.d/phpPgAdmin.conf + sed -i 's/\$conf\['\''servers'\''\]\[0\]\['\''host'\''\] = '\'''\''/\$conf\['\''servers'\''\]\[0\]\['\''host'\''\] = '\''localhost'\''/' /usr/share/phpPgAdmin/conf/config.inc.php +fi + +if $INSTALL_NEO4J; then + echo "Initializing neo4j database" + $DEPLOY_DIR/neo4j/bin/neo4j -h -u $NEO4J_DB_USER install >> initialize_neo4j.log 2>&1 + + echo " - setting max open file limit for neo4j user" + echo "$NEO4J_DB_USER soft nofile 40000" >> /etc/security/limits.conf + echo "$NEO4J_DB_USER hard nofile 40000" >> /etc/security/limits.conf + echo "session required pam_limits.so" >> /etc/pam.d/su + ulimit -n 40000 +fi + +if $INSTALL_TOMCAT; then + echo "Configuring tomcat users" + groupadd -g 521 $TOMCAT_USER >> install_tomcat.log 2>&1 + useradd -u 521 -g 521 -c "Tomcat Service Account" -d $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION $TOMCAT_USER >> install_tomcat.log 2>&1 + chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION >> install_tomcat.log 2>&1 + chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/$TOMCAT_NAME >> install_tomcat.log 2>&1 + + cp $SHARED_CONF_DIR/tomcat-users.xml $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml + sed -i "s/password=\"admin\"/password=\"$PG_DB_PASSWORD\"/" $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml + + echo "Configuring tomcat default web.xml (enabling CORS filer)" + cp -f $SHARED_CONF_DIR/tomcat_web.xml $DEPLOY_DIR/$TOMCAT_NAME/conf/web.xml + + echo "Configuring tomcat permissions" + if $INSTALL_GEOSERVER; then + chown -R $TOMCAT_USER:$TOMCAT_USER $TOMCAT_WEBAPP_DIR/geoserver + chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/geoserver + fi + + echo "Configuring tomcat startup script" + cp $SHARED_CONF_DIR/tomcat_startscript.sh /etc/init.d/$TOMCAT_NAME >> install_tomcat.log 2>&1 + chmod 755 /etc/init.d/$TOMCAT_NAME >> install_tomcat.log 2>&1 + + echo "Configuring tomcat webapps (removing unnecessary ones)" + rm -rf "$TOMCAT_WEBAPP_DIR/docs" + rm -rf "$TOMCAT_WEBAPP_DIR/examples" + rm -rf "$TOMCAT_WEBAPP_DIR/host-manager" +fi + +if $INSTALL_POSTGIS && $INSTALL_GEOSERVER; then + echo "Configuring geoserver epsg projections" + mkdir -p $DEPLOY_DIR/geoserver/data/user_projections + echo "82344=`grep ^[^//,^#] /setup/conf/srid_82344_wkt.txt | paste -sd "" | sed 's/ \+ / /g'`" >> $DEPLOY_DIR/geoserver/data/user_projections/epsg.properties + chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/geoserver/data/user_projections +fi + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Services prepared!" +echo " Starting services:" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + +if $INSTALL_HTTPD; then + fn_service_start "httpd" +fi +if $INSTALL_POSTGRES; then + fn_service_start "$POSTGRESQL_SERVICE_NAME" +fi +if $INSTALL_NEO4J; then + fn_service_start "$NEO4J_SERVICE_NAME" +fi +if $INSTALL_TOMCAT; then + fn_service_start "$TOMCAT_NAME" +fi + +if $INSTALL_POSTGRES; then + echo "Creating postgresql database $PG_DB_NAME" + sudo -u "postgres" psql -d template1 -c "CREATE DATABASE \"$PG_DB_NAME\";" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" psql -d "$PG_DB_NAME" -c "CREATE USER \"$PG_DB_USER\" WITH PASSWORD '$PG_DB_PASSWORD';" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER DATABASE \"$PG_DB_NAME\" OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" psql -d "$PG_DB_NAME" -c "GRANT ALL PRIVILEGES ON DATABASE \"$PG_DB_NAME\" TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER SCHEMA public OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER ROLE \"$PG_DB_USER\" SUPERUSER;" >> $WORKING_DIR/setup_database.log 2>&1 +fi + +if $INSTALL_POSTGIS; then + PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION postgis;" >> $WORKING_DIR/setup_database.log 2>&1 + PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/pg_procedures.sql >> $WORKING_DIR/setup_database.log 2>&1 + PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/srid_82344_insert.sql >> $WORKING_DIR/setup_database.log 2>&1 +fi + +if $INSTALL_PGROUTING; then + PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION pgRouting;" >> $WORKING_DIR/setup_database.log 2>&1 +fi + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Services started!" +if $IMPORT_DATA; then + echo " Importing data:" + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + + fn_import_data "Bolzen" "$OSM_FILE_ITALY" "$OSM_FILE_BZ_FILTERED" "$OSM_BBOX_BZ" "bz_export.sql.gz" "$TABLE_PREFIX_BZ" + fn_import_data "Innsbruck" "$OSM_FILE_AUSTRIA" "$OSM_FILE_IBK_FILTERED" "$OSM_BBOX_IBK" "" "$TABLE_PREFIX_IBK" + fn_import_data "San Francisco" "$OSM_FILE_CALIFORNIA" "$OSM_FILE_SF_FILTERED" "$OSM_BBOX_SF" "sf_export.sql.gz" $TABLE_PREFIX_SF +# if ! $IS_LOCAL_TEST_DEPLOY; then +# fn_import_data "Italy" "$OSM_FILE_ITALY" "$OSM_FILE_IT_FILTERED" "$OSM_BBOX_IT" "it_export.sql.gz" $TABLE_PREFIX_IT +# fn_import_data "Alto Adige" "$OSM_FILE_ITALY" "$OSM_FILE_ST_FILTERED" "$OSM_BBOX_ST" "st_export.sql.gz" $TABLE_PREFIX_ST +# fi + + if $INSTALL_GEOSERVER; then + if $INSTALL_NEO4J_SPATIAL; then + echo "Configuring neo4j data permissions for geoserver" + chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/neo4j/data/graph.db + fi + + echo "Configuring geoserver $GEOSERVER_VERSION using geoserver-shell $GEOSERVER_SHELL_VERSION" + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_ws.gs >> setup_geoserver_workspace.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_styles.gs >> setup_geoserver_styles.log 2>&1 + cp $SHARED_IMG_DIR/* $DEPLOY_DIR/geoserver/data/styles >> setup_geoserver_styles.log 2>&1 + + if $INSTALL_NEO4J_SPATIAL; then + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ds.gs >> setup_geoserver_neo4j.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_bz.gs >> setup_geoserver_neo4j.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_ibk.gs >> setup_geoserver_neo4j.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_sf.gs >> setup_geoserver_neo4j.log 2>&1 + if ! $IS_LOCAL_TEST_DEPLOY; then +# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_it.gs >> setup_geoserver_neo4j.log 2>&1 +# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_st.gs >> setup_geoserver_neo4j.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft.gs >> setup_geoserver_neo4j.log 2>&1 + fi + fi + if $INSTALL_POSTGIS; then + # copy geoserver_setup_postgis_ds and replace username/password + cp $SHARED_CONF_DIR/geoserver_setup_postgis_ds.gs $WORKING_DIR/geoserver_setup_postgis_ds.gs + sed -i "s/@db_username@/$PG_DB_USER/" $WORKING_DIR/geoserver_setup_postgis_ds.gs + sed -i "s/@db_password@/$PG_DB_PASSWORD/" $WORKING_DIR/geoserver_setup_postgis_ds.gs + + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $WORKING_DIR/geoserver_setup_postgis_ds.gs >> setup_geoserver_postgis.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_bz.gs >> setup_geoserver_postgis.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_ibk.gs >> setup_geoserver_postgis.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_sf.gs >> setup_geoserver_postgis.log 2>&1 + if ! $IS_LOCAL_TEST_DEPLOY; then +# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_it.gs >> setup_geoserver_postgis.log 2>&1 +# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_st.gs >> setup_geoserver_postgis.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft.gs >> setup_geoserver_postgis.log 2>&1 + fi + fi + fi + + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + echo "Data imported!" + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +fi + +# Prevent second provision (done by check at the beginning of this file) +touch /var/vagrant_provision + +END=$(date +%s) +TOTAL=$(( $END - $START )) + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " All preparations done... the system can now be used" +echo " Provisioning time: $TOTAL seconds" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..4272002 --- /dev/null +++ b/build.gradle @@ -0,0 +1,150 @@ +// Plugin declaration + +plugins { + id 'com.bmuschko.vagrant' version '2.0' + id 'com.kageiit.url-cache' version '1.0.0' + id 'org.ajoberstar.grgit-release' version '0.10.0' +} + +apply plugin: 'eclipse' + +import org.ajoberstar.grgit.* +import org.apache.tools.ant.filters.FixCrLfFilter +import org.apache.tools.ant.filters.ReplaceTokens + +// Basic settings + +group = 'at.uibk.dbis' +version = '0.3.7-SNAPSHOT' +description = 'PhD project of Nikolaus Krismer (infrastructure as vagrantbox)' + +ext { + vagrantDir = getProjectDir() +} +// Groovy method declaration + +def getDate() { + def date = new Date() + def formattedDate = date.format('yyyyMMdd') + return formattedDate +} + +// Detailled settings (dependencies, tasks, task configuration, ...) + +eclipse { + project { + natures = [ + 'org.springsource.ide.eclipse.gradle.core.nature' + ] + + file { + withXml { xmlProvider -> + Node project = xmlProvider.asNode() + Node filteredResources = project.appendNode('filteredResources'); + + Node filterGit = filteredResources.appendNode('filter') + filterGit.appendNode('id', 1421146667415) + filterGit.appendNode('name', '') + filterGit.appendNode('type', 30) + Node matcherGit = filterGradle.appendNode('matcher') + matcherGit.appendNode('id', 'org.eclipse.ui.ide.multiFilter') + matcherGit.appendNode('arguments', '1.0-name-matches-false-false-.git') + + Node filterGradle = filteredResources.appendNode('filter') + filterGradle.appendNode('id', 1392635165065) + filterGradle.appendNode('name', '') + filterGradle.appendNode('type', 30) + Node matcherGradle = filterGradle.appendNode('matcher') + matcherGradle.appendNode('id', 'org.eclipse.ui.ide.multiFilter') + matcherGradle.appendNode('arguments', '1.0-name-matches-false-false-.gradle') + + Node filterVagrant = filteredResources.appendNode('filter') + filterVagrant.appendNode('id', 1392635165131) + filterVagrant.appendNode('name', '') + filterVagrant.appendNode('type', 30) + Node matcherVagrant = filterVagrant.appendNode('matcher') + matcherVagrant.appendNode('id', 'org.eclipse.ui.ide.multiFilter') + matcherVagrant.appendNode('arguments', '1.0-name-matches-false-false-.vagrant') + } + } + } +} + +vagrant { + provider = 'virtualbox' +} + +vagrantDestroy.doFirst { + if (!vagrantDir.isDirectory()) { + throw new StopExecutionException() + } +} + +// Custom tasks + +task changelog << { + def grgit = Grgit.open(project.file('.')) + def fileChangelog = new File('CHANGELOG.md') + def tags = ["HEAD"] + + grgit.tag.list().reverse().each{ t -> + tags += t.getName() + } + fileChangelog.delete() + + def builder + def commits; + def numTags = tags.size() + for (int i = 0; i < numTags; i++) { + builder = new StringBuilder() + builder.append("- Version ${tags[i]}:\n".replaceAll('Version HEAD', 'Upcoming version')) + + if (tags[i+1] == null) { + commits = grgit.log(includes: [tags[i]]) + } else { + commits = grgit.log { range tags[i+1], tags[i]; } + } + + commits.inject(builder) { bldr, commit -> + bldr.append(' - ') + bldr.append(commit.shortMessage) + bldr.append('\n') + } + fileChangelog << builder.toString() + } +} + +task vagrantExport(type: Zip) { + description = 'Builds an archive file that contains the files, needed to create the vagrant box' + + from 'etc/vagrant' + + appendix = '' + baseName = 'vagrantbox' + classifier = '' + version = getDate() + + filter(FixCrLfFilter) + filter(ReplaceTokens, tokens: [db_username: 'myUser', db_password: 'myPassword']) +} + +task vagrantPrepare << { + description = 'Prepares the vagrant environment (creates directory, copies Vagrantfile, ...)' + + if (!vagrantDir.isDirectory()) { + println "Creating directory $vagrantDir and copying content" + vagrantDir.mkdirs() + + sync { + from files('etc/vagrant') + into vagrantDir + + filter(FixCrLfFilter) + filter(ReplaceTokens, tokens: [db_username: 'niko', db_password: 'secretPhdPassword#2014!']) + } + } +} + +// task dependencies + +tasks.vagrantUp.dependsOn vagrantPrepare diff --git a/conf/geoserver_setup_neo4j_ds.gs b/conf/geoserver_setup_neo4j_ds.gs new file mode 100644 index 0000000..41ad457 --- /dev/null +++ b/conf/geoserver_setup_neo4j_ds.gs @@ -0,0 +1,5 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +datastore create --workspace isochrone --name Neo4J --connectionParams "dbtype=neo4j 'The directory path of the Neo4j database: '=/opt/neo4j/data/graph.db" +datastore modify --workspace isochrone --name Neo4J --description "Neo4J datastore" +datastore modify --workspace isochrone --name Neo4J --enabled true diff --git a/conf/geoserver_setup_neo4j_ft.gs b/conf/geoserver_setup_neo4j_ft.gs new file mode 100644 index 0000000..2c46442 --- /dev/null +++ b/conf/geoserver_setup_neo4j_ft.gs @@ -0,0 +1,3 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +#layer group create --workspace isochrone --layers n4j_bz_ways,n4j_ibk_ways --name n4j_ways --styles line,line diff --git a/conf/geoserver_setup_neo4j_ft_bz.gs b/conf/geoserver_setup_neo4j_ft_bz.gs new file mode 100644 index 0000000..f785e08 --- /dev/null +++ b/conf/geoserver_setup_neo4j_ft_bz.gs @@ -0,0 +1,5 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +# ToDo: Create featuretype for datastore "Neo4j" and public roads in bozen +# featuretype publish --workspace isochrone --datastore Neo4J --featuretype /opt/bozen-131201-filtered.osm +# featuretype create --workspace isochrone --datastore Neo4J --featuretype /opt/bozen-131201-filtered.osm --enabled true --advertised true --title neo4j_bz_ways --srs EPSG:4326 --schema "the_geom:LineString:srid=4326" --projectionpolicy FORCE_DECLARED \ No newline at end of file diff --git a/conf/geoserver_setup_neo4j_ft_ibk.gs b/conf/geoserver_setup_neo4j_ft_ibk.gs new file mode 100644 index 0000000..64d7cbd --- /dev/null +++ b/conf/geoserver_setup_neo4j_ft_ibk.gs @@ -0,0 +1,5 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +# ToDo: Create featuretype for datastore "Neo4j" and public roads in innsbruck +# featuretype publish --workspace isochrone --datastore Neo4J --featuretype /opt/innsbruck-131201-filtered.osm +# featuretype create --workspace isochrone --datastore Neo4J --featuretype /opt/innsbruck-131201-filtered.osm --enabled true --advertised true --title neo4j_ibk_ways --srs EPSG:4326 --schema "the_geom:LineString:srid=4326" --projectionpolicy FORCE_DECLARED diff --git a/conf/geoserver_setup_neo4j_ft_it.gs b/conf/geoserver_setup_neo4j_ft_it.gs new file mode 100644 index 0000000..16c5521 --- /dev/null +++ b/conf/geoserver_setup_neo4j_ft_it.gs @@ -0,0 +1,5 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +# ToDo: Create featuretype for datastore "Neo4j" and public roads in italy +# featuretype publish --workspace isochrone --datastore Neo4J --featuretype /opt/italy-131201-filtered.osm +# featuretype create --workspace isochrone --datastore Neo4J --featuretype /opt/italy-131201-filtered.osm --enabled true --advertised true --title neo4j_it_ways --srs EPSG:4326 --schema "the_geom:LineString:srid=4326" --projectionpolicy FORCE_DECLARED \ No newline at end of file diff --git a/conf/geoserver_setup_neo4j_ft_sf.gs b/conf/geoserver_setup_neo4j_ft_sf.gs new file mode 100644 index 0000000..4ba520d --- /dev/null +++ b/conf/geoserver_setup_neo4j_ft_sf.gs @@ -0,0 +1,5 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +# ToDo: Create featuretype for datastore "Neo4j" and public roads in italy +# featuretype publish --workspace isochrone --datastore Neo4J --featuretype /opt/sanfrancisco-131201-filtered.osm +# featuretype create --workspace isochrone --datastore Neo4J --featuretype /opt/sanfrancisco-131201-filtered.osm --enabled true --advertised true --title neo4j_sf_ways --srs EPSG:4326 --schema "the_geom:LineString:srid=4326" --projectionpolicy FORCE_DECLARED \ No newline at end of file diff --git a/conf/geoserver_setup_neo4j_ft_st.gs b/conf/geoserver_setup_neo4j_ft_st.gs new file mode 100644 index 0000000..9c300ec --- /dev/null +++ b/conf/geoserver_setup_neo4j_ft_st.gs @@ -0,0 +1,5 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +# ToDo: Create featuretype for datastore "Neo4j" and public roads in southern tyrol +# featuretype publish --workspace isochrone --datastore Neo4J --featuretype /opt/southtyrol-131201-filtered.osm +# featuretype create --workspace isochrone --datastore Neo4J --featuretype /opt/southtyrol-131201-filtered.osm --enabled true --advertised true --title neo4j_st_ways --srs EPSG:4326 --schema "the_geom:LineString:srid=4326" --projectionpolicy FORCE_DECLARED \ No newline at end of file diff --git a/conf/geoserver_setup_postgis_ds.gs b/conf/geoserver_setup_postgis_ds.gs new file mode 100644 index 0000000..3dc4517 --- /dev/null +++ b/conf/geoserver_setup_postgis_ds.gs @@ -0,0 +1,5 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +postgis datastore create --workspace isochrone --datastore PostGIS --host localhost --port 5432 --database isochrone --schema public --user @db_username@ --password @db_password@ +datastore modify --workspace isochrone --name PostGIS --description "PostGIS datastore" +datastore modify --workspace isochrone --name PostGIS --enabled true \ No newline at end of file diff --git a/conf/geoserver_setup_postgis_ft.gs b/conf/geoserver_setup_postgis_ft.gs new file mode 100644 index 0000000..ad364f0 --- /dev/null +++ b/conf/geoserver_setup_postgis_ft.gs @@ -0,0 +1,3 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +layer group create --workspace isochrone --layers pg_bz_ways,pg_ibk_ways --name pg_ways --styles line,line diff --git a/conf/geoserver_setup_postgis_ft_bz.gs b/conf/geoserver_setup_postgis_ft_bz.gs new file mode 100644 index 0000000..c9408b7 --- /dev/null +++ b/conf/geoserver_setup_postgis_ft_bz.gs @@ -0,0 +1,6 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +postgis featuretype publish --workspace isochrone --datastore PostGIS --table bz_ways +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "bz_ways" --name "pg_bz_ways" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_bz_ways" --title "Ways in Bozen" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_bz_ways" --enabled true diff --git a/conf/geoserver_setup_postgis_ft_ibk.gs b/conf/geoserver_setup_postgis_ft_ibk.gs new file mode 100644 index 0000000..9988d40 --- /dev/null +++ b/conf/geoserver_setup_postgis_ft_ibk.gs @@ -0,0 +1,6 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +postgis featuretype publish --workspace isochrone --datastore PostGIS --table ibk_ways +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "ibk_ways" --name "pg_ibk_ways" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_ibk_ways" --title "Ways in Innsbruck" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_ibk_ways" --enabled true diff --git a/conf/geoserver_setup_postgis_ft_it.gs b/conf/geoserver_setup_postgis_ft_it.gs new file mode 100644 index 0000000..751c58a --- /dev/null +++ b/conf/geoserver_setup_postgis_ft_it.gs @@ -0,0 +1,6 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +postgis featuretype publish --workspace isochrone --datastore PostGIS --table it_ways +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "it_ways" --name "pg_it_ways" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_it_ways" --title "Ways in Italy" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_it_ways" --enabled true diff --git a/conf/geoserver_setup_postgis_ft_sf.gs b/conf/geoserver_setup_postgis_ft_sf.gs new file mode 100644 index 0000000..9ec6739 --- /dev/null +++ b/conf/geoserver_setup_postgis_ft_sf.gs @@ -0,0 +1,6 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +postgis featuretype publish --workspace isochrone --datastore PostGIS --table sf_ways +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "sf_ways" --name "pg_sf_ways" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_sf_ways" --title "Ways in SanFrancisco" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_sf_ways" --enabled true diff --git a/conf/geoserver_setup_postgis_ft_st.gs b/conf/geoserver_setup_postgis_ft_st.gs new file mode 100644 index 0000000..5e9d7e8 --- /dev/null +++ b/conf/geoserver_setup_postgis_ft_st.gs @@ -0,0 +1,6 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +postgis featuretype publish --workspace isochrone --datastore PostGIS --table st_ways +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "st_ways" --name "pg_st_ways" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_st_ways" --title "Ways in SouthTyrol" +featuretype modify --workspace isochrone --datastore PostGIS --featuretype "pg_st_ways" --enabled true diff --git a/conf/geoserver_setup_styles.gs b/conf/geoserver_setup_styles.gs new file mode 100644 index 0000000..1a03273 --- /dev/null +++ b/conf/geoserver_setup_styles.gs @@ -0,0 +1,7 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +style create --file /setup/conf/geoserver_style_edge.sld --name StyleEdge +style create --file /setup/conf/geoserver_style_edgeexpiration.sld --name StyleEdgeExpiration +style create --file /setup/conf/geoserver_style_isocoverage.sld --name StyleIsoCoverage +style create --file /setup/conf/geoserver_style_stations.sld --name StyleTransportationStations +style create --file /setup/conf/geoserver_style_nodeexpiration.sld --name StyleNodeExpiration diff --git a/conf/geoserver_setup_ws.gs b/conf/geoserver_setup_ws.gs new file mode 100644 index 0000000..f9cf014 --- /dev/null +++ b/conf/geoserver_setup_ws.gs @@ -0,0 +1,6 @@ +geoserver set --url http://localhost:8080/geoserver --user admin --password geoserver + +workspace create --name isochrone +workspace default set --name isochrone +namespace modify --prefix isochrone --uri de.krismer.isochrone +ows wms create --workspace isochrone diff --git a/conf/geoserver_style_edge.sld b/conf/geoserver_style_edge.sld new file mode 100644 index 0000000..3d7dcbf --- /dev/null +++ b/conf/geoserver_style_edge.sld @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<StyledLayerDescriptor version="1.0.0" + xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" + xmlns="http://www.opengis.net/sld" + xmlns:ogc="http://www.opengis.net/ogc" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <!-- a Named Layer is the basic building block of an SLD document --> + <NamedLayer> + <Name>Style Black Line</Name> + <UserStyle> + <!-- Styles can have names, titles and abstracts --> + <Title>Expiration Edge Style</Title> + <Abstract>A sample style that draws a line</Abstract> + <!-- FeatureTypeStyles describe how to render different features --> + <!-- A FeatureTypeStyle for rendering lines --> + <FeatureTypeStyle> + <Rule> + <Name>rule1</Name> + <Title>Black Line</Title> + <Abstract>A solid black line with a 1 pixel width</Abstract> + <LineSymbolizer> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="fill-opacity">0.7</CssParameter> + </Stroke> + </LineSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor> \ No newline at end of file diff --git a/conf/geoserver_style_edgeexpiration.sld b/conf/geoserver_style_edgeexpiration.sld new file mode 100644 index 0000000..8a95ade --- /dev/null +++ b/conf/geoserver_style_edgeexpiration.sld @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<StyledLayerDescriptor version="1.0.0" + xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" + xmlns="http://www.opengis.net/sld" + xmlns:ogc="http://www.opengis.net/ogc" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <!-- a Named Layer is the basic building block of an SLD document --> + <NamedLayer> + <Name>default_line</Name> + <UserStyle> + <!-- Styles can have names, titles and abstracts --> + <Title>Expiration Edge Style</Title> + <Abstract>A sample style that draws a line</Abstract> + <!-- FeatureTypeStyles describe how to render different features --> + <!-- A FeatureTypeStyle for rendering lines --> + <FeatureTypeStyle> + <Rule> + <Name>rule1</Name> + <Title>Blue Line</Title> + <Abstract>A solid blue line with a 1 pixel width</Abstract> + <LineSymbolizer> + <Stroke> + <CssParameter name="stroke">#918C8E</CssParameter> + </Stroke> + </LineSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor> \ No newline at end of file diff --git a/conf/geoserver_style_isocoverage.sld b/conf/geoserver_style_isocoverage.sld new file mode 100644 index 0000000..638344f --- /dev/null +++ b/conf/geoserver_style_isocoverage.sld @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"> + <NamedLayer> + <Name>Default Polygon</Name> + <UserStyle> + <Title>Default polygon style</Title> + <Abstract>A sample style that just draws out a solid gray interior with a black 1px outline</Abstract> + <FeatureTypeStyle> + <Rule> + <Title>Polygon</Title> + <PolygonSymbolizer> + <Fill> + <CssParameter name="fill">#AAAAAA</CssParameter> + <CssParameter name="fill-opacity">0.5</CssParameter> + </Fill> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + <CssParameter name="stroke-opacity">0.8</CssParameter> + </Stroke> + </PolygonSymbolizer> + </Rule> + + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor> \ No newline at end of file diff --git a/conf/geoserver_style_nodeexpiration.sld b/conf/geoserver_style_nodeexpiration.sld new file mode 100644 index 0000000..7e04fe6 --- /dev/null +++ b/conf/geoserver_style_nodeexpiration.sld @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> +<StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" + xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <NamedLayer> + <Name>Vertices Expiration Mode</Name> + <UserStyle> + <Name>Vertices in expiration mode</Name> + <Title>Style of vertices in expiration mode</Title> + <Abstract>Generated by GeoServer</Abstract> + <FeatureTypeStyle> + <Rule> + <Name>Open vertices</Name> + <Title>Open vertices</Title> + <Abstract>Abstract</Abstract> + <!--MinScaleDenominator>1000</MinScaleDenominator> + <MaxScaleDenominator>50000</MaxScaleDenominator--> + <!--MinScaleDenominator>10000</MinScaleDenominator> + <MaxScaleDenominator>12000</MaxScaleDenominator--> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>circle</WellKnownName> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + <Fill> + <CssParameter name="fill">#8F8F8F</CssParameter> + <CssParameter name="fill-opacity">0.9</CssParameter> + </Fill> + </Mark> + <Opacity>0.9</Opacity> + <Size>8</Size> + </Graphic> + </PointSymbolizer> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>STATE</ogc:PropertyName> + <ogc:Literal>OPEN</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + </Rule> + <Rule> + <Name>Closed vertices</Name> + <Title>Closed vertices</Title> + <Abstract>Abstract</Abstract> + <!--MinScaleDenominator>1000</MinScaleDenominator> + <MaxScaleDenominator>50000</MaxScaleDenominator--> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>circle</WellKnownName> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + <CssParameter name="fill-opacity">0.9</CssParameter> + </Fill> + </Mark> + <Opacity>0.9</Opacity> + <Size>8</Size> + </Graphic> + </PointSymbolizer> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>STATE</ogc:PropertyName> + <ogc:Literal>CLOSED</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + </Rule> + <Rule> + <Name>Expired vertices</Name> + <Title>Expired vertices</Title> + <Abstract>Abstract</Abstract> + <!--MinScaleDenominator>1000</MinScaleDenominator> + <MaxScaleDenominator>50000</MaxScaleDenominator--> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>circle</WellKnownName> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + <Fill> + <CssParameter name="fill">#ffffff</CssParameter> + <CssParameter name="fill-opacity">0.9</CssParameter> + </Fill> + </Mark> + <Opacity>0.9</Opacity> + <Size>8</Size> + </Graphic> + </PointSymbolizer> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>STATE</ogc:PropertyName> + <ogc:Literal>EXPIRED</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor> \ No newline at end of file diff --git a/conf/geoserver_style_stations.sld b/conf/geoserver_style_stations.sld new file mode 100644 index 0000000..5190b3e --- /dev/null +++ b/conf/geoserver_style_stations.sld @@ -0,0 +1,115 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<StyledLayerDescriptor version="1.0.0" + xmlns:ogc="http://www.opengis.net/ogc" xmlns="http://www.opengis.net/sld" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/filter/1.1.0/filter.xsd http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd + http://www.w3.org/1999/xlink http://schemas.opengis.net/xlink/1.0.0/xlinks.xsd"> + <NamedLayer> + <Name>TransportationStations for Oracle</Name> + <UserStyle> + <Name>Vertices</Name> + <Title>Style of vertices</Title> + <Abstract>Generated by GeoServer</Abstract> + <FeatureTypeStyle> + <Rule> + <Name>Tram station</Name> + <Title>Tram stop station</Title> + <Abstract>Abstract</Abstract> + <MinScaleDenominator>1000</MinScaleDenominator> + <MaxScaleDenominator>50000</MaxScaleDenominator> + <PointSymbolizer> + <Graphic> + <ExternalGraphic> + <OnlineResource xlink:type="simple" xlink:href="file:///setup/img/tram.png" /> + <Format>image/png</Format> + </ExternalGraphic> + <Size> + <ogc:Literal>12</ogc:Literal> + </Size> + </Graphic> + </PointSymbolizer> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>T_TYPE</ogc:PropertyName> + <ogc:Literal>1</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + </Rule> + <Rule> + <Name>Railway station</Name> + <Title>Railway stop station</Title> + <Abstract>Abstract</Abstract> + <MinScaleDenominator>1000</MinScaleDenominator> + <MaxScaleDenominator>50000</MaxScaleDenominator> + <PointSymbolizer> + <Graphic> + <ExternalGraphic> + <OnlineResource xlink:type="simple" xlink:href="file:///setup/img/railway.png" /> + <Format>image/png</Format> + </ExternalGraphic> + <Size> + <ogc:Literal>12</ogc:Literal> + </Size> + </Graphic> + </PointSymbolizer> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>T_TYPE</ogc:PropertyName> + <ogc:Literal>2</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + </Rule> + <Rule> + <Name>Bus station</Name> + <Title>Bus stop station</Title> + <Abstract>Abstract</Abstract> + <MinScaleDenominator>500</MinScaleDenominator> + <MaxScaleDenominator>100000</MaxScaleDenominator> + <!--MinScaleDenominator>10000</MinScaleDenominator> <MaxScaleDenominator>12000</MaxScaleDenominator --> + <PointSymbolizer> + <Graphic> + <ExternalGraphic> + <OnlineResource xlink:type="simple" xlink:href="file:///setup/img/bus.png" /> + <Format>image/png</Format> + </ExternalGraphic> + <Size> + <ogc:Literal>12</ogc:Literal> + </Size> + </Graphic> + </PointSymbolizer> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>T_TYPE</ogc:PropertyName> + <ogc:Literal>3</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + </Rule> + <Rule> + <Name>Ferry station</Name> + <Title>Ferry stop station</Title> + <Abstract>Abstract</Abstract> + <MinScaleDenominator>1000</MinScaleDenominator> + <MaxScaleDenominator>50000</MaxScaleDenominator> + <!--MinScaleDenominator>10000</MinScaleDenominator> <MaxScaleDenominator>12000</MaxScaleDenominator --> + <PointSymbolizer> + <Graphic> + <ExternalGraphic> + <OnlineResource xlink:type="simple" xlink:href="file:///setup/img/ferry.png" /> + <Format>image/png</Format> + </ExternalGraphic> + <Size> + <ogc:Literal>12</ogc:Literal> + </Size> + </Graphic> + </PointSymbolizer> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>T_TYPE</ogc:PropertyName> + <ogc:Literal>4</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor> \ No newline at end of file diff --git a/conf/maven-settings.xml b/conf/maven-settings.xml new file mode 100644 index 0000000..5295acc --- /dev/null +++ b/conf/maven-settings.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> + <localRepository>/tmp/vagrant-cache/maven</localRepository> +</settings> \ No newline at end of file diff --git a/conf/pg_hba.conf b/conf/pg_hba.conf new file mode 100644 index 0000000..1e825bd --- /dev/null +++ b/conf/pg_hba.conf @@ -0,0 +1,6 @@ +# TYPE DATABASE USER ADDRESS METHOD + +local all all peer +host all all 127.0.0.1/32 md5 +host all all ::1/128 md5 +host all all 0.0.0.0/0 md5 diff --git a/conf/pg_procedures.sql b/conf/pg_procedures.sql new file mode 100644 index 0000000..814f0db --- /dev/null +++ b/conf/pg_procedures.sql @@ -0,0 +1,25 @@ +CREATE OR REPLACE FUNCTION dropTables(IN _schema TEXT, IN _regexp TEXT) +RETURNS void +LANGUAGE plpgsql +AS $$ +DECLARE + row record; +BEGIN + FOR row IN + SELECT + table_schema, + table_name + FROM + information_schema.tables + WHERE + table_type = 'BASE TABLE' + AND + table_schema = _schema + AND + table_name ILIKE (_regexp) + LOOP + EXECUTE 'DROP TABLE ' || quote_ident(row.table_schema) || '.' || quote_ident(row.table_name); + RAISE INFO 'Dropped table: %', quote_ident(row.table_schema) || '.' || quote_ident(row.table_name); + END LOOP; +END; +$$; diff --git a/conf/phpPgAdmin.conf b/conf/phpPgAdmin.conf new file mode 100644 index 0000000..dd8094c --- /dev/null +++ b/conf/phpPgAdmin.conf @@ -0,0 +1,11 @@ +Alias /phpPgAdmin /usr/share/phpPgAdmin + +<Location /phpPgAdmin> + <IfVersion < 2.4> + Order deny,allow + Allow from all + </IfVersion> + <IfVersion >= 2.4> + Require all granted + </IfVersion> +</Location> diff --git a/conf/poly_bz.poly b/conf/poly_bz.poly new file mode 100644 index 0000000..c93868c --- /dev/null +++ b/conf/poly_bz.poly @@ -0,0 +1,14 @@ +bz +1 + 1.134072E+01 4.651782E+01 + 1.136971E+01 4.651049E+01 + 1.136971E+01 4.651049E+01 + 1.139633E+01 4.649196E+01 + 1.135522E+01 4.647852E+01 + 1.135669E+01 4.644246E+01 + 1.130316E+01 4.644490E+01 + 1.128600E+01 4.647669E+01 + 1.129813E+01 4.650133E+01 + 1.134072E+01 4.651782E+01 +END +END diff --git a/conf/poly_ibk.poly b/conf/poly_ibk.poly new file mode 100644 index 0000000..7df406c --- /dev/null +++ b/conf/poly_ibk.poly @@ -0,0 +1,16 @@ +ibk +1 + 1.137540E+01 4.731485E+01 + 1.141031E+01 4.728958E+01 + 1.145231E+01 4.728275E+01 + 1.146650E+01 4.727352E+01 + 1.146946E+01 4.725727E+01 + 1.142835E+01 4.724703E+01 + 1.141533E+01 4.724803E+01 + 1.138398E+01 4.724823E+01 + 1.134316E+01 4.724462E+01 + 1.131713E+01 4.726028E+01 + 1.132453E+01 4.730282E+01 + 1.137540E+01 4.731485E+01 +END +END diff --git a/conf/poly_it.poly b/conf/poly_it.poly new file mode 100644 index 0000000..6f8ad40 --- /dev/null +++ b/conf/poly_it.poly @@ -0,0 +1,149 @@ +it +1 + 1.160037E+01 3.632701E+01 + 1.160037E+01 3.777815E+01 + 1.007460E+01 3.777468E+01 + 7.802627E+00 3.872932E+01 + 7.718453E+00 4.133676E+01 + 9.279434E+00 4.133791E+01 + 9.623821E+00 4.144740E+01 + 9.653921E+00 4.196821E+01 + 9.757779E+00 4.248093E+01 + 9.496039E+00 4.316673E+01 + 9.666807E+00 4.374921E+01 + 8.845272E+00 4.413282E+01 + 8.139041E+00 4.360376E+01 + 7.555371E+00 4.348099E+01 + 7.523377E+00 4.378971E+01 + 7.486001E+00 4.387429E+01 + 7.701953E+00 4.407916E+01 + 7.641609E+00 4.415244E+01 + 7.522312E+00 4.413294E+01 + 7.360449E+00 4.409409E+01 + 7.014330E+00 4.422179E+01 + 6.882662E+00 4.435396E+01 + 6.870348E+00 4.446123E+01 + 6.849277E+00 4.453329E+01 + 6.957594E+00 4.462803E+01 + 6.936906E+00 4.465710E+01 + 7.019138E+00 4.472564E+01 + 6.999752E+00 4.478737E+01 + 7.002685E+00 4.483215E+01 + 6.875123E+00 4.483275E+01 + 6.738810E+00 4.490562E+01 + 6.736434E+00 4.500533E+01 + 6.669292E+00 4.501521E+01 + 6.602696E+00 4.512945E+01 + 7.122265E+00 4.525776E+01 + 7.102324E+00 4.532906E+01 + 7.153530E+00 4.538434E+01 + 6.996102E+00 4.548573E+01 + 6.955831E+00 4.561688E+01 + 6.838424E+00 4.567749E+01 + 6.792211E+00 4.574901E+01 + 6.789752E+00 4.584816E+01 + 7.043395E+00 4.593626E+01 + 7.110707E+00 4.588955E+01 + 7.204120E+00 4.589965E+01 + 7.545928E+00 4.599760E+01 + 7.847052E+00 4.595281E+01 + 7.912890E+00 4.601918E+01 + 8.004438E+00 4.605620E+01 + 8.017964E+00 4.610193E+01 + 8.133988E+00 4.617938E+01 + 8.064078E+00 4.625774E+01 + 8.243327E+00 4.636932E+01 + 8.272856E+00 4.643710E+01 + 8.390432E+00 4.647069E+01 + 8.491392E+00 4.646735E+01 + 8.494594E+00 4.628067E+01 + 8.629014E+00 4.615416E+01 + 8.804125E+00 4.610818E+01 + 8.866161E+00 4.607121E+01 + 8.812198E+00 4.600081E+01 + 8.893600E+00 4.596302E+01 + 8.955798E+00 4.587375E+01 + 9.024258E+00 4.583156E+01 + 9.067453E+00 4.589767E+01 + 8.948115E+00 4.596579E+01 + 9.090405E+00 4.615035E+01 + 9.224630E+00 4.625102E+01 + 9.280059E+00 4.638996E+01 + 9.225123E+00 4.644981E+01 + 9.308527E+00 4.652068E+01 + 9.395607E+00 4.650043E+01 + 9.464132E+00 4.650919E+01 + 9.505389E+00 4.635753E+01 + 9.691049E+00 4.632205E+01 + 9.736860E+00 4.635363E+01 + 9.846943E+00 4.637914E+01 + 9.968267E+00 4.639324E+01 + 1.008771E+01 4.624315E+01 + 1.015317E+01 4.625248E+01 + 1.007867E+01 4.634424E+01 + 1.015705E+01 4.641325E+01 + 1.005448E+01 4.640530E+01 + 1.001656E+01 4.653426E+01 + 1.011844E+01 4.664759E+01 + 1.026808E+01 4.663837E+01 + 1.033211E+01 4.657473E+01 + 1.046421E+01 4.654864E+01 + 1.047995E+01 4.662099E+01 + 1.040176E+01 4.663771E+01 + 1.038707E+01 4.669478E+01 + 1.039920E+01 4.673304E+01 + 1.040715E+01 4.678352E+01 + 1.045785E+01 4.688018E+01 + 1.065839E+01 4.689164E+01 + 1.076408E+01 4.684650E+01 + 1.079387E+01 4.680597E+01 + 1.101901E+01 4.679308E+01 + 1.109767E+01 4.696790E+01 + 1.159466E+01 4.703169E+01 + 1.177489E+01 4.700451E+01 + 1.201894E+01 4.708077E+01 + 1.226901E+01 4.710169E+01 + 1.223553E+01 4.702891E+01 + 1.212162E+01 4.700797E+01 + 1.218859E+01 4.694268E+01 + 1.219173E+01 4.692194E+01 + 1.223433E+01 4.689742E+01 + 1.228126E+01 4.690004E+01 + 1.230792E+01 4.684189E+01 + 1.233012E+01 4.679459E+01 + 1.255889E+01 4.668725E+01 + 1.280293E+01 4.665979E+01 + 1.374748E+01 4.653360E+01 + 1.369611E+01 4.643597E+01 + 1.345064E+01 4.634364E+01 + 1.342064E+01 4.629123E+01 + 1.342309E+01 4.624328E+01 + 1.357374E+01 4.623938E+01 + 1.368365E+01 4.618206E+01 + 1.363780E+01 4.611750E+01 + 1.349524E+01 4.600781E+01 + 1.354426E+01 4.597718E+01 + 1.359604E+01 4.599890E+01 + 1.365786E+01 4.599527E+01 + 1.363279E+01 4.591037E+01 + 1.360357E+01 4.583425E+01 + 1.380819E+01 4.577005E+01 + 1.393259E+01 4.563757E+01 + 1.384723E+01 4.557564E+01 + 1.373051E+01 4.556447E+01 + 1.358998E+01 4.556769E+01 + 1.344560E+01 4.556894E+01 + 1.294387E+01 4.511068E+01 + 1.389081E+01 4.396274E+01 + 1.482375E+01 4.258514E+01 + 1.558512E+01 4.256248E+01 + 1.802457E+01 4.140592E+01 + 1.912499E+01 4.014800E+01 + 1.741399E+01 3.837065E+01 + 1.550718E+01 3.630954E+01 + 1.383638E+01 3.634822E+01 + 1.323388E+01 3.507638E+01 + 1.197558E+01 3.514535E+01 + 1.160037E+01 3.632701E+01 +END +END diff --git a/conf/poly_sf.poly b/conf/poly_sf.poly new file mode 100644 index 0000000..ebd88b6 --- /dev/null +++ b/conf/poly_sf.poly @@ -0,0 +1,509 @@ +sf +1 + -1.230011E+02 3.777205E+01 + -1.229975E+02 3.777078E+01 + -1.229951E+02 3.776913E+01 + -1.229874E+02 3.776387E+01 + -1.229814E+02 3.775892E+01 + -1.229776E+02 3.775498E+01 + -1.229754E+02 3.775258E+01 + -1.229741E+02 3.774993E+01 + -1.229733E+02 3.774865E+01 + -1.229704E+02 3.774782E+01 + -1.229673E+02 3.774630E+01 + -1.229641E+02 3.774428E+01 + -1.229611E+02 3.774195E+01 + -1.229584E+02 3.773973E+01 + -1.229546E+02 3.773683E+01 + -1.229500E+02 3.773219E+01 + -1.229455E+02 3.772531E+01 + -1.229423E+02 3.772106E+01 + -1.229397E+02 3.771535E+01 + -1.229379E+02 3.770996E+01 + -1.229377E+02 3.770924E+01 + -1.229359E+02 3.770246E+01 + -1.229357E+02 3.769762E+01 + -1.229373E+02 3.769093E+01 + -1.229390E+02 3.768654E+01 + -1.229397E+02 3.768235E+01 + -1.229414E+02 3.767658E+01 + -1.229450E+02 3.766977E+01 + -1.229491E+02 3.766338E+01 + -1.229549E+02 3.765835E+01 + -1.229630E+02 3.765198E+01 + -1.229730E+02 3.764658E+01 + -1.229805E+02 3.764390E+01 + -1.229867E+02 3.764178E+01 + -1.229926E+02 3.764102E+01 + -1.230009E+02 3.763993E+01 + -1.230011E+02 3.763983E+01 + -1.230011E+02 3.764177E+01 + -1.230116E+02 3.764151E+01 + -1.230272E+02 3.764522E+01 + -1.230407E+02 3.765033E+01 + -1.230536E+02 3.765865E+01 + -1.230636E+02 3.766732E+01 + -1.230686E+02 3.767304E+01 + -1.230731E+02 3.768258E+01 + -1.230749E+02 3.769007E+01 + -1.230772E+02 3.769232E+01 + -1.230819E+02 3.769684E+01 + -1.230861E+02 3.770075E+01 + -1.230888E+02 3.770579E+01 + -1.230918E+02 3.771187E+01 + -1.230928E+02 3.771369E+01 + -1.230948E+02 3.771407E+01 + -1.230996E+02 3.771359E+01 + -1.231049E+02 3.771265E+01 + -1.231156E+02 3.771404E+01 + -1.231196E+02 3.771544E+01 + -1.231261E+02 3.771673E+01 + -1.231326E+02 3.771939E+01 + -1.231415E+02 3.772616E+01 + -1.231491E+02 3.773228E+01 + -1.231568E+02 3.773784E+01 + -1.231628E+02 3.774353E+01 + -1.231667E+02 3.774993E+01 + -1.231700E+02 3.775593E+01 + -1.231729E+02 3.776360E+01 + -1.231738E+02 3.777183E+01 + -1.231738E+02 3.777573E+01 + -1.231737E+02 3.777611E+01 + -1.231691E+02 3.779236E+01 + -1.231660E+02 3.779688E+01 + -1.231609E+02 3.780200E+01 + -1.231539E+02 3.780706E+01 + -1.231533E+02 3.780744E+01 + -1.231472E+02 3.781195E+01 + -1.231394E+02 3.781672E+01 + -1.231323E+02 3.781968E+01 + -1.231261E+02 3.782166E+01 + -1.231183E+02 3.782306E+01 + -1.231083E+02 3.782254E+01 + -1.230953E+02 3.782188E+01 + -1.230816E+02 3.781815E+01 + -1.230705E+02 3.781383E+01 + -1.230488E+02 3.779982E+01 + -1.230387E+02 3.778888E+01 + -1.230351E+02 3.778043E+01 + -1.230338E+02 3.777837E+01 + -1.230314E+02 3.777715E+01 + -1.230258E+02 3.777709E+01 + -1.230170E+02 3.777607E+01 + -1.230106E+02 3.777493E+01 + -1.230062E+02 3.777352E+01 + -1.230011E+02 3.777205E+01 +END +1 + -1.224343E+02 3.770813E+01 + -1.224349E+02 3.770813E+01 + -1.224351E+02 3.770813E+01 + -1.224354E+02 3.770813E+01 + -1.224359E+02 3.770823E+01 + -1.224362E+02 3.770823E+01 + -1.224362E+02 3.770823E+01 + -1.224366E+02 3.770823E+01 + -1.224382E+02 3.770823E+01 + -1.224386E+02 3.770823E+01 + -1.224387E+02 3.770823E+01 + -1.224389E+02 3.770825E+01 + -1.224390E+02 3.770826E+01 + -1.224391E+02 3.770827E+01 + -1.224392E+02 3.770828E+01 + -1.224397E+02 3.770833E+01 + -1.224405E+02 3.770834E+01 + -1.224405E+02 3.770828E+01 + -1.224405E+02 3.770822E+01 + -1.224405E+02 3.770823E+01 + -1.224405E+02 3.770823E+01 + -1.224406E+02 3.770825E+01 + -1.224407E+02 3.770828E+01 + -1.224408E+02 3.770830E+01 + -1.224409E+02 3.770833E+01 + -1.224412E+02 3.770832E+01 + -1.224413E+02 3.770831E+01 + -1.224413E+02 3.770831E+01 + -1.224415E+02 3.770828E+01 + -1.224418E+02 3.770826E+01 + -1.224421E+02 3.770823E+01 + -1.224431E+02 3.770826E+01 + -1.224432E+02 3.770828E+01 + -1.224445E+02 3.770833E+01 + -1.224447E+02 3.770831E+01 + -1.224451E+02 3.770827E+01 + -1.224454E+02 3.770823E+01 + -1.224459E+02 3.770823E+01 + -1.224464E+02 3.770823E+01 + -1.224472E+02 3.770824E+01 + -1.224473E+02 3.770823E+01 + -1.224492E+02 3.770822E+01 + -1.224496E+02 3.770822E+01 + -1.224498E+02 3.770821E+01 + -1.224502E+02 3.770820E+01 + -1.224502E+02 3.770820E+01 + -1.224523E+02 3.770824E+01 + -1.224522E+02 3.770813E+01 + -1.224530E+02 3.770818E+01 + -1.224538E+02 3.770822E+01 + -1.224540E+02 3.770823E+01 + -1.224543E+02 3.770823E+01 + -1.224544E+02 3.770823E+01 + -1.224557E+02 3.770823E+01 + -1.224572E+02 3.770823E+01 + -1.224579E+02 3.770824E+01 + -1.224585E+02 3.770823E+01 + -1.224590E+02 3.770823E+01 + -1.224599E+02 3.770823E+01 + -1.224613E+02 3.770823E+01 + -1.224614E+02 3.770823E+01 + -1.224621E+02 3.770823E+01 + -1.224623E+02 3.770823E+01 + -1.224626E+02 3.770823E+01 + -1.224627E+02 3.770823E+01 + -1.224628E+02 3.770823E+01 + -1.224636E+02 3.770833E+01 + -1.224640E+02 3.770824E+01 + -1.224641E+02 3.770823E+01 + -1.224644E+02 3.770823E+01 + -1.224645E+02 3.770823E+01 + -1.224647E+02 3.770821E+01 + -1.224649E+02 3.770819E+01 + -1.224649E+02 3.770819E+01 + -1.224654E+02 3.770813E+01 + -1.224658E+02 3.770813E+01 + -1.224658E+02 3.770813E+01 + -1.224663E+02 3.770813E+01 + -1.224666E+02 3.770817E+01 + -1.224666E+02 3.770817E+01 + -1.224668E+02 3.770819E+01 + -1.224670E+02 3.770821E+01 + -1.224670E+02 3.770821E+01 + -1.224672E+02 3.770823E+01 + -1.224679E+02 3.770823E+01 + -1.224686E+02 3.770823E+01 + -1.224689E+02 3.770823E+01 + -1.224689E+02 3.770823E+01 + -1.224689E+02 3.770823E+01 + -1.224691E+02 3.770823E+01 + -1.224692E+02 3.770823E+01 + -1.224709E+02 3.770823E+01 + -1.224710E+02 3.770825E+01 + -1.224711E+02 3.770826E+01 + -1.224713E+02 3.770830E+01 + -1.224715E+02 3.770833E+01 + -1.224715E+02 3.770833E+01 + -1.224718E+02 3.770833E+01 + -1.224718E+02 3.770833E+01 + -1.224811E+02 3.770823E+01 + -1.224838E+02 3.770833E+01 + -1.224849E+02 3.770833E+01 + -1.224851E+02 3.770828E+01 + -1.224854E+02 3.770816E+01 + -1.224854E+02 3.770815E+01 + -1.224856E+02 3.770815E+01 + -1.224856E+02 3.770815E+01 + -1.224857E+02 3.770809E+01 + -1.224858E+02 3.770812E+01 + -1.224858E+02 3.770812E+01 + -1.224859E+02 3.770815E+01 + -1.224860E+02 3.770823E+01 + -1.224867E+02 3.770823E+01 + -1.224936E+02 3.770823E+01 + -1.224978E+02 3.770813E+01 + -1.224982E+02 3.770813E+01 + -1.224982E+02 3.770813E+01 + -1.225025E+02 3.770813E+01 + -1.225028E+02 3.770813E+01 + -1.225028E+02 3.770813E+01 + -1.225044E+02 3.770813E+01 + -1.225507E+02 3.770733E+01 + -1.225752E+02 3.770672E+01 + -1.225783E+02 3.773399E+01 + -1.225799E+02 3.774808E+01 + -1.225813E+02 3.776020E+01 + -1.225820E+02 3.776405E+01 + -1.225833E+02 3.777127E+01 + -1.225847E+02 3.777916E+01 + -1.225882E+02 3.778936E+01 + -1.226002E+02 3.780248E+01 + -1.226123E+02 3.781522E+01 + -1.225846E+02 3.781523E+01 + -1.225509E+02 3.781533E+01 + -1.225464E+02 3.781523E+01 + -1.225362E+02 3.781530E+01 + -1.225301E+02 3.781543E+01 + -1.225292E+02 3.781513E+01 + -1.225284E+02 3.781524E+01 + -1.225274E+02 3.781495E+01 + -1.225273E+02 3.781565E+01 + -1.225284E+02 3.781744E+01 + -1.225291E+02 3.781883E+01 + -1.225270E+02 3.782084E+01 + -1.225255E+02 3.782105E+01 + -1.225257E+02 3.782155E+01 + -1.225253E+02 3.782225E+01 + -1.225244E+02 3.782236E+01 + -1.225246E+02 3.782296E+01 + -1.225240E+02 3.782386E+01 + -1.225236E+02 3.782466E+01 + -1.225193E+02 3.782499E+01 + -1.225185E+02 3.782529E+01 + -1.225177E+02 3.782520E+01 + -1.225168E+02 3.782461E+01 + -1.225161E+02 3.782521E+01 + -1.225119E+02 3.782434E+01 + -1.225111E+02 3.782444E+01 + -1.225052E+02 3.782288E+01 + -1.225054E+02 3.782208E+01 + -1.225047E+02 3.782169E+01 + -1.225042E+02 3.782099E+01 + -1.225034E+02 3.782120E+01 + -1.225029E+02 3.782090E+01 + -1.225015E+02 3.782171E+01 + -1.225013E+02 3.782121E+01 + -1.224998E+02 3.781972E+01 + -1.224990E+02 3.782023E+01 + -1.224999E+02 3.782182E+01 + -1.224990E+02 3.782233E+01 + -1.224988E+02 3.782233E+01 + -1.224963E+02 3.782236E+01 + -1.224955E+02 3.782247E+01 + -1.224948E+02 3.782278E+01 + -1.224945E+02 3.782349E+01 + -1.224935E+02 3.782391E+01 + -1.224932E+02 3.782472E+01 + -1.224925E+02 3.782493E+01 + -1.224921E+02 3.782543E+01 + -1.224914E+02 3.782585E+01 + -1.224912E+02 3.782655E+01 + -1.224863E+02 3.782642E+01 + -1.224835E+02 3.782696E+01 + -1.224827E+02 3.782586E+01 + -1.224813E+02 3.782618E+01 + -1.224810E+02 3.782610E+01 + -1.224810E+02 3.782584E+01 + -1.224793E+02 3.782555E+01 + -1.224792E+02 3.782558E+01 + -1.224791E+02 3.782589E+01 + -1.224788E+02 3.782667E+01 + -1.224784E+02 3.782808E+01 + -1.224788E+02 3.782886E+01 + -1.224796E+02 3.783051E+01 + -1.224795E+02 3.783042E+01 + -1.224792E+02 3.783087E+01 + -1.224788E+02 3.783116E+01 + -1.224786E+02 3.783117E+01 + -1.224785E+02 3.783118E+01 + -1.224784E+02 3.783096E+01 + -1.224783E+02 3.783122E+01 + -1.224785E+02 3.783121E+01 + -1.224785E+02 3.783126E+01 + -1.224786E+02 3.783130E+01 + -1.224781E+02 3.783246E+01 + -1.224742E+02 3.783336E+01 + -1.224736E+02 3.783193E+01 + -1.224728E+02 3.783201E+01 + -1.224722E+02 3.783211E+01 + -1.224540E+02 3.783903E+01 + -1.224455E+02 3.784243E+01 + -1.224336E+02 3.784691E+01 + -1.224225E+02 3.785111E+01 + -1.224187E+02 3.785249E+01 + -1.224187E+02 3.785250E+01 + -1.224188E+02 3.785342E+01 + -1.224188E+02 3.785350E+01 + -1.224199E+02 3.786042E+01 + -1.224199E+02 3.786058E+01 + -1.224203E+02 3.786320E+01 + -1.224204E+02 3.786343E+01 + -1.224222E+02 3.787444E+01 + -1.224225E+02 3.787643E+01 + -1.224227E+02 3.787813E+01 + -1.224241E+02 3.788463E+01 + -1.224276E+02 3.790402E+01 + -1.224302E+02 3.791842E+01 + -1.224323E+02 3.792982E+01 + -1.224322E+02 3.792977E+01 + -1.224304E+02 3.792830E+01 + -1.224302E+02 3.792818E+01 + -1.224264E+02 3.792520E+01 + -1.224246E+02 3.792374E+01 + -1.224227E+02 3.792222E+01 + -1.224200E+02 3.792013E+01 + -1.224121E+02 3.791385E+01 + -1.224095E+02 3.791176E+01 + -1.224026E+02 3.790627E+01 + -1.223994E+02 3.790372E+01 + -1.223817E+02 3.788995E+01 + -1.223748E+02 3.788452E+01 + -1.223746E+02 3.788436E+01 + -1.223740E+02 3.788388E+01 + -1.223738E+02 3.788372E+01 + -1.223726E+02 3.788032E+01 + -1.223722E+02 3.787933E+01 + -1.223707E+02 3.787493E+01 + -1.223692E+02 3.787083E+01 + -1.223690E+02 3.787012E+01 + -1.223678E+02 3.786673E+01 + -1.223654E+02 3.786053E+01 + -1.223583E+02 3.784193E+01 + -1.223559E+02 3.783573E+01 + -1.223545E+02 3.783202E+01 + -1.223526E+02 3.782699E+01 + -1.223504E+02 3.782091E+01 + -1.223494E+02 3.781825E+01 + -1.223492E+02 3.781773E+01 + -1.223490E+02 3.781721E+01 + -1.223485E+02 3.781597E+01 + -1.223472E+02 3.781225E+01 + -1.223469E+02 3.781143E+01 + -1.223467E+02 3.781103E+01 + -1.223454E+02 3.780895E+01 + -1.223416E+02 3.780271E+01 + -1.223403E+02 3.780063E+01 + -1.223366E+02 3.779512E+01 + -1.223366E+02 3.779503E+01 + -1.223365E+02 3.779485E+01 + -1.223361E+02 3.779424E+01 + -1.223361E+02 3.779424E+01 + -1.223361E+02 3.779423E+01 + -1.223361E+02 3.779422E+01 + -1.223352E+02 3.779277E+01 + -1.223324E+02 3.778840E+01 + -1.223315E+02 3.778694E+01 + -1.223308E+02 3.778579E+01 + -1.223306E+02 3.778547E+01 + -1.223304E+02 3.778512E+01 + -1.223302E+02 3.778477E+01 + -1.223296E+02 3.778391E+01 + -1.223295E+02 3.778376E+01 + -1.223294E+02 3.778362E+01 + -1.223289E+02 3.778272E+01 + -1.223288E+02 3.778261E+01 + -1.223287E+02 3.778250E+01 + -1.223286E+02 3.778235E+01 + -1.223279E+02 3.778120E+01 + -1.223250E+02 3.777656E+01 + -1.223161E+02 3.776264E+01 + -1.223131E+02 3.775800E+01 + -1.223105E+02 3.775383E+01 + -1.223073E+02 3.774867E+01 + -1.223012E+02 3.773883E+01 + -1.223003E+02 3.773743E+01 + -1.222977E+02 3.773320E+01 + -1.222945E+02 3.772803E+01 + -1.222943E+02 3.772775E+01 + -1.222938E+02 3.772691E+01 + -1.222936E+02 3.772663E+01 + -1.222932E+02 3.772613E+01 + -1.222922E+02 3.772463E+01 + -1.222919E+02 3.772413E+01 + -1.222915E+02 3.772347E+01 + -1.222902E+02 3.772149E+01 + -1.222898E+02 3.772083E+01 + -1.222889E+02 3.771939E+01 + -1.222861E+02 3.771507E+01 + -1.222852E+02 3.771363E+01 + -1.222845E+02 3.771255E+01 + -1.222825E+02 3.770931E+01 + -1.222818E+02 3.770823E+01 + -1.222946E+02 3.770823E+01 + -1.223604E+02 3.770833E+01 + -1.223717E+02 3.770833E+01 + -1.223756E+02 3.770837E+01 + -1.223761E+02 3.770836E+01 + -1.223794E+02 3.770841E+01 + -1.223795E+02 3.770841E+01 + -1.223811E+02 3.770843E+01 + -1.223875E+02 3.770833E+01 + -1.223927E+02 3.770833E+01 + -1.223932E+02 3.770828E+01 + -1.223933E+02 3.770827E+01 + -1.223938E+02 3.770823E+01 + -1.223943E+02 3.770827E+01 + -1.223946E+02 3.770830E+01 + -1.223948E+02 3.770832E+01 + -1.223950E+02 3.770833E+01 + -1.223951E+02 3.770834E+01 + -1.223958E+02 3.770833E+01 + -1.223962E+02 3.770833E+01 + -1.224003E+02 3.770833E+01 + -1.224010E+02 3.770833E+01 + -1.224013E+02 3.770833E+01 + -1.224013E+02 3.770833E+01 + -1.224015E+02 3.770833E+01 + -1.224016E+02 3.770831E+01 + -1.224018E+02 3.770827E+01 + -1.224020E+02 3.770823E+01 + -1.224024E+02 3.770833E+01 + -1.224027E+02 3.770833E+01 + -1.224030E+02 3.770833E+01 + -1.224033E+02 3.770833E+01 + -1.224047E+02 3.770833E+01 + -1.224052E+02 3.770827E+01 + -1.224053E+02 3.770826E+01 + -1.224053E+02 3.770826E+01 + -1.224054E+02 3.770825E+01 + -1.224055E+02 3.770824E+01 + -1.224055E+02 3.770824E+01 + -1.224056E+02 3.770823E+01 + -1.224065E+02 3.770832E+01 + -1.224072E+02 3.770823E+01 + -1.224073E+02 3.770823E+01 + -1.224074E+02 3.770823E+01 + -1.224089E+02 3.770826E+01 + -1.224104E+02 3.770828E+01 + -1.224114E+02 3.770829E+01 + -1.224124E+02 3.770830E+01 + -1.224124E+02 3.770830E+01 + -1.224125E+02 3.770830E+01 + -1.224129E+02 3.770831E+01 + -1.224133E+02 3.770831E+01 + -1.224134E+02 3.770831E+01 + -1.224135E+02 3.770830E+01 + -1.224137E+02 3.770827E+01 + -1.224140E+02 3.770825E+01 + -1.224142E+02 3.770823E+01 + -1.224143E+02 3.770823E+01 + -1.224145E+02 3.770823E+01 + -1.224152E+02 3.770823E+01 + -1.224153E+02 3.770824E+01 + -1.224153E+02 3.770824E+01 + -1.224162E+02 3.770833E+01 + -1.224171E+02 3.770833E+01 + -1.224172E+02 3.770833E+01 + -1.224182E+02 3.770833E+01 + -1.224182E+02 3.770833E+01 + -1.224187E+02 3.770828E+01 + -1.224192E+02 3.770823E+01 + -1.224198E+02 3.770823E+01 + -1.224201E+02 3.770823E+01 + -1.224224E+02 3.770823E+01 + -1.224238E+02 3.770823E+01 + -1.224239E+02 3.770824E+01 + -1.224253E+02 3.770830E+01 + -1.224255E+02 3.770830E+01 + -1.224256E+02 3.770832E+01 + -1.224260E+02 3.770833E+01 + -1.224261E+02 3.770834E+01 + -1.224262E+02 3.770834E+01 + -1.224263E+02 3.770835E+01 + -1.224264E+02 3.770835E+01 + -1.224269E+02 3.770838E+01 + -1.224271E+02 3.770838E+01 + -1.224272E+02 3.770839E+01 + -1.224281E+02 3.770843E+01 + -1.224283E+02 3.770841E+01 + -1.224292E+02 3.770833E+01 + -1.224293E+02 3.770832E+01 + -1.224300E+02 3.770828E+01 + -1.224309E+02 3.770823E+01 + -1.224313E+02 3.770823E+01 + -1.224322E+02 3.770823E+01 + -1.224323E+02 3.770823E+01 + -1.224323E+02 3.770823E+01 + -1.224334E+02 3.770823E+01 + -1.224340E+02 3.770813E+01 + -1.224343E+02 3.770813E+01 +END +END diff --git a/conf/poly_st.poly b/conf/poly_st.poly new file mode 100644 index 0000000..2423365 --- /dev/null +++ b/conf/poly_st.poly @@ -0,0 +1,795 @@ +taa +1 + 12.2334319999999 47.0852 + 12.2456690000001 47.0711630000001 + 12.2392690000001 47.0684170000001 + 12.2320579999999 47.0624230000001 + 12.219192 47.057235 + 12.2203950000001 47.048935 + 12.2145629999999 47.042389 + 12.212838 47.035793 + 12.210723 47.0336030000001 + 12.195544 47.028733 + 12.1738920000001 47.0242270000001 + 12.1579420000001 47.0233720000001 + 12.1508910000001 47.0255670000001 + 12.129626 47.0150830000001 + 12.1243110000001 47.0074450000001 + 12.12913 47.0004650000001 + 12.1283550000001 46.993091 + 12.132687 46.986539 + 12.1358640000001 46.9856300000001 + 12.1363 46.977769 + 12.1346840000001 46.971504 + 12.1358010000001 46.9631000000001 + 12.1641900000001 46.936512 + 12.158362 46.9254310000001 + 12.154727 46.9210550000001 + 12.1454390000001 46.9152680000001 + 12.154075 46.9132969999999 + 12.1613060000001 46.9100079999999 + 12.1730070000001 46.9101900000001 + 12.1826250000001 46.9091490000001 + 12.190514 46.9068950000001 + 12.1958330000001 46.901646 + 12.1963710000001 46.8996420000001 + 12.21232 46.8793900000001 + 12.2158060000002 46.8771190000001 + 12.2368049999999 46.8876110000001 + 12.2369140000001 46.8905370000001 + 12.2423390000001 46.8911940000001 + 12.262491 46.8896140000001 + 12.2704360000001 46.8884500000001 + 12.273189 46.8871980000001 + 12.2788669999999 46.88189 + 12.277973 46.879928 + 12.290622 46.8606990000001 + 12.289763 46.8590400000001 + 12.2959670000001 46.8469509999999 + 12.3046 46.844116 + 12.3064760000001 46.839706 + 12.3047690000001 46.8344770000001 + 12.2966410000001 46.8283970000001 + 12.2869889999999 46.8166110000001 + 12.286581 46.8129240000001 + 12.2918530000001 46.8052700000001 + 12.2894870000001 46.7992940000001 + 12.2846740000001 46.795707 + 12.2836390000001 46.7868070000001 + 12.2877160000001 46.7839280000001 + 12.2935400000001 46.7848580000001 + 12.3179900000001 46.7844090000001 + 12.347988 46.7787090000001 + 12.3632899999999 46.7607200000001 + 12.3690540000001 46.74635 + 12.3770020000001 46.7304230000001 + 12.377975 46.723483 + 12.382426 46.7180570000001 + 12.3899540000001 46.7137220000001 + 12.398972 46.710018 + 12.4051670000001 46.705228 + 12.4122690000001 46.7012250000001 + 12.4245120000001 46.6998260000001 + 12.4272090000001 46.6950530000001 + 12.4415810000002 46.6884190000001 + 12.478064 46.680464 + 12.459768 46.675053 + 12.435143 46.6692580000001 + 12.4186819999999 46.6539930000001 + 12.407923 46.6454 + 12.403944 46.6438490000001 + 12.392085 46.642487 + 12.3840370000001 46.644593 + 12.380783 46.643794 + 12.379107 46.63955 + 12.3793480000001 46.6375860000001 + 12.3838269999999 46.6329790000001 + 12.3887390000001 46.6305530000001 + 12.390846 46.6283850000001 + 12.3896730000001 46.6254270000001 + 12.3860700000001 46.623788 + 12.3714540000001 46.620872 + 12.361032 46.620468 + 12.334363 46.629664 + 12.3169 46.630862 + 12.31722 46.625026 + 12.3064650000001 46.6201430000001 + 12.2848120000002 46.6189040000001 + 12.27107 46.6219080000001 + 12.267753 46.6273399999999 + 12.2622310000002 46.630009 + 12.245664 46.6249730000001 + 12.2428480000001 46.6171960000001 + 12.21343 46.609837 + 12.2119020000001 46.6087280000001 + 12.211122 46.6061490000001 + 12.2048010000001 46.600161 + 12.1959890000001 46.5957460000001 + 12.1932550000001 46.595435 + 12.1957530000001 46.6213710000001 + 12.1832130000001 46.621896 + 12.17234 46.6349780000001 + 12.16301 46.6376400000001 + 12.1497320000001 46.6349680000001 + 12.1461430000001 46.6349549999999 + 12.112017 46.6538620000001 + 12.108472 46.6590520000001 + 12.092293 46.6655120000001 + 12.0830779999999 46.6683480000002 + 12.0765210000001 46.6753060000001 + 12.0692790000001 46.6760229999999 + 12.06992 46.667267 + 12.0674760000001 46.654112 + 12.0707690000001 46.6416400000001 + 12.065079 46.6225690000001 + 12.063739 46.621525 + 12.0540300000001 46.6188870000001 + 12.0464640000001 46.6088290000001 + 12.0506359999999 46.60033 + 12.0507840000001 46.59463 + 12.0477070000001 46.5856039999999 + 12.0447830000001 46.5828020000001 + 12.037727 46.579641 + 12.0351890000001 46.5776660000001 + 12.0296920000001 46.5689560000001 + 11.999433 46.5337370000001 + 11.9885750000001 46.5461800000001 + 11.9671620000001 46.545559 + 11.9505490000001 46.540112 + 11.94651 46.5302990000001 + 11.9349000000001 46.528779 + 11.9285910000002 46.529787 + 11.9186910000001 46.53337 + 11.9129 46.5338420000001 + 11.9019130000001 46.5303060000001 + 11.8859890000001 46.5236080000001 + 11.876682 46.5229250000001 + 11.849038 46.5176140000002 + 11.8293159999999 46.509785 + 11.8250910000002 46.504965 + 11.816466 46.5012050000001 + 11.8114040000001 46.485755 + 11.8144190000002 46.4788230000001 + 11.818335 46.4774920000001 + 11.824007 46.476939 + 11.8454090000001 46.4765430000001 + 11.8608190000001 46.4746519999999 + 11.8796580000001 46.471177 + 11.883698 46.4671990000001 + 11.8878380000001 46.4654610000001 + 11.889168 46.4586570000001 + 11.890117 46.44363 + 11.889799 46.4428860000001 + 11.8718910000001 46.434104 + 11.8513120000001 46.4350820000001 + 11.84918 46.4299340000001 + 11.839233 46.416124 + 11.844702 46.4108170000001 + 11.8384160000001 46.402766 + 11.833048 46.3880800000001 + 11.832818 46.3805040000001 + 11.836324 46.369014 + 11.8359840000001 46.3670510000001 + 11.8319030000001 46.3678219999999 + 11.8259960000001 46.3723840000001 + 11.8211930000001 46.3775130000001 + 11.8187830000001 46.3769310000001 + 11.816944 46.3754960000001 + 11.815731 46.372673 + 11.8170370000001 46.370103 + 11.815186 46.368641 + 11.80502 46.3658720000001 + 11.792149 46.3669520000001 + 11.7847290000001 46.3655760000001 + 11.780597 46.3634360000001 + 11.775395 46.3591270000001 + 11.78032 46.3528400000001 + 11.791443 46.348913 + 11.802993 46.342841 + 11.8113700000001 46.3326000000001 + 11.8310420000001 46.3273530000001 + 11.8328580000001 46.3260390000002 + 11.83238 46.31427 + 11.8378000000001 46.3090690000001 + 11.8424550000001 46.3072290000001 + 11.837775 46.3035609999999 + 11.8310910000001 46.295105 + 11.8272690000001 46.2858660000001 + 11.839034 46.27124 + 11.8639219999999 46.2722100000001 + 11.886248 46.2797020000001 + 11.8893649999999 46.2734050000001 + 11.8883530000001 46.265308 + 11.8863180000001 46.2633700000001 + 11.8859470000002 46.2616290000001 + 11.8872650000001 46.2590850000001 + 11.892992 46.253522 + 11.895768 46.251821 + 11.9013270000001 46.2545870000001 + 11.91466 46.2528120000001 + 11.9226330000001 46.2487140000001 + 11.9300950000001 46.249713 + 11.92477 46.2428480000001 + 11.919186 46.2398640000001 + 11.9105950000001 46.225307 + 11.9204180000002 46.221715 + 11.9252430000001 46.218063 + 11.927372 46.215309 + 11.928772 46.2099400000001 + 11.9351690000001 46.203121 + 11.940374 46.199707 + 11.963606 46.2005540000001 + 11.9633340000001 46.188906 + 11.959387 46.1851520000001 + 11.9524170000001 46.176134 + 11.9519060000001 46.1711680000001 + 11.929627 46.176697 + 11.930562 46.1717110000001 + 11.9293320000002 46.167467 + 11.9228620000001 46.1631870000001 + 11.9193270000001 46.1561710000001 + 11.9227700000001 46.150238 + 11.9022550000001 46.137518 + 11.906584 46.1353950000001 + 11.8944140000001 46.1220460000001 + 11.8863010000001 46.1186430000001 + 11.880521 46.118627 + 11.849204 46.11367 + 11.8280210000001 46.108307 + 11.820684 46.108861 + 11.817462 46.1070910000001 + 11.8146760000001 46.103168 + 11.7811050000001 46.103599 + 11.776492 46.10502 + 11.774236 46.1075760000001 + 11.7597000000001 46.0964910000001 + 11.7517890000001 46.1060350000001 + 11.749093 46.1052020000001 + 11.7190270000001 46.1042290000001 + 11.7124770000001 46.10002 + 11.7044650000001 46.091398 + 11.696103 46.0953580000001 + 11.6900650000001 46.0958200000001 + 11.686296 46.0944690000001 + 11.6834440000001 46.091143 + 11.6830020000001 46.087832 + 11.6845050000001 46.077181 + 11.688117 46.0686630000001 + 11.693366 46.0631710000001 + 11.7051900000001 46.0557000000001 + 11.7074510000001 46.0468910000001 + 11.7018800000001 46.0454190000001 + 11.6883180000002 46.0450410000001 + 11.684603 46.0450610000001 + 11.6808910000001 46.046777 + 11.667691 46.038694 + 11.667614 46.0362470000001 + 11.6740560000001 46.0303800000001 + 11.677157 46.0294590000001 + 11.6828770000001 46.0293120000001 + 11.6828730000001 46.027592 + 11.6815980000001 46.0264700000001 + 11.670804 46.0189460000001 + 11.6676620000001 46.0179970000002 + 11.672348 46.015294 + 11.691011 45.9897070000001 + 11.6853010000001 45.984972 + 11.6868060000001 45.9701780000001 + 11.6805270000002 45.9686090000001 + 11.674235 45.9652550000001 + 11.6689570000001 45.964739 + 11.656918 45.965596 + 11.6286320000002 45.9615450000001 + 11.6316860000001 45.970276 + 11.62193 45.9724620000001 + 11.610096 45.970321 + 11.5886090000001 45.969903 + 11.5808480000001 46.0016590000001 + 11.578251 46.007418 + 11.5680110000001 46.006647 + 11.5534210000001 46.012671 + 11.5236650000001 46.012549 + 11.5203010000001 46.011589 + 11.518218 46.010086 + 11.512367 46.011553 + 11.511717 46.0129010000001 + 11.4922170000001 46.0094490000001 + 11.4862490000001 46.0043250000001 + 11.4690560000001 45.9984600000001 + 11.4554110000001 45.9857130000001 + 11.4477940000002 45.9818020000001 + 11.4011629999999 45.9810070000001 + 11.394783 45.9815010000001 + 11.3919720000001 45.9827030000001 + 11.3792020000001 45.985152 + 11.3747530000001 45.9844080000001 + 11.3734080000002 45.974076 + 11.3791 45.9572710000001 + 11.384321 45.9519360000001 + 11.3828349999999 45.94336 + 11.368202 45.9430520000001 + 11.3593069999999 45.9445640000001 + 11.3588490000001 45.9299820000001 + 11.357996 45.928867 + 11.359078 45.9261910000001 + 11.346046 45.9218540000001 + 11.351704 45.914875 + 11.35033 45.9104390000001 + 11.3465520000001 45.9100090000001 + 11.325361 45.9183220000001 + 11.3168340000001 45.924349 + 11.3134180000001 45.928914 + 11.314051 45.9307260000001 + 11.3028470000001 45.9255890000001 + 11.3048010000001 45.9191360000001 + 11.303917 45.918922 + 11.284724 45.918377 + 11.2827270000001 45.9194860000001 + 11.276321 45.9205910000001 + 11.2718410000001 45.920015 + 11.2721270000001 45.9178800000001 + 11.2593469999999 45.9215790000001 + 11.2624170000001 45.9173970000001 + 11.2608900000001 45.905152 + 11.2499200000001 45.900079 + 11.2556630000001 45.8921360000001 + 11.256106 45.8849070000001 + 11.2514740000001 45.885392 + 11.247463 45.8873380000001 + 11.235876 45.880559 + 11.2359780000001 45.879028 + 11.2416650000001 45.8764600000001 + 11.2453920000001 45.877852 + 11.2403490000001 45.856883 + 11.227666 45.849904 + 11.222893 45.8498660000001 + 11.219478 45.8448640000001 + 11.219413 45.836584 + 11.220081 45.833625 + 11.2158790000001 45.831601 + 11.2041440000002 45.828003 + 11.19967 45.82509 + 11.1986470000001 45.8221950000001 + 11.192115 45.817648 + 11.189848 45.8144760000001 + 11.1904780000001 45.8057920000001 + 11.1945360000001 45.794754 + 11.1968870000001 45.7911480000001 + 11.203808 45.7842780000001 + 11.199767 45.782499 + 11.1910970000001 45.782519 + 11.1794090000001 45.789019 + 11.17499 45.7879830000001 + 11.180086 45.776123 + 11.181613 45.7666990000001 + 11.1816840000001 45.7638100000001 + 11.1760870000001 45.749995 + 11.178085 45.745954 + 11.179455 45.7389720000001 + 11.174786 45.733069 + 11.1542000000001 45.71923 + 11.146919 45.71786 + 11.139679 45.710232 + 11.136862 45.7004970000001 + 11.1395239999999 45.697761 + 11.1235810000001 45.690011 + 11.1244010000001 45.6947440000001 + 11.122416 45.696464 + 11.115112 45.6976700000001 + 11.1096640000001 45.6958810000001 + 11.1081720000001 45.696642 + 11.102888 45.696879 + 11.101181 45.695938 + 11.0910550000001 45.697051 + 11.066474 45.7094070000001 + 11.0605280000001 45.715108 + 11.0587490000001 45.7185200000001 + 11.0574300000001 45.7193900000001 + 11.053784 45.717469 + 11.042798 45.7071160000001 + 11.028687 45.7056260000001 + 11.0174810000001 45.7066290000001 + 11.0171589999999 45.708781 + 11.0129290000001 45.715793 + 10.9999989999999 45.70851 + 10.9987380000001 45.703695 + 10.998653 45.697928 + 10.988054 45.6903940000001 + 10.97484 45.6844300000001 + 10.969342 45.681034 + 10.9694550000002 45.685612 + 10.9704060000001 45.688355 + 10.9759470000001 45.6967830000001 + 10.973223 45.702723 + 10.9666830000001 45.6938 + 10.963023 45.6865860000001 + 10.9523500000001 45.6854020000001 + 10.947149 45.6801140000001 + 10.94552 45.6749670000002 + 10.943923 45.6739660000001 + 10.93848 45.6743220000001 + 10.918986 45.6846210000001 + 10.9130130000001 45.6892349999999 + 10.9169540000001 45.6944540000001 + 10.919806 45.701456 + 10.8906030000001 45.7159789999999 + 10.882497 45.71818 + 10.8748980000001 45.7183250000001 + 10.87353 45.7166960000001 + 10.84486 45.7195160000001 + 10.844296 45.7215 + 10.845427 45.7257900000001 + 10.8509560000001 45.7366860000001 + 10.856719 45.7432939999999 + 10.859624 45.744774 + 10.8636530000001 45.7445640000001 + 10.8661570000002 45.7620360000001 + 10.8679720000001 45.765157 + 10.876791 45.7710190000001 + 10.881883 45.773072 + 10.88403 45.772943 + 10.8860040000001 45.7755740000001 + 10.8858060000001 45.77914 + 10.883895 45.7812789999999 + 10.8813050000001 45.782289 + 10.8811330000001 45.784264 + 10.8793440000001 45.7856950000001 + 10.877952 45.789181 + 10.8738250000001 45.7894820000001 + 10.875142 45.7964680000001 + 10.876679 45.79747 + 10.8777900000001 45.8008030000001 + 10.877714 45.8041479999999 + 10.8877350000001 45.81095 + 10.888616 45.8125680000001 + 10.8844320000001 45.817893 + 10.858085 45.827992 + 10.8268209999999 45.838617 + 10.807062 45.836078 + 10.7998040000001 45.836962 + 10.792237 45.8343590000001 + 10.782995 45.837331 + 10.7832980000001 45.8393200000001 + 10.7793870000001 45.8434940000001 + 10.773658 45.8438160000001 + 10.764087 45.8408640000001 + 10.7610400000002 45.8384209999999 + 10.757389 45.8309390000001 + 10.7531940000001 45.8351440000001 + 10.7523340000001 45.837484 + 10.746255 45.841357 + 10.7365910000001 45.8436420000001 + 10.7274260000002 45.843291 + 10.7235410000001 45.842112 + 10.7181590000001 45.8377020000001 + 10.7120510000001 45.8369830000001 + 10.707842 45.837415 + 10.707703 45.839132 + 10.7005480000001 45.842583 + 10.6836780000001 45.8335170000001 + 10.6767580000001 45.831382 + 10.6708720000001 45.8330260000001 + 10.6556800000001 45.833548 + 10.6517130000001 45.8195260000001 + 10.6520649999999 45.8133920000001 + 10.649421 45.80858 + 10.6463660000001 45.805048 + 10.6424530000001 45.8028060000001 + 10.6361650000001 45.80759 + 10.615603 45.8065630000001 + 10.602026 45.803923 + 10.598709 45.800651 + 10.5907470000001 45.7990450000001 + 10.5832180000001 45.7951220000001 + 10.5830480000001 45.7927670000001 + 10.5814900000001 45.7898130000002 + 10.564509 45.7850340000001 + 10.5514930000001 45.7851840000001 + 10.5394580000001 45.786445 + 10.533795 45.788983 + 10.531923 45.7967850000001 + 10.5348820000001 45.801542 + 10.53214 45.8053640000001 + 10.5270960000001 45.806534 + 10.544386 45.8166230000001 + 10.5446700000001 45.8185690000001 + 10.5414170000001 45.8213360000001 + 10.529907 45.8274570000002 + 10.5253280000001 45.82805 + 10.5155000000001 45.826912 + 10.5096130000001 45.8245150000001 + 10.503871 45.830657 + 10.503112 45.8343930000001 + 10.50695 45.8441980000001 + 10.504133 45.85698 + 10.503322 45.872066 + 10.49637 45.880388 + 10.4920350000002 45.8832390000001 + 10.491089 45.885529 + 10.4911570000002 45.887998 + 10.4961090000001 45.900719 + 10.499992 45.900405 + 10.502983 45.9012500000001 + 10.507128 45.9040540000001 + 10.5087350000001 45.9062630000001 + 10.511111 45.917986 + 10.509612 45.9244860000001 + 10.508406 45.925893 + 10.4974660000001 45.9303880000001 + 10.4924510000001 45.9339280000001 + 10.4924810000001 45.942869 + 10.4871820000001 45.94373 + 10.485741 45.946014 + 10.484053 45.9528290000001 + 10.48801 45.960415 + 10.4856770000001 45.9715780000001 + 10.465465 45.974855 + 10.4544420000001 45.9774560000001 + 10.4531610000001 45.9805860000001 + 10.4540130000001 45.9908400000001 + 10.4581920000001 46.0094540000001 + 10.4593390000001 46.0113430000001 + 10.465745 46.017935 + 10.4718600000001 46.022001 + 10.4830880000001 46.0221620000002 + 10.4843290000001 46.022766 + 10.4857400000001 46.025516 + 10.487261 46.0304490000001 + 10.48456 46.044692 + 10.4824040000001 46.0508080000001 + 10.4783680000002 46.0522220000001 + 10.4919659999999 46.067726 + 10.5023610000001 46.073237 + 10.5102250000001 46.076142 + 10.5182250000001 46.080988 + 10.525776 46.090558 + 10.536358 46.0982820000001 + 10.5424480000001 46.103938 + 10.5505360000001 46.11829 + 10.5521990000001 46.125948 + 10.549137 46.1401600000002 + 10.546958 46.1427170000001 + 10.5477680000001 46.14585 + 10.5487520000002 46.1469979999999 + 10.555354 46.149671 + 10.5564390000001 46.156308 + 10.558341 46.1605120000001 + 10.5623050000001 46.165434 + 10.566436 46.167742 + 10.5556000000001 46.181182 + 10.542432 46.1895360000001 + 10.5507610000001 46.206431 + 10.5691100000001 46.2210960000001 + 10.5714390000001 46.2241040000001 + 10.57155 46.2280860000001 + 10.576091 46.237825 + 10.5817960000001 46.2405360000001 + 10.5867710000001 46.246239 + 10.5867280000001 46.2488340000001 + 10.5767020000001 46.2765740000001 + 10.5740550000001 46.2774910000001 + 10.5715670000001 46.276976 + 10.5607590000001 46.283943 + 10.565073 46.2897880000001 + 10.580613 46.299719 + 10.579917 46.3028410000001 + 10.576299 46.307259 + 10.572426 46.3082350000001 + 10.5655510000001 46.3145140000001 + 10.564687 46.3218650000001 + 10.5664850000001 46.3245400000001 + 10.5666570000001 46.327238 + 10.5283210000001 46.343127 + 10.52273 46.3445510000001 + 10.5167630000001 46.344127 + 10.5205360000001 46.356655 + 10.5300950000001 46.357818 + 10.534557 46.356642 + 10.548259 46.3674590000001 + 10.5680760000001 46.3788180000001 + 10.5710620000001 46.378023 + 10.5937509999999 46.378049 + 10.5990990000001 46.3782840000001 + 10.6084120000001 46.380185 + 10.614531 46.3888100000001 + 10.622196 46.395883 + 10.630423 46.4017660000001 + 10.6315190000001 46.4034560000001 + 10.62927 46.408573 + 10.6254949999999 46.4101070000001 + 10.6213490000001 46.4150300000001 + 10.6172870000001 46.4296760000001 + 10.6176780000001 46.444542 + 10.62319 46.4489940000001 + 10.6015500000001 46.4695630000001 + 10.5781380000001 46.4742670000001 + 10.5613280000001 46.483483 + 10.5583610000001 46.4863500000001 + 10.555556 46.490834 + 10.5498570000001 46.4931520000001 + 10.5007380000001 46.497659 + 10.4869370000001 46.4956070000001 + 10.485588 46.4945000000001 + 10.477144 46.4964510000001 + 10.470283 46.503447 + 10.45896 46.5114540000001 + 10.454097 46.528274 + 10.4542110000002 46.5329169999999 + 10.45966 46.539691 + 10.462623 46.5415150000001 + 10.4720320000001 46.5430150000001 + 10.472898 46.553768 + 10.476273 46.561364 + 10.476241 46.567536 + 10.487181 46.5962140000001 + 10.487482 46.5993660000001 + 10.4860160000001 46.606498 + 10.49271 46.613912 + 10.4772760000001 46.622926 + 10.465921 46.63292 + 10.4545640000001 46.636967 + 10.4465550000002 46.6414640000001 + 10.4213820000001 46.6400940000001 + 10.4158600000001 46.6387590000001 + 10.403366 46.6384630000001 + 10.4014760000001 46.6393860000001 + 10.398821 46.65712 + 10.3933470000001 46.665974 + 10.392574 46.6733010000002 + 10.3873730000001 46.6823090000001 + 10.419719 46.711411 + 10.41932 46.7199209999999 + 10.4068690000001 46.73232 + 10.40882 46.7384119999999 + 10.4446090000001 46.7535090000001 + 10.4436840000001 46.7560319999999 + 10.444971 46.7632020000001 + 10.443743 46.768731 + 10.4400990000001 46.775922 + 10.434114 46.7820780000001 + 10.43142 46.7894100000001 + 10.446957 46.801712 + 10.448928 46.8023030000001 + 10.4545730000001 46.808475 + 10.4584410000001 46.815834 + 10.4557560000001 46.822204 + 10.461805 46.8263020000001 + 10.4603010000001 46.830573 + 10.4677190000002 46.8386120000001 + 10.4708490000001 46.8579980000001 + 10.4794430000001 46.8601110000001 + 10.5015600000001 46.8488659999999 + 10.5192190000001 46.847409 + 10.549244 46.8508190000001 + 10.5573560000001 46.849 + 10.5496790000001 46.8404050000001 + 10.558124 46.8404760000001 + 10.5642800000001 46.8420190000001 + 10.609609 46.8623010000001 + 10.654846 46.868721 + 10.666957 46.8760030000001 + 10.674574 46.872509 + 10.691631 46.8670070000001 + 10.6971580000001 46.8627200000001 + 10.692784 46.8527220000001 + 10.7034189999999 46.849609 + 10.7161200000001 46.84835 + 10.717349 46.846233 + 10.7213010000002 46.8454010000002 + 10.7400620000001 46.8371050000001 + 10.7544800000001 46.8348740000001 + 10.761489 46.8281760000001 + 10.761983 46.822906 + 10.7595450000001 46.8189040000001 + 10.7499700000001 46.8145190000001 + 10.7449720000001 46.807305 + 10.7379950000001 46.8045680000001 + 10.7329900000001 46.800411 + 10.7360900000001 46.79291 + 10.7571990000001 46.79031 + 10.7705870000001 46.79145 + 10.77979 46.793369 + 10.783813 46.79691 + 10.790915 46.7958140000001 + 10.8114040000002 46.7805640000001 + 10.815857 46.7782329999999 + 10.8514800000001 46.7757120000001 + 10.874689 46.766509 + 10.931681 46.773912 + 10.9848710000001 46.766509 + 10.9990200000001 46.7691690000001 + 11.009279 46.7652100000001 + 11.0250800000001 46.7702100000001 + 11.04107 46.798209 + 11.075779 46.8208120000001 + 11.0756700000001 46.858201 + 11.098869 46.885701 + 11.09757 46.9062999999999 + 11.107598 46.9197990000001 + 11.109271 46.927398 + 11.1537600000001 46.9348000000001 + 11.1590150000001 46.941613 + 11.164508 46.9441650000001 + 11.164538 46.9549230000001 + 11.1620129999999 46.962428 + 11.164586 46.9681970000001 + 11.1765830000001 46.967857 + 11.1838330000001 46.9717699999999 + 11.2005300000001 46.972374 + 11.2086 46.9673530000001 + 11.2251899999999 46.9731030000001 + 11.239517 46.97211 + 11.247207 46.9761320000001 + 11.2610000000001 46.9793780000001 + 11.2747290000001 46.9841050000001 + 11.2925640000001 46.987836 + 11.303205 46.9865640000001 + 11.320996 46.9935560000001 + 11.3389920000001 46.990352 + 11.3494240000001 46.9929230000001 + 11.35715 46.9930390000001 + 11.3759410000001 46.981698 + 11.3844700000001 46.975002 + 11.394728 46.971034 + 11.4084550000001 46.9692840000001 + 11.419161 46.972408 + 11.4282980000002 46.9779010000001 + 11.4341600000001 46.9785000000001 + 11.4475490000002 46.989399 + 11.46235 46.9933010000001 + 11.4695500000001 47.001862 + 11.472638 47.008214 + 11.477939 47.01225 + 11.494561 47.012699 + 11.502787 47.0113910000001 + 11.509325 47.006828 + 11.522419 47.0022470000001 + 11.531953 46.995754 + 11.538008 46.9872320000001 + 11.5523780000001 46.9930730000001 + 11.567854 46.995168 + 11.576038 46.9977300000001 + 11.581656 47.0019800000001 + 11.5887210000001 47.0051500000001 + 11.6052410000001 47.009754 + 11.610348 47.013107 + 11.617099 47.0154 + 11.6257160000001 47.0157230000001 + 11.630503 47.0115960000001 + 11.6411160000001 47.0045120000001 + 11.651136 47.0016930000001 + 11.667124 46.995423 + 11.686271 46.9961500000001 + 11.7063860000001 46.9957310000001 + 11.7159090000001 46.993461 + 11.7217110000001 46.986473 + 11.725666 46.9780880000001 + 11.7296310000002 46.9753010000001 + 11.7482310000001 46.97319 + 11.7753190000001 46.986297 + 11.8140210000001 46.988602 + 11.85997 47.0007220000001 + 11.9323220000001 47.035691 + 11.9387330000001 47.0376620000001 + 11.9529110000001 47.0333070000002 + 11.9612530000001 47.043449 + 11.9655510000001 47.0425600000002 + 11.9731050000001 47.0452840000001 + 11.9749890000001 47.0478360000001 + 11.984482 47.050145 + 11.989106 47.04852 + 11.992297 47.0511550000001 + 11.9998870000001 47.0517720000001 + 12.020428 47.0483580000001 + 12.0312130000002 47.0497710000001 + 12.034226 47.0539510000001 + 12.04895 47.054063 + 12.1287490000001 47.0792950000001 + 12.134643 47.0826570000001 + 12.1511410000001 47.082242 + 12.156951 47.0827820000001 + 12.1751110000001 47.08879 + 12.216689 47.090962 + 12.2334319999999 47.0852 +END +END diff --git a/conf/srid_82344_insert.sql b/conf/srid_82344_insert.sql new file mode 100644 index 0000000..57cd607 --- /dev/null +++ b/conf/srid_82344_insert.sql @@ -0,0 +1,9 @@ +INSERT into spatial_ref_sys ( + srid, auth_name, auth_srid, proj4text, srtext +) values ( + 82344, + 'epsg', + 4258, + '+title=ETRF_1989_UTM_Zone_32N +proj=utm +zone=32 +ellps=WGS84 +lat_0=0 +lon_0=21.45233333333333 +k=0.999600 +x_0=500000.0 +y_0=0 +pm=greenwich +units=m', + 'PROJCS["UTM Zone 32, Northern Hemisphere (WGS 84)", GEOGCS["GCS_ETRF_1989", DATUM["WGS 84", SPHEROID["WGS_1984", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","62580"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433] AUTHORITY["EPSG","4258"]], PROJECTION["Transverse_Mercator"], PARAMETER["false_easting", 500000.0], PARAMETER["false_northing", 0.0], PARAMETER["central_meridian", 9.0], PARAMETER["scale_factor", 0.9996], PARAMETER["latitude_of_origin", 0.0], UNIT["m",1.0], AUTHORITY["EPSG","82344"]]' +); \ No newline at end of file diff --git a/conf/srid_82344_proj4.txt b/conf/srid_82344_proj4.txt new file mode 100644 index 0000000..633936e --- /dev/null +++ b/conf/srid_82344_proj4.txt @@ -0,0 +1,11 @@ ++title=ETRF_1989_UTM_Zone_32N ++proj=utm ++zone=32 ++ellps=WGS84 ++lat_0=0 ++lon_0=21.45233333333333 ++k=0.999600 ++x_0=500000.0 ++y_0=0 ++pm=greenwich ++units=m diff --git a/conf/srid_82344_wkt.txt b/conf/srid_82344_wkt.txt new file mode 100644 index 0000000..17dd549 --- /dev/null +++ b/conf/srid_82344_wkt.txt @@ -0,0 +1,17 @@ +// Taken from https://www.inf.unibz.it/dis/wiki/doku.php?id=data:proj (fixed epsg:42580 to epsg:4258) + +PROJCS[ + "UTM Zone 32, Northern Hemisphere (WGS 84)", + GEOGCS [ "WGS 84", + DATUM ["WGS 84", + SPHEROID ["WGS 84", 6378137, 298.257223563] + ], + PRIMEM [ "Greenwich", 0.000000 ], + UNIT ["Decimal Degree", 0.01745329251994330] + ], + PROJECTION ["Transverse Mercator"], + PARAMETER ["Scale_Factor", 0.999600], + PARAMETER ["Central_Meridian", 9.000000], + PARAMETER ["False_Easting", 500000.000000], + UNIT ["Meter", 1.000000000000] +] diff --git a/conf/tomcat-users.xml b/conf/tomcat-users.xml new file mode 100644 index 0000000..c6c5b42 --- /dev/null +++ b/conf/tomcat-users.xml @@ -0,0 +1,12 @@ +<tomcat-users> + <role rolename="admin" /> + <role rolename="admin-gui" /> + <role rolename="admin-script" /> + <role rolename="manager" /> + <role rolename="manager-gui" /> + <role rolename="manager-script" /> + <role rolename="probeuser" /> + <role rolename="poweruser" /> + <role rolename="poweruserplus" /> + <user name="admin" password="admin" roles="admin,admin-gui,admin-script,manager,manager-gui,manager-script" /> +</tomcat-users> diff --git a/conf/tomcat_startscript.sh b/conf/tomcat_startscript.sh new file mode 100644 index 0000000..ea2f0d7 --- /dev/null +++ b/conf/tomcat_startscript.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# Tomcat7: Start/Stop Tomcat 7 +# +# chkconfig: - 90 10 +# description: Tomcat is a Java application Server. + +# Source function library +. /etc/init.d/functions +#. /etc/sysconfig/network + +CATALINA_HOME=/opt/tomcat +CATALINA_BASE=/opt/tomcat +TOMCAT_USER=tomcat +LOCKFILE=/var/lock/subsys/tomcat + +RETVAL=0 +start(){ + echo "Starting Tomcat7: " + su - $TOMCAT_USER -c "$CATALINA_HOME/bin/startup.sh" + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch $LOCKFILE + return $RETVAL +} + +stop(){ + echo "Shutting down Tomcat7: " + $CATALINA_HOME/bin/shutdown.sh + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && rm -f $LOCKFILE + return $RETVAL +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + status) + status tomcat + ;; + *) + echo $"Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac +exit $? + diff --git a/conf/tomcat_web.xml b/conf/tomcat_web.xml new file mode 100644 index 0000000..506c1f2 --- /dev/null +++ b/conf/tomcat_web.xml @@ -0,0 +1,4622 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + 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://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" + version="3.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. [0] --> + <!-- --> + <!-- fileEncoding Encoding to be used to read static resources --> + <!-- [platform default] --> + <!-- --> + <!-- 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] --> + + <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.6] --> + <!-- --> + <!-- compilerTargetVM Compiler target VM. [1.6] --> + <!-- --> + <!-- 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. --> + <!-- --> + <!-- 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] --> + <!-- --> + <!-- suppressSmap Should the generation of SMAP info for JSR45 --> + <!-- debugging be suppressed? [false] --> + <!-- --> + <!-- trimSpaces Should white spaces in template text between --> + <!-- actions or directives be trimmed? [false] --> + <!-- --> + <!-- xpoweredBy Determines whether X-Powered-By response --> + <!-- header is added by generated servlet. [false] --> + + <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. --> + <!-- [WEB-INF/cgi] --> + <!-- --> + <!-- debug Debugging detail level for messages logged --> + <!-- by this servlet. [0] --> + <!-- --> + <!-- executable Name of the executable used to run the --> + <!-- script. [perl] --> + <!-- --> + <!-- 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>debug</param-name> + <param-value>0</param-value> + </init-param> + <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 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 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. --> + + <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>application/x-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>application/x-font-ttf</mime-type> + </mime-mapping> + <mime-mapping> + <extension>ttf</extension> + <mime-type>application/x-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>application/x-font-woff</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> + + <!-- =========================== Cors Filter ============================ --> + <!-- This is needed so that geoserver layers can be retrieved by GeoJSON --> + <!-- by a web application that uses a different port (or hostname) --> + + <filter> + <filter-name>CorsFilter</filter-name> + <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> + </filter> + <filter-mapping> + <filter-name>CorsFilter</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + +</web-app> diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c97a8bdb9088d370da7e88784a7a093b971aa23a GIT binary patch literal 51018 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 F{|60<n1lcT literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..c282da0 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Jan 13 11:54:41 CET 2015 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-bin.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/img/bus.png b/img/bus.png new file mode 100755 index 0000000000000000000000000000000000000000..4516c824c31092ea3135e054947b73b4ec8f0d14 GIT binary patch literal 3707 zcmV->4utWEP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_ zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0 zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc= zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h z1DNytV>2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000A~Nkl<Zc-q94OK2Ts6vuzx_sz_G<fcuN7?TQ`m=wWkeJ-Txre@)?2x37?DF{AR zintJqAYHmr5Ui_;c4feo8s7`+qEIa<m^LP9Z)0q((ZuBD-sIjpcfR9dMvZ3XKB}!B z3=H!)|8vg&oc}p$;)n(~1UwCl0Gg|J^1wU58xHUUaGYy%x`Dfav;#cf{{OP+UR{X; z&p5zPa~z8VV1o!|GZ`X?gwK@;FH}>uwmbiDe@kSxD(JLB=K9@q?iwYt^B$beooF`` zy)WSx=P6(MhSG(vs4mSQzD0Wt!9`6R(MwV8w}46@blq`)z6W2#q`O%E=`>1f#M;07 zRSFfxOZKL{RDYhN@a3zNFP=m>iQvml(i>Y7y6=6Q8y|fSfVJsy=Ej~x$Nga~%1yKD z+0*1kMj0M_fSF@^S^x12%8dti8s(#F&jA3ci<7vyeufT?f!LUW5|nlcHdd+GS-kFH za>M&5<<DST+5i?oIpB2-QoeMOnYZ_$jezkQ*Pvg)q&vCgx$~s^ZfjWZPJBrT+RNbP z`dObpg{}IiG+^sZ8^ABFQdyiN-M=TIMPgeno&XC@wg;2#ruyqt)GNBBO8|dm4tLuP zXfFj4-!!qn5`fn|0!mXUoNb{k|E?{yl{_ZfgGp^m!cF2Byd9yg)PBoH8e&@qUcP|R z4kp`!U;HIDJSU;HaC3c8P7K;hHR{PNJc;!~<Jn%s#@AS4J4uwIn-71Et*(J;QIkb* zI(nPxxYNi0fZI6$odf^*n9{9~CjNTM25q(Y?|_vyh^>=9v7hs=-$kV`(bU-L_hU@H zwwuDIFa4?G?MJK)64Y3m`iSzyAE+#zYYJSN{etzmdDf=K!}3;Fz_HY8XgAByp>h1; zJlk*G-xRoi^eE}RJLwp@KP;>UEtp(fk+-?whg#;>WP9nk@2QryljMkP9SM9?G+xBk zLrF_CCMfNMD~L$g%hG1VCZ$>a_BfS=?-)GzA==GS`0Qm?&VGRQOv3yQ7<l+7UAI3* zb!m$HiAV5P^60kav4VPOnT>^sFbbfyJj=$yG$s`vK~RBusSr6)X5;d?a60KW7Xj@m zf{h}VKYoGKjv>nVuQ3^g(($P_8DZ(vTPW?YHvI|8DA36qH`uxUNTEdpv<pf%)*A^d zwjNH%q!e%7xul`Oc&*PwWi-aL_NfLIxb~;4fn)yz@VgH1CeQ&K2Cln`U;?ZF?*p&= ZJ^(sbQKmRXd<_5q002ovPDHLkV1niO16u$9 literal 0 HcmV?d00001 diff --git a/img/car.png b/img/car.png new file mode 100755 index 0000000000000000000000000000000000000000..6c020437963e0ab51c9b41c4035f7a8f5e9d05c5 GIT binary patch literal 847 zcmV-V1F-ywP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXZ1 z2_PltY9V?600PfRL_t(Y$L*I*NK{c2$A9O(H_nWsA&3?Q6-tQU!ia2FP-qmiYY{Eo z6l6r(Xd~_m65Ir0P|!jmg`h<rPzbrPq7aJ+v@b<7O>@k7@0}JiPV;h}%^Sx>(1Ev@ zdFQ_W`S{=eJy!r|A8baX6V+BAjtC_;RYl}8(1U8XWI&&wRDuF1vI)qlWD`>Dw}DQe z5_A<%vW{U)#Q*Vp??E#@Cv8MpGe5)^9YRIaDhP8q<>LHw!4fdAPOAhF1+Y<#ldf?N zFvMdP3q8jQPT2L7hodv}4oz_X^)&NKsh|J^z#u}to~jmDZcX#XGD2HZ4Y$wiW1wR{ z^|c9by})JWFW>Z$GN5>f2&$U(In+?iy$dZ^5fd1^T{w4yuL~=@n_j{)k_{~pwWzB} z5VegjxQ1;NTsppot~+B;W)%+%F!*AU_N&7X&spXvCQ-(<(@mT^yxZr0qIoM_18?%O z-Gl*-SO&@?5YKrMWq6*_(f5*(@p)fss>>tnswofO<ATiyScV6q)4tY3Y(quN_LHTg zz!{P`uCCb`o~N6T@hX{A!Sy&$U*#+Ha>`|9F_o(j#gWT#JxDr#?lXuO&L6GkNMnt! z)Z?>Bre~87F&hIu*icRH#TIN!vh}Tq+U(uAh3!=_-+mVnZaw>$&Nh#N*@ahCsjE#; zSDOfYuloC7dp<tLjYs1Up!X(>fUJMiO4eui{TyvqhSS0kur5@_LEx+Zznxs<`qK&e zhCVQ}u#(<p0TxO!?~Z)o?9Epsa>^$vIIhRHq{Fh~k#arM)4WVBnp}&^E>lxKAZD+3 z*i*>pWQP|Dp%gP&>6Gg~@IMEfZxoA1Ox`1|7_&3tDn6!4dSq?9{Md){eaQ)w!0^E7 zYsC)Vh%176%GjrcwPi3H+)5b<H0irccBWJxh-LgwNk9?6GpKeW+K=X3UpC7`1jGY9 Z^$Ty<5=N1S2TK3|002ovPDHLkV1f}sd42!@ literal 0 HcmV?d00001 diff --git a/img/ferry.png b/img/ferry.png new file mode 100755 index 0000000000000000000000000000000000000000..4516c824c31092ea3135e054947b73b4ec8f0d14 GIT binary patch literal 3707 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 ZJ^(sbQKmRXd<_5q002ovPDHLkV1niO16u$9 literal 0 HcmV?d00001 diff --git a/img/tram.png b/img/tram.png new file mode 100755 index 0000000000000000000000000000000000000000..4516c824c31092ea3135e054947b73b4ec8f0d14 GIT binary patch literal 3707 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 ZJ^(sbQKmRXd<_5q002ovPDHLkV1niO16u$9 literal 0 HcmV?d00001 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..3c1ee71 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'isochrone-vm' -- GitLab