From 9a818b3a490780de0ff80bc914455d2c850be2e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 5 Jun 2018 21:28:15 +0200
Subject: [PATCH 001/108] Buildings: create a real 'figure-ground diagram' as
 sub category of buildings

---
 buildings-figure-ground.json | 37 ++++++++++++++++++++++++++++++++++++
 buildings.json               | 34 +++++----------------------------
 2 files changed, 42 insertions(+), 29 deletions(-)
 create mode 100644 buildings-figure-ground.json

diff --git a/buildings-figure-ground.json b/buildings-figure-ground.json
new file mode 100644
index 000000000..63d23c7e9
--- /dev/null
+++ b/buildings-figure-ground.json
@@ -0,0 +1,37 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Schwarzplan",
+        "en": "Figure-ground diagram"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  way[building];",
+            "  relation[building];",
+            ")"
+        ]
+    },
+    "feature": {
+        "markerSymbol": null,
+        "priority": [
+            "{% set p = 100 %}",
+            "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.culture %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.highway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.railway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
+            "{{ p }}"
+        ],
+        "style": {
+            "width": "0",
+            "color": "#000000",
+            "fillColor": "#000000",
+            "fillOpacity": "1"
+        }
+    }
+}
diff --git a/buildings.json b/buildings.json
index 17b49fa78..94bb4a9af 100644
--- a/buildings.json
+++ b/buildings.json
@@ -1,38 +1,14 @@
 {
-    "type": "overpass",
+    "type": "index",
     "name": {
         "de": "Gebäude",
         "en": "Buildings",
         "fr": "Bâtiments",
         "pt-br": "Edificações"
     },
-    "query": {
-        "16": [
-            "(",
-            "  way[building];",
-            "  relation[building];",
-            ")"
-        ]
-    },
-    "feature": {
-        "markerSymbol": null,
-        "priority": [
-            "{% set p = 100 %}",
-            "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
-            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.culture %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.highway %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.railway %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
-            "{{ p }}"
-        ],
-        "style": {
-            "width": "1",
-            "color": "#000000",
-            "fillColor": "#000000"
+    "subCategories": [
+        {
+            "id": "buildings-figure-ground"
         }
-    }
+    ]
 }

From aea862cb407c0f0deb430de3d36dc7cb2c3074d2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 5 Jun 2018 22:19:18 +0200
Subject: [PATCH 002/108] Buildings: height

---
 buildings-height.json | 104 ++++++++++++++++++++++++++++++++++++++++++
 buildings.json        |   3 ++
 2 files changed, 107 insertions(+)
 create mode 100644 buildings-height.json

diff --git a/buildings-height.json b/buildings-height.json
new file mode 100644
index 000000000..84c21afce
--- /dev/null
+++ b/buildings-height.json
@@ -0,0 +1,104 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Gebäudehöhen",
+        "en": "Building height"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  way[building];",
+            "  relation[building];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% if tags.height %}",
+            "{% set approxHeight = tags.height %}",
+            "{% elseif attribute(tags, 'building:levels') %}",
+            "{% set approxHeight = attribute(tags, 'building:levels') * 3.5 %}",
+            "{% endif %}",
+            "",
+            "{% if approxHeight <= 50 %}",
+            "{% set color = colorInterpolate(['green', 'red'], approxHeight / 50) %}",
+            "{% elseif approxHeight %}",
+            "{% set color = colorInterpolate(['red', 'yellow'], (approxHeight - 50) / 250) %} ",
+            "{% else %}",
+            "{% set color = '#7f7f7f' %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if tags.height %}",
+            "{{ tags.height }}m",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'building:levels') %}",
+            "{{ attribute(tags, 'building:levels') }} {{ keyTrans('building:levels') }}",
+            "{% endif %}"
+        ],
+        "markerSymbol": null,
+        "listMarkerSymbol": "{{ markerCircle({fillColor: color})|raw }}",
+        "priority": "{{ (approxHeight|default(0)) * -1 }}",
+        "style": {
+            "width": "1",
+            "color": "#000000",
+            "fillColor": "{{ color }}",
+            "fillOpacity": "1"
+        }
+    },
+    "info": [
+        "<div style='display: inline-block'>",
+        "{{ tagTrans('height') }}",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': '#7f7f7f' })|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(0, 50, 10) %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['green', 'red'], i / 50) })|raw }}</td>",
+        "    <td>{{ i }}m</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "{% for i in range(100, 250, 50) %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['red', 'yellow'], (i - 50) / 250) })|raw }}</td>",
+        "    <td>{{ i }}m</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': 'yellow' })|raw }}</td>",
+        "    <td>≥300m</td>",
+        "  </tr>",
+        "</table>",
+        "</div>",
+        "",
+        "<div style='display: inline-block'>",
+        "{{ tagTrans('building:levels') }}",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': '#7f7f7f' })|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(0, 12, 3) %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['green', 'red'], (i * 3.5) / 50) })|raw }}</td>",
+        "    <td>{{ i }}</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "{% for i in range(15, 84, 15) %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['red', 'yellow'], (i * 3.5 - 50) / 250) })|raw }}</td>",
+        "    <td>{{ i }}</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': 'yellow' })|raw }}</td>",
+        "    <td>≥85</td>",
+        "  </tr>",
+        "</table>",
+        "",
+        "</div>"
+    ]
+}
diff --git a/buildings.json b/buildings.json
index 94bb4a9af..0d77826a8 100644
--- a/buildings.json
+++ b/buildings.json
@@ -9,6 +9,9 @@
     "subCategories": [
         {
             "id": "buildings-figure-ground"
+        },
+        {
+            "id": "buildings-height"
         }
     ]
 }

From 913ca616169586b415823c420fc99edc53afde7f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 6 Jun 2018 15:40:47 +0200
Subject: [PATCH 003/108] Buildings: import start_date category from other
 repository

---
 buildings-start_date.json | 120 ++++++++++++++++++++++++++++++++++++++
 buildings.json            |   3 +
 2 files changed, 123 insertions(+)
 create mode 100644 buildings-start_date.json

diff --git a/buildings-start_date.json b/buildings-start_date.json
new file mode 100644
index 000000000..04a0d67fc
--- /dev/null
+++ b/buildings-start_date.json
@@ -0,0 +1,120 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Buildings",
+        "de": "Gebäude"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  way[building];",
+            "  relation[building];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% if tags.start_date %}",
+            "  {% set value = tags.start_date|osmParseDate %}",
+            "  {% if value and value[0] and value[1] %}",
+            "    {% set value = (value[1] - value[0]) / 2 + value[0] %}",
+            "  {% elseif value and value[0] %}",
+            "    {% set value = value[0] %}",
+            "  {% elseif value and value[1] %}",
+            "    {% set value = value[1] %}",
+            "  {% else %}",
+            "    {% set value = 'error' %}",
+            "  {% endif %}",
+            "",
+            "  {% if value == 'error' %}",
+            "    {% set color = '#ff0000' %}",
+            "  {% elseif value < 1500 %}",
+            "    {% set color = '#0000ff' %}",
+            "  {% elseif value < 1900 %}",
+            "    {% set color = colorInterpolate([ '#0000ff', '#ff00ff' ], (value - 1500.0) / 400) %}",
+            "  {% elseif value < 2000 %}",
+            "    {% set color = colorInterpolate([ '#ff00ff', '#ffff00' ], (value - 1900.0) / 100) %}",
+            "  {% else %}",
+            "    {% set color = colorInterpolate([ '#ffff00', '#00ff00' ], (value - 2000.0) / 50) %}",
+            "  {% endif %}",
+            "{% else %}",
+            "{% set color = '#000000' %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if tags.start_date %}",
+            "{{ tags.start_date }}",
+            "{% endif %}"
+        ],
+        "markerSign": null,
+        "listMarkerSymbol": "polygon",
+        "priority": [
+            "{% set p = 100 %}",
+            "{% if tags.start_date %}{% set p = p - 20 %}{% endif %}",
+            "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.culture %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.highway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.railway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
+            "{{ p }}"
+        ],
+        "style": {
+            "weight": "1",
+            "color": "#000000",
+            "fillColor": "{{ color }}",
+            "fillOpacity": "0.8"
+        }
+    },
+    "info": [
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1400\" }))|raw }}</td>",
+        "    <td>&lt;1500</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1500\" }))|raw }}</td>",
+        "    <td>1500</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1600\" }))|raw }}</td>",
+        "    <td>1600</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1700\" }))|raw }}</td>",
+        "    <td>1700</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1800\" }))|raw }}</td>",
+        "    <td>1800</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1900\" }))|raw }}</td>",
+        "    <td>1900</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1950\" }))|raw }}</td>",
+        "    <td>1950</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"2000\" }))|raw }}</td>",
+        "    <td>2000</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"2020\" }))|raw }}</td>",
+        "    <td>2020</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"xxx\" }))|raw }}</td>",
+        "    <td>unparseable start_date</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
+        "    <td>no start_date</td>",
+        "  </tr>",
+        "</table>"
+    ]
+}
diff --git a/buildings.json b/buildings.json
index 0d77826a8..cae67fd37 100644
--- a/buildings.json
+++ b/buildings.json
@@ -12,6 +12,9 @@
         },
         {
             "id": "buildings-height"
+        },
+        {
+            "id": "buildings-start_date"
         }
     ]
 }

From c121c07ee70cdc17d525a98b57ba0a6caffea7be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 6 Jun 2018 20:47:54 +0200
Subject: [PATCH 004/108] Building Start Date: Improvements

---
 buildings-start_date.json | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/buildings-start_date.json b/buildings-start_date.json
index 04a0d67fc..fadac2069 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -1,8 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "en": "Buildings",
-        "de": "Gebäude"
+        "en": "Building age",
+        "de": "Gebäudealter"
     },
     "query": {
         "16": [
@@ -38,7 +38,7 @@
             "    {% set color = colorInterpolate([ '#ffff00', '#00ff00' ], (value - 2000.0) / 50) %}",
             "  {% endif %}",
             "{% else %}",
-            "{% set color = '#000000' %}",
+            "{% set color = '#7f7f7f' %}",
             "{% endif %}"
         ],
         "description": [
@@ -46,8 +46,8 @@
             "{{ tags.start_date }}",
             "{% endif %}"
         ],
-        "markerSign": null,
-        "listMarkerSymbol": "polygon",
+        "markerSymbol": null,
+        "listMarkerSymbol": "{{ markerPolygon({ \"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
         "priority": [
             "{% set p = 100 %}",
             "{% if tags.start_date %}{% set p = p - 20 %}{% endif %}",
@@ -63,7 +63,7 @@
             "{{ p }}"
         ],
         "style": {
-            "weight": "1",
+            "width": "1",
             "color": "#000000",
             "fillColor": "{{ color }}",
             "fillOpacity": "0.8"

From cc2f1c06b71e8ec661ed898e7c4634934762ac92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 7 Jun 2018 22:02:35 +0200
Subject: [PATCH 005/108] Fossil Energy: new category

---
 fossil-energy.json | 52 ++++++++++++++++++++++++++++++++++++++++++++++
 index.json         |  3 +++
 2 files changed, 55 insertions(+)
 create mode 100644 fossil-energy.json

diff --git a/fossil-energy.json b/fossil-energy.json
new file mode 100644
index 000000000..9e13d730c
--- /dev/null
+++ b/fossil-energy.json
@@ -0,0 +1,52 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Fossile Energie",
+        "en": "Fossil energy"
+    },
+    "query": {
+        "11": [
+            "(",
+            "way[man_made=pipeline][substance~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "relation[man_made=pipeline][substance~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "way[landuse=industrial][industrial~\"^(refinery)$\"];",
+            "relation[landuse=industrial][industrial~\"^(refinery)$\"];",
+            "way[waterway=offshore_field];",
+            "relation[waterway=offshore_field];",
+            "node[man_made~\"^(offshore_platform)$\"];",
+            "way[man_made~\"^(offshore_platform)$\"];",
+            "relation[man_made~\"^(offshore_platform)$\"];",
+            ")"
+        ],
+        "13": [
+            "(",
+            "way[man_made=pipeline][substance~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "relation[man_made=pipeline][substance~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "way[landuse=industrial][industrial~\"^(oil|gas|lng|cng|multiphase|refinery|oil_refinery)$\"];",
+            "relation[landuse=industrial][industrial~\"^(oil|gas|lng|cng|multiphase|refinery|oil_refinery)$\"];",
+            "way[waterway=offshore_field];",
+            "relation[waterway=offshore_field];",
+            "node[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
+            "node[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "way[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
+            "way[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "relation[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
+            "relation[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": [
+            "{% if tags.man_made == 'pipeline' %}",
+            "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})",
+            "{% elseif tags.man_made %}",
+            "{{ tagTrans('man_made', tags.man_made) }}",
+            "{% elseif tags.landuse == 'industrial' %}",
+            "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
+            "{% elseif tags.waterway == 'offshore_field' %}",
+            "{{ tagTrans('waterway', tags.waterway) }}",
+            "{% endif %}"
+        ],
+        "markerSymbol": null
+    }
+}
diff --git a/index.json b/index.json
index 1b5b475a5..5c4104e52 100644
--- a/index.json
+++ b/index.json
@@ -237,6 +237,9 @@
                 {
                     "id": "power"
                 },
+                {
+                    "id": "fossil-energy"
+                },
                 {
                     "id": "railway",
                     "type": "index",

From 44fe15406c04ea9e860bbb1b4261a377b5bbb417 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 10 Jun 2018 20:53:34 +0200
Subject: [PATCH 006/108] Fossil Energy: include coal and power generators

---
 fossil-energy.json | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/fossil-energy.json b/fossil-energy.json
index 9e13d730c..b34f2eb08 100644
--- a/fossil-energy.json
+++ b/fossil-energy.json
@@ -7,31 +7,39 @@
     "query": {
         "11": [
             "(",
-            "way[man_made=pipeline][substance~\"^(oil|gas|lng|cng|multiphase)$\"];",
-            "relation[man_made=pipeline][substance~\"^(oil|gas|lng|cng|multiphase)$\"];",
-            "way[landuse=industrial][industrial~\"^(refinery)$\"];",
-            "relation[landuse=industrial][industrial~\"^(refinery)$\"];",
+            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
+            "way[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
+            "relation[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
             "way[waterway=offshore_field];",
             "relation[waterway=offshore_field];",
             "node[man_made~\"^(offshore_platform)$\"];",
             "way[man_made~\"^(offshore_platform)$\"];",
             "relation[man_made~\"^(offshore_platform)$\"];",
+            "node[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "way[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "relation[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
             ")"
         ],
         "13": [
             "(",
-            "way[man_made=pipeline][substance~\"^(oil|gas|lng|cng|multiphase)$\"];",
-            "relation[man_made=pipeline][substance~\"^(oil|gas|lng|cng|multiphase)$\"];",
-            "way[landuse=industrial][industrial~\"^(oil|gas|lng|cng|multiphase|refinery|oil_refinery)$\"];",
-            "relation[landuse=industrial][industrial~\"^(oil|gas|lng|cng|multiphase|refinery|oil_refinery)$\"];",
+            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[landuse=industrial][industrial~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
+            "way[landuse=industrial][industrial~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
+            "relation[landuse=industrial][industrial~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
             "way[waterway=offshore_field];",
             "relation[waterway=offshore_field];",
             "node[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
             "node[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
             "way[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
-            "way[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
-            "relation[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
-            "relation[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "way[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)(|;.*)$\"];",
+            "relation[man_made~\"^(storage_tank)$\"][contents~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "way[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "relation[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
             ")"
         ]
     },

From 9858d7908018e9371e2b5acc6665f701b6c30ee1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 17 Jun 2018 21:41:46 +0200
Subject: [PATCH 007/108] fossil-energy: include quarry and mine_shaft (coal)

---
 fossil-energy.json | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/fossil-energy.json b/fossil-energy.json
index b34f2eb08..cb4714e68 100644
--- a/fossil-energy.json
+++ b/fossil-energy.json
@@ -7,6 +7,11 @@
     "query": {
         "11": [
             "(",
+            "node[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "relation[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "node[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
             "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
             "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
             "node[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
@@ -24,6 +29,12 @@
         ],
         "13": [
             "(",
+            "node[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "relation[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "node[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "relation[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
             "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
             "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
             "node[landuse=industrial][industrial~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",

From 6053d2e119c7e7df847748d347c088d1fa6708e3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 27 Jul 2018 06:22:48 +0200
Subject: [PATCH 008/108] buildings-type: unfin

---
 buildings-type.json | 90 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100644 buildings-type.json

diff --git a/buildings-type.json b/buildings-type.json
new file mode 100644
index 000000000..9c0fc4549
--- /dev/null
+++ b/buildings-type.json
@@ -0,0 +1,90 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Typ",
+        "en": "Type"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  way[building];",
+            "  relation[building];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% if tags.building == 'yes' %}",
+            "{% set color = '#7f7f7f' %}",
+            "{% else %}",
+            "{% set color = '#7f0000' %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{{ tagTrans('building', tags.building) }}"
+        ],
+        "markerSymbol": null,
+        "listMarkerSymbol": "{{ markerCircle({fillColor: color})|raw }}",
+        "priority": "{{ (approxHeight|default(0)) * -1 }}",
+        "style": {
+            "width": "1",
+            "color": "#000000",
+            "fillColor": "{{ color }}",
+            "fillOpacity": "1"
+        }
+    },
+    "info": [
+        "<div style='display: inline-block'>",
+        "{{ tagTrans('height') }}",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': '#7f7f7f' })|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(0, 50, 10) %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['green', 'red'], i / 50) })|raw }}</td>",
+        "    <td>{{ i }}m</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "{% for i in range(100, 250, 50) %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['red', 'yellow'], (i - 50) / 250) })|raw }}</td>",
+        "    <td>{{ i }}m</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': 'yellow' })|raw }}</td>",
+        "    <td>≥300m</td>",
+        "  </tr>",
+        "</table>",
+        "</div>",
+        "",
+        "<div style='display: inline-block'>",
+        "{{ tagTrans('building:levels') }}",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': '#7f7f7f' })|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(0, 12, 3) %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['green', 'red'], (i * 3.5) / 50) })|raw }}</td>",
+        "    <td>{{ i }}</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "{% for i in range(15, 84, 15) %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['red', 'yellow'], (i * 3.5 - 50) / 250) })|raw }}</td>",
+        "    <td>{{ i }}</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({ 'fillColor': 'yellow' })|raw }}</td>",
+        "    <td>≥85</td>",
+        "  </tr>",
+        "</table>",
+        "",
+        "</div>"
+    ]
+}

From 1147a67d8319f621f610dcf39addeb1bab1d8c07 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 14 Aug 2018 06:19:46 +0200
Subject: [PATCH 009/108] Re-organize infrastructure/energy; Rename
 power->electric_power

---
 power.json => electric_power.json |  4 ++--
 index.json                        | 18 ++++++++++++++----
 2 files changed, 16 insertions(+), 6 deletions(-)
 rename power.json => electric_power.json (96%)

diff --git a/power.json b/electric_power.json
similarity index 96%
rename from power.json
rename to electric_power.json
index b833d324d..029fac540 100644
--- a/power.json
+++ b/electric_power.json
@@ -3,8 +3,8 @@
     "name": {
         "ast": "Enerxía",
         "cs": "Elektřina",
-        "de": "Energie",
-        "en": "Power",
+        "de": "Elektrischer Strom",
+        "en": "Electric Power",
         "et": "Elekter",
         "fr": "Énergie",
         "hu": "Áramellátás",
diff --git a/index.json b/index.json
index 5c4104e52..acb6252e9 100644
--- a/index.json
+++ b/index.json
@@ -235,10 +235,20 @@
                     "id": "military"
                 },
                 {
-                    "id": "power"
-                },
-                {
-                    "id": "fossil-energy"
+                    "id": "energy",
+                    "type": "index",
+                    "name": {
+                        "en": "Energy",
+                        "de": "Energie"
+                    },
+                    "subCategories": [
+                        {
+                            "id": "electric_power"
+                        },
+                        {
+                            "id": "fossil-energy"
+                        }
+                    ]
                 },
                 {
                     "id": "railway",

From 0d37e906c8fae4bd9e857ec6cac99f0d50c65928 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 24 Oct 2018 20:36:51 +0200
Subject: [PATCH 010/108] Split memorial from historic

---
 culture_religion.json |  3 ++
 historic.json         | 34 ++++++----------------
 memorial.json         | 65 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+), 26 deletions(-)
 create mode 100644 memorial.json

diff --git a/culture_religion.json b/culture_religion.json
index 2d68d9271..52cc1a5aa 100644
--- a/culture_religion.json
+++ b/culture_religion.json
@@ -28,6 +28,9 @@
         {
             "id": "historic"
         },
+        {
+            "id": "memorial"
+        },
         {
             "id": "religion"
         },
diff --git a/historic.json b/historic.json
index 8ab235da2..dab36a187 100644
--- a/historic.json
+++ b/historic.json
@@ -22,28 +22,22 @@
     "query": {
         "11": [
             "(",
-            "node[historic~\"^(castle|archaeological_site|battlefield|monument)$\"];",
-            "way[historic~\"^(castle|archaeological_site|battlefield|monument)$\"];",
-            "relation[historic~\"^(castle|archaeological_site|battlefield|monument)$\"];",
+            "node[historic~\"^(castle|archaeological_site|battlefield)$\"];",
+            "way[historic~\"^(castle|archaeological_site|battlefield)$\"];",
+            "relation[historic~\"^(castle|archaeological_site|battlefield)$\"];",
             ")"
         ],
         "14": [
             "(",
-            "node[historic];",
-            "way[historic];",
-            "relation[historic];",
+            "node[historic][historic!~\"^(memorial|monument)$\"];",
+            "way[historic][historic!~\"^(memorial|monument)$\"];",
+            "relation[historic][historic!~\"^(memorial|monument)$\"];",
             ")"
         ]
     },
     "feature": {
-        "pre": [
-            "{% set value = tags.historic %}",
-            "{% if const[tags.historic ~ ' memorial=' ~ tags.memorial] %}",
-            "  {% set value = tags.historic ~ ' memorial=' ~ tags.memorial %}",
-            "{% endif %}"
-        ],
-        "description": "{{ tagTransList('historic', value) }}",
-        "markerSign": "{{ const[value].sign|raw }}"
+        "description": "{{ tagTransList('historic', tags.historic) }}",
+        "markerSign": "{{ const[tags.historic].sign|raw }}"
     },
     "info": [
         "<table>",
@@ -79,18 +73,6 @@
         "aircraft": {
             "sign": "<img src='maki:airport'>",
             "zoom": 14
-        },
-        "memorial": {
-            "sign": "<span  style='position: relative; top: -2px;'><img src='maki:monument?size=11'></span>",
-            "zoom": 14
-        },
-        "memorial memorial=plaque": {
-            "sign": "",
-            "zoom": 14
-        },
-        "monument": {
-            "sign": "<img src='maki:monument?size=15'>",
-            "zoom": 11
         }
     }
 }
diff --git a/memorial.json b/memorial.json
new file mode 100644
index 000000000..666c93a5e
--- /dev/null
+++ b/memorial.json
@@ -0,0 +1,65 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Denkmäler",
+        "en": "Memorials"
+    },
+    "query": {
+        "11": [
+            "(",
+            "node[historic~\"^(monument)$\"];",
+            "way[historic~\"^(monument)$\"];",
+            "relation[historic~\"^(monument)$\"];",
+            ")"
+        ],
+        "14": [
+            "(",
+            "node[historic~\"^(memorial|monument)$\"];",
+            "way[historic~\"^(memorial|monument)$\"];",
+            "relation[historic~\"^(memorial|monument)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% set value = tags.historic %}",
+            "{% if const[tags.historic ~ ' memorial=' ~ tags.memorial] %}",
+            "  {% set value = tags.historic ~ ' memorial=' ~ tags.memorial %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTransList('historic', value) }}",
+        "markerSign": "{{ const[value].sign|raw }}"
+    },
+    "info": [
+        "<table>",
+        "{% for value, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>{{ tagTrans('historic', value) }}</td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "{% if 14 <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'></div></td>",
+        "    <td>{{ trans('other') }}</td>",
+        "  </tr>",
+        "{% endif %}",
+        "</table>"
+    ],
+    "const": {
+        "memorial": {
+            "sign": "<span  style='position: relative; top: -2px;'><img src='maki:monument?size=11'></span>",
+            "zoom": 14
+        },
+        "memorial memorial=plaque": {
+            "sign": "",
+            "zoom": 14
+        },
+        "monument": {
+            "sign": "<img src='maki:monument?size=15'>",
+            "zoom": 11
+        }
+    }
+}

From 979714e92cc73760d992a9462e35c38e1afc7356 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 24 Oct 2018 21:29:12 +0200
Subject: [PATCH 011/108] Memorial: use "historic=memorial memorial=*" (or
 alias memorial:type=*) as description

---
 memorial.json | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/memorial.json b/memorial.json
index 666c93a5e..117785c57 100644
--- a/memorial.json
+++ b/memorial.json
@@ -23,8 +23,10 @@
     "feature": {
         "pre": [
             "{% set value = tags.historic %}",
-            "{% if const[tags.historic ~ ' memorial=' ~ tags.memorial] %}",
+            "{% if tags.historic == 'memorial' and tags.memorial %}",
             "  {% set value = tags.historic ~ ' memorial=' ~ tags.memorial %}",
+            "{% elseif tags.historic == 'memorial' and attribute(tags, 'memorial:type') %}",
+            "  {% set value = tags.historic ~ ' memorial=' ~ attribute(tags, 'memorial:type') %}",
             "{% endif %}"
         ],
         "description": "{{ tagTransList('historic', value) }}",

From 2564cbd9efca9436dcb546ad152be5a81811efa6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 24 Oct 2018 22:21:51 +0200
Subject: [PATCH 012/108] historic/religion: move wayside_cross/wayside_shrine
 to religion

---
 historic.json |  6 +++---
 religion.json | 15 +++++++++++++++
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/historic.json b/historic.json
index dab36a187..e69ce8b0f 100644
--- a/historic.json
+++ b/historic.json
@@ -29,9 +29,9 @@
         ],
         "14": [
             "(",
-            "node[historic][historic!~\"^(memorial|monument)$\"];",
-            "way[historic][historic!~\"^(memorial|monument)$\"];",
-            "relation[historic][historic!~\"^(memorial|monument)$\"];",
+            "node[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine)$\"];",
+            "way[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine)$\"];",
+            "relation[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine)$\"];",
             ")"
         ]
     },
diff --git a/religion.json b/religion.json
index 967b59ed2..c5b12fcd6 100644
--- a/religion.json
+++ b/religion.json
@@ -27,6 +27,18 @@
             "way[landuse~\"^(cemetery)$\"];",
             "relation[landuse~\"^(cemetery)$\"];",
             ")"
+        ],
+        "14": [
+            "(",
+            "node[amenity~\"^(place_of_worship|grave_yard|crematorium)$\"];",
+            "way[amenity~\"^(place_of_worship|grave_yard|crematorium)$\"];",
+            "relation[amenity~\"^(place_of_worship|grave_yard|crematorium)$\"];",
+            "way[landuse~\"^(cemetery)$\"];",
+            "relation[landuse~\"^(cemetery)$\"];",
+            "node[historic~\"^wayside_(cross|shrine)$\"];",
+            "way[historic~\"^wayside_(cross|shrine)$\"];",
+            "relation[historic~\"^wayside_(cross|shrine)$\"];",
+            ")"
         ]
     },
     "feature": {
@@ -34,6 +46,9 @@
             "{% if tags.landuse == 'cemetery' %}",
             "{% set key = 'landuse' %}",
             "{% set value = tags.landuse %}",
+            "{% elseif tags.historic == 'wayside_cross' or tags.historic == 'wayside_shrine' %}",
+            "{% set key = 'historic' %}",
+            "{% set value = tags.historic %}",
             "{% else %}",
             "{% set key = 'amenity' %}",
             "{% set value = tags.amenity %}",

From 8261dedec9b6bbe1e88cb950fdcbace9fcb2247e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 15 Aug 2018 21:36:08 +0200
Subject: [PATCH 013/108] Split fossil-energy in coal resp oil_gas

---
 coal.json    | 35 ++++++++++++++++++++++++++++++
 index.json   |  5 ++++-
 oil_gas.json | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 99 insertions(+), 1 deletion(-)
 create mode 100644 coal.json
 create mode 100644 oil_gas.json

diff --git a/coal.json b/coal.json
new file mode 100644
index 000000000..1ac92b17d
--- /dev/null
+++ b/coal.json
@@ -0,0 +1,35 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Kohle",
+        "en": "Coal"
+    },
+    "query": {
+        "11": [
+            "(",
+            "node[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "relation[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "node[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal)(|;.*)$\"];",
+            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal)(|;.*)$\"];",
+            "node[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];",
+            "way[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];",
+            "relation[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": [
+            "{% if tags.man_made == 'pipeline' %}",
+            "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})",
+            "{% elseif tags.man_made %}",
+            "{{ tagTrans('man_made', tags.man_made) }}",
+            "{% elseif tags.landuse == 'industrial' %}",
+            "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
+            "{% endif %}"
+        ],
+        "markerSymbol": null
+    }
+}
diff --git a/index.json b/index.json
index acb6252e9..ec3deced8 100644
--- a/index.json
+++ b/index.json
@@ -246,7 +246,10 @@
                             "id": "electric_power"
                         },
                         {
-                            "id": "fossil-energy"
+                            "id": "coal"
+                        },
+                        {
+                            "id": "oil_gas"
                         }
                     ]
                 },
diff --git a/oil_gas.json b/oil_gas.json
new file mode 100644
index 000000000..6ce7d9ae6
--- /dev/null
+++ b/oil_gas.json
@@ -0,0 +1,60 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Erdgas",
+        "en": "Natural gas"
+    },
+    "query": {
+        "11": [
+            "(",
+            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
+            "way[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
+            "relation[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
+            "way[waterway=offshore_field];",
+            "relation[waterway=offshore_field];",
+            "node[man_made~\"^(offshore_platform)$\"];",
+            "way[man_made~\"^(offshore_platform)$\"];",
+            "relation[man_made~\"^(offshore_platform)$\"];",
+            "node[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "way[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "relation[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            ")"
+        ],
+        "13": [
+          "(",
+            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[landuse=industrial][industrial~\"^(|.*;)(oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
+            "way[landuse=industrial][industrial~\"^(|.*;)(oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
+            "relation[landuse=industrial][industrial~\"^(|.*;)(oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
+            "way[waterway=offshore_field];",
+            "relation[waterway=offshore_field];",
+            "node[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
+            "node[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "way[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
+            "way[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)(|;.*)$\"];",
+            "relation[man_made~\"^(storage_tank)$\"][contents~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "way[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "relation[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": [
+            "{% if tags.man_made == 'pipeline' %}",
+            "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})",
+            "{% elseif tags.man_made %}",
+            "{{ tagTrans('man_made', tags.man_made) }}",
+            "{% elseif tags.landuse == 'industrial' %}",
+            "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
+            "{% elseif tags.waterway == 'offshore_field' %}",
+            "{{ tagTrans('waterway', tags.waterway) }}",
+            "{% endif %}"
+        ],
+        "markerSymbol": null
+    }
+}

From dd826ba6e6f9a0ccbff8ed7f0e6fe40756aa1cfd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 25 Oct 2018 19:21:44 +0200
Subject: [PATCH 014/108] coal, oil_gas: improvements

---
 coal.json    |  4 ++++
 oil_gas.json | 10 ++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/coal.json b/coal.json
index 1ac92b17d..ff1191343 100644
--- a/coal.json
+++ b/coal.json
@@ -26,6 +26,10 @@
             "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})",
             "{% elseif tags.man_made %}",
             "{{ tagTrans('man_made', tags.man_made) }}",
+            "{% elseif tags.power == 'plant' %}",
+            "{{ tagTrans('power', 'plant') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
+            "{% elseif tags.landuse == 'quarry' %}",
+            "{{ tagTrans('landuse', tags.landuse) }} {% if tags.resource %}({{ tagTrans('resource', tags.resource) }}){% endif %}",
             "{% elseif tags.landuse == 'industrial' %}",
             "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
             "{% endif %}"
diff --git a/oil_gas.json b/oil_gas.json
index 6ce7d9ae6..96aa12601 100644
--- a/oil_gas.json
+++ b/oil_gas.json
@@ -1,8 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "de": "Erdgas",
-        "en": "Natural gas"
+        "de": "Erdöl und Erdgas",
+        "en": "Petroleum and natural gas"
     },
     "query": {
         "11": [
@@ -49,10 +49,12 @@
             "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})",
             "{% elseif tags.man_made %}",
             "{{ tagTrans('man_made', tags.man_made) }}",
-            "{% elseif tags.landuse == 'industrial' %}",
-            "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
+            "{% elseif tags.power == 'plant' %}",
+            "{{ tagTrans('power', 'plant') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
             "{% elseif tags.waterway == 'offshore_field' %}",
             "{{ tagTrans('waterway', tags.waterway) }}",
+            "{% elseif tags.landuse == 'industrial' %}",
+            "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
             "{% endif %}"
         ],
         "markerSymbol": null

From aba940bc6e97f844d4cb17f5abac210c2f1cb83e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 08:13:24 +0200
Subject: [PATCH 015/108] car_routes: improve refs

- natsort refs
- remove duplicate refs
- split&trim refs from way
---
 car_routes.json | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/car_routes.json b/car_routes.json
index f30b89eba..fb623aae8 100644
--- a/car_routes.json
+++ b/car_routes.json
@@ -22,7 +22,9 @@
             "{% set refs = [] %}",
             "{% set color = '#d41d8c' %}",
             "{% if tags.ref %}",
-            "  {% set refs = refs|merge([ tags.ref ]) %}",
+            "  {% for ref in tags.ref|split(';') %}",
+            "    {% set refs = refs|merge([ ref|trim ]) %}",
+            "  {% endfor %}",
             "{% endif %}",
             "",
             "{% for master in masters %}",
@@ -32,7 +34,9 @@
             "  {% if master.tags.ref %}",
             "    {% set refs = refs|merge([ master.tags.ref ]) %}",
             "  {% endif %}",
-            "{% endfor %}"
+            "{% endfor %}",
+            "",
+            "{% set refs = refs|unique|natsort({ insensitive: true }) %}"
         ],
         "body": [
             "<h4>Routes</h4>",

From 60a90b2725df2d24b78eb24796911695d1f6afa3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 08:18:33 +0200
Subject: [PATCH 016/108] =?UTF-8?q?All=20routes:=20join=20route=20refs=20b?=
 =?UTF-8?q?y=20'=20=C2=B7=20'?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 car_routes.json     | 2 +-
 cycle_routes.json   | 2 +-
 hiking_routes.json  | 2 +-
 mtb-routes.json     | 2 +-
 pt.json             | 4 ++--
 railway-routes.json | 2 +-
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/car_routes.json b/car_routes.json
index fb623aae8..a31247e8e 100644
--- a/car_routes.json
+++ b/car_routes.json
@@ -56,7 +56,7 @@
             "color": "{{ color }}",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/cycle_routes.json b/cycle_routes.json
index c12c47d7e..3844eec18 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -58,7 +58,7 @@
             "color": "{{ const[network].color }}",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/hiking_routes.json b/hiking_routes.json
index c553c1384..3bf40d9ca 100644
--- a/hiking_routes.json
+++ b/hiking_routes.json
@@ -57,7 +57,7 @@
             "color": "{{ const[network].color }}",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/mtb-routes.json b/mtb-routes.json
index 08d1270c2..02d2c7137 100644
--- a/mtb-routes.json
+++ b/mtb-routes.json
@@ -44,7 +44,7 @@
             "color": "#007fff",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/pt.json b/pt.json
index 86ec0ee2b..f4351c73e 100644
--- a/pt.json
+++ b/pt.json
@@ -123,12 +123,12 @@
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
         "listStopsTitle": "{{ tags.name|default(stopName)|default(id) }}",
-        "listStopsDescription": "{{ refs|join(' ') }}",
+        "listStopsDescription": "{{ refs|join(' · ') }}",
         "listRoutesExclude": "true",
         "style:way": {
             "width": "3",
             "color": "{{ color|default('#ff0000') }}",
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/railway-routes.json b/railway-routes.json
index 874589567..f06a1d373 100644
--- a/railway-routes.json
+++ b/railway-routes.json
@@ -51,7 +51,7 @@
             "color": "{{ color }}",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"

From 7c98911738ac7bbc284f320ea7fc4ed47240246c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 11:01:16 +0200
Subject: [PATCH 017/108] pt: show 'loading' on stops when not fully loaded yet
 or 'unknown' when unnamed (or can't be referenced from not loaded stop_area)

---
 pt.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pt.json b/pt.json
index f4351c73e..46451cf37 100644
--- a/pt.json
+++ b/pt.json
@@ -60,7 +60,7 @@
             "<h4>Stops</h4><ul>",
             "{% for member in members %}",
             "{% if member.tags.highway == 'bus_stop' or member.tags.amenity == 'bus_station' or member.tags.amenity == 'ferry_terminal' or member.tags.railway == 'tram_stop' or member.tags.railway == 'halt' or member.tags.railway == 'station' or member.tags.aerialway == 'station' or member.tags.public_transport == 'stop_position' or member.role|slice(-4) == 'stop' %}",
-            "<li data-object='{{ member.id }}' data-sublayer='member'><b>{{ member.tags.name|default(member.id) }}</li>",
+            "<li data-object='{{ member.id }}' data-sublayer='member'><b>{% if member.tags %}{{ member.tags.name|default(trans('unknown')) }}{% else %}<i>{{ trans('loading') }}</i>{% endif %}</li>",
             "{% endif %}",
             "{% endfor %}",
             "</ul>"
@@ -122,7 +122,7 @@
         "listStopsMarkerSign": null,
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
-        "listStopsTitle": "{{ tags.name|default(stopName)|default(id) }}",
+        "listStopsTitle": "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}",
         "listStopsDescription": "{{ refs|join(' · ') }}",
         "listRoutesExclude": "true",
         "style:way": {

From a1c25cfe7691b973a66e25aca79e3e4933feac1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 19:27:57 +0200
Subject: [PATCH 018/108] railway-maxspeed: new category

---
 index.json            |   3 ++
 railway-maxspeed.json | 114 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 117 insertions(+)
 create mode 100644 railway-maxspeed.json

diff --git a/index.json b/index.json
index c3eb88e90..3438f798c 100644
--- a/index.json
+++ b/index.json
@@ -277,6 +277,9 @@
                         {
                             "id": "railway-electrification"
                         },
+                        {
+                            "id": "railway-maxspeed"
+                        },
                         {
                             "id": "railway-routes"
                         }
diff --git a/railway-maxspeed.json b/railway-maxspeed.json
new file mode 100644
index 000000000..261bdcf5b
--- /dev/null
+++ b/railway-maxspeed.json
@@ -0,0 +1,114 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Höchstgeschwindigkeiten",
+        "en": "Maxspeed",
+        "fr": "Limites de vitesse",
+        "hu": "Sebességkorlátozás",
+        "pt": "Velocidade máxima",
+        "pt-br": "Velocidade máxima"
+    },
+    "query": {
+        "11": "way[railway=rail][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'][usage~'^(main|branch)$'];",
+        "14": "way[railway][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'];"
+    },
+    "feature": {
+        "pre": [
+            "{% if tags.maxspeed is not defined %}",
+            "{% set maxspeedKmh = null %}",
+            "{% set maxspeed = null %}",
+            "{% set unit = null %}",
+            "{% else %}",
+            "",
+            "{% if tags.maxspeed|matches(\"^[0-9]+$\") %}",
+            "{% set maxspeedKmh = tags.maxspeed %}",
+            "{% set maxspeed = tags.maxspeed %}",
+            "{% set unit = \"km/h\" %}",
+            "{% endif %}",
+            "",
+            "",
+            "{% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}",
+            "{% if m %}",
+            "{% set maxspeedKmh = m[1] * 1.60934 %}",
+            "{% set maxspeed = m[1] %}",
+            "{% set unit = \"mph\" %}",
+            "{% endif %}",
+            "",
+            "{% endif %}",
+            "",
+            "{% if not maxspeedKmh %}",
+            "{% set color = \"#404040\" %}",
+            "{% else %}",
+            "{% set color = colorInterpolate(const.colorMap, (maxspeedKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if maxspeed %}",
+            "<span style='color: {{ color }}'>{{ maxspeed }} {{ unit }}</span>",
+            "{% elseif tags.maxspeed %}",
+            "{{ tags.maxspeed }}",
+            "{% else %}",
+            "{{ trans('unknown') }}",
+            "{% endif %}"
+        ],
+        "markerSymbol": null,
+        "listMarkerSymbol": "line",
+        "style": {
+            "width": "3",
+            "color": "{{ color }}"
+        }
+    },
+    "const": {
+        "colorMap": [
+            "#00af00",
+            "#ff7f00",
+            "#ff0000",
+            "#af00af"
+        ],
+        "highestColorSpeed": 300,
+        "offsetColorSpeed": 20
+    },
+    "info": [
+        "<div style='display: inline-block'>",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({}))|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(25, 280, 25) %}",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": i }))|raw }}</td>",
+        "    <td>{{ i }}km/h</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": 300 }))|raw }}</td>",
+        "    <td>≥300km/h</td>",
+        "  </tr>",
+        "</table>",
+        "</div>",
+        "",
+        "<div style='display: inline-block'>",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({}))|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(15, 150, 15) %}",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": (i * 1.60934)|round }))|raw }}</td>",
+        "    <td>{{ i }}mph</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": (175 * 1.60934)|round }))|raw }}</td>",
+        "    <td>175mph</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": (200 * 1.60934)|round }))|raw }}</td>",
+        "    <td>≥200mph</td>",
+        "  </tr>",
+        "</table>",
+        "</div>"
+    ]
+}

From e6838b8e2de4d2a3a5d9d9eb6702c1b43be92e75 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 19:36:59 +0200
Subject: [PATCH 019/108] car_maxspeed/railway-maxspeed: show speed (w/o unit)
 as label

---
 car_maxspeed.json     | 5 ++++-
 railway-maxspeed.json | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/car_maxspeed.json b/car_maxspeed.json
index 0b50d6037..b2249f360 100644
--- a/car_maxspeed.json
+++ b/car_maxspeed.json
@@ -57,7 +57,10 @@
         "listMarkerSymbol": "line",
         "style": {
             "width": "3",
-            "color": "{{ color }}"
+            "color": "{{ color }}",
+            "text": "{{ maxspeed }}           ",
+            "textRepeat": "1",
+            "textFontWeight": "bold"
         }
     },
     "const": {
diff --git a/railway-maxspeed.json b/railway-maxspeed.json
index 261bdcf5b..9ce73db86 100644
--- a/railway-maxspeed.json
+++ b/railway-maxspeed.json
@@ -55,7 +55,10 @@
         "listMarkerSymbol": "line",
         "style": {
             "width": "3",
-            "color": "{{ color }}"
+            "color": "{{ color }}",
+            "text": "{{ maxspeed }}          ",
+            "textRepeat": "1",
+            "textFontWeight": "bold"
         }
     },
     "const": {

From 3122a83cbe7f66c0f04d1fbdec4e24b66e201ec8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 20:32:16 +0200
Subject: [PATCH 020/108] railway-maxspeed: prefix name by railway (DE/EN)

---
 railway-maxspeed.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/railway-maxspeed.json b/railway-maxspeed.json
index 9ce73db86..10fb8a45f 100644
--- a/railway-maxspeed.json
+++ b/railway-maxspeed.json
@@ -1,8 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "de": "Höchstgeschwindigkeiten",
-        "en": "Maxspeed",
+        "de": "Eisenbahn Höchstgeschwindigkeiten",
+        "en": "Railway Maxspeed",
         "fr": "Limites de vitesse",
         "hu": "Sebességkorlátozás",
         "pt": "Velocidade máxima",

From 0ca6f228a00cde0fa69fc38a09954f7e6c1bc311 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 20:36:20 +0200
Subject: [PATCH 021/108] remove fossil-energy (has been split into oil_gas and
 coal)

---
 fossil-energy.json | 71 ----------------------------------------------
 1 file changed, 71 deletions(-)
 delete mode 100644 fossil-energy.json

diff --git a/fossil-energy.json b/fossil-energy.json
deleted file mode 100644
index cb4714e68..000000000
--- a/fossil-energy.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
-    "type": "overpass",
-    "name": {
-        "de": "Fossile Energie",
-        "en": "Fossil energy"
-    },
-    "query": {
-        "11": [
-            "(",
-            "node[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "way[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "relation[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "node[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "way[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
-            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
-            "node[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
-            "way[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
-            "relation[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
-            "way[waterway=offshore_field];",
-            "relation[waterway=offshore_field];",
-            "node[man_made~\"^(offshore_platform)$\"];",
-            "way[man_made~\"^(offshore_platform)$\"];",
-            "relation[man_made~\"^(offshore_platform)$\"];",
-            "node[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
-            "way[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
-            "relation[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
-            ")"
-        ],
-        "13": [
-            "(",
-            "node[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "way[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "relation[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "node[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "way[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "relation[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
-            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
-            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase)(|;.*)$\"];",
-            "node[landuse=industrial][industrial~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
-            "way[landuse=industrial][industrial~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
-            "relation[landuse=industrial][industrial~\"^(|.*;)(coal|oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
-            "way[waterway=offshore_field];",
-            "relation[waterway=offshore_field];",
-            "node[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
-            "node[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
-            "way[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
-            "way[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
-            "relation[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)(|;.*)$\"];",
-            "relation[man_made~\"^(storage_tank)$\"][contents~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
-            "node[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
-            "way[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
-            "relation[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(coal|oil|gas|diesel|gasoline)(|;.*)$\"];",
-            ")"
-        ]
-    },
-    "feature": {
-        "description": [
-            "{% if tags.man_made == 'pipeline' %}",
-            "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})",
-            "{% elseif tags.man_made %}",
-            "{{ tagTrans('man_made', tags.man_made) }}",
-            "{% elseif tags.landuse == 'industrial' %}",
-            "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
-            "{% elseif tags.waterway == 'offshore_field' %}",
-            "{{ tagTrans('waterway', tags.waterway) }}",
-            "{% endif %}"
-        ],
-        "markerSymbol": null
-    }
-}

From fd3659240da8c6d122886cb60ebad06688d2c97b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 20:39:46 +0200
Subject: [PATCH 022/108] Make new categories translateable

---
 lang/ast.json      | 8 +++++++-
 lang/ca.json       | 8 +++++++-
 lang/cs.json       | 8 +++++++-
 lang/de.json       | 8 +++++++-
 lang/el.json       | 8 +++++++-
 lang/en.json       | 8 +++++++-
 lang/es.json       | 8 +++++++-
 lang/et.json       | 8 +++++++-
 lang/fr.json       | 8 +++++++-
 lang/hu.json       | 8 +++++++-
 lang/it.json       | 8 +++++++-
 lang/ja.json       | 8 +++++++-
 lang/nl.json       | 8 +++++++-
 lang/pl.json       | 8 +++++++-
 lang/pt-br.json    | 8 +++++++-
 lang/pt.json       | 8 +++++++-
 lang/ro.json       | 8 +++++++-
 lang/ru.json       | 8 +++++++-
 lang/template.json | 8 +++++++-
 lang/uk.json       | 8 +++++++-
 20 files changed, 140 insertions(+), 20 deletions(-)

diff --git a/lang/ast.json b/lang/ast.json
index c2e4e16c6..bbf1fe4f9 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Comunicaciones",
     "category:construction": "Sitios d'obres",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Servicios educativos",
+    "category:electric_power": "Enerxía",
     "category:emergency": "Servicios d'emerxencia",
+    "category:energy": "",
     "category:financial": "Dineru",
     "category:gastro": "Gastronomía",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "Accesu a Internet",
     "category:leisure": "Recréu",
     "category:leisure_sport_shopping": "Recréu, deportes y compres",
+    "category:memorial": "",
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "Formaciones naturales",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Otres",
     "category:outdoor": "",
     "category:phone": "Teléfonos",
@@ -39,7 +45,6 @@
     "category:places_geo": "Llugares",
     "category:playgrounds": "Xuegos infantiles",
     "category:post": "Corréu",
-    "category:power": "Enerxía",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Paraes y estaciones",
@@ -48,6 +53,7 @@
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Relixón",
     "category:residential": "Zones residenciales",
diff --git a/lang/ca.json b/lang/ca.json
index 8be27ba28..817dabdd5 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Comunicacions",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "",
+    "category:electric_power": "",
     "category:emergency": "Serveis d'emergència",
+    "category:energy": "",
     "category:financial": "",
     "category:gastro": "",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "Accés a Internet",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Oci, esport i compres",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +45,6 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
@@ -48,6 +53,7 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
     "category:residential": "",
diff --git a/lang/cs.json b/lang/cs.json
index 05c221ec9..3983a2564 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Komunikace",
     "category:construction": "Staveniště",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Vzdělávací služby",
+    "category:electric_power": "Elektřina",
     "category:emergency": "Pohotovostní služby",
+    "category:energy": "",
     "category:financial": "Finanční služby",
     "category:gastro": "Stravování",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "Přístup k internetu",
     "category:leisure": "Volný čas",
     "category:leisure_sport_shopping": "Volný čas, sporty a nákupy",
+    "category:memorial": "",
     "category:military": "Vojenské",
     "category:mtb-routes": "",
     "category:natural": "Přírodní úkazy",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Jiné",
     "category:outdoor": "",
     "category:phone": "Telefony",
@@ -39,7 +45,6 @@
     "category:places_geo": "Sídla",
     "category:playgrounds": "Hřiště",
     "category:post": "Poštovní služby",
-    "category:power": "Elektřina",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Zastávky & Stanice",
@@ -48,6 +53,7 @@
     "category:railway": "Železnice",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religion",
     "category:residential": "Obytné oblasti",
diff --git a/lang/de.json b/lang/de.json
index 64e096f93..e48999236 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "Höchstgeschwindigkeiten",
     "category:car_routes": "",
     "category:children": "Einrichtungen für Kinder",
+    "category:coal": "Kohle",
     "category:communication": "Kommunikation",
     "category:construction": "Baustellen",
     "category:craft": "Handwerk",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "Einrichtungen",
     "category:cycle_routes": "Radrouten",
     "category:education": "Bildungseinrichtungen",
+    "category:electric_power": "Elektrischer Strom",
     "category:emergency": "Notfalldienste",
+    "category:energy": "Energie",
     "category:financial": "Finanzen",
     "category:gastro": "Gastronomie",
     "category:gastro-smoking": "Rauchfreie Gastronomie",
@@ -29,9 +32,12 @@
     "category:internet": "Internetzugang",
     "category:leisure": "Freizeit",
     "category:leisure_sport_shopping": "Freizeit, Sport und Einkauf",
+    "category:memorial": "Denkmäler",
     "category:military": "Militär",
     "category:mtb-routes": "",
     "category:natural": "Geographische Objekte",
+    "category:network": "",
+    "category:oil_gas": "Erdöl und Erdgas",
     "category:other": "Andere",
     "category:outdoor": "Freiluftaktivitäten",
     "category:phone": "Telekommunikation",
@@ -39,7 +45,6 @@
     "category:places_geo": "Orte",
     "category:playgrounds": "Spielplätze",
     "category:post": "Post",
-    "category:power": "Energie",
     "category:pt": "ÖV Karte",
     "category:pt:routes": "Routen",
     "category:pt:stops": "Haltestellen",
@@ -48,6 +53,7 @@
     "category:railway": "Eisenbahn",
     "category:railway-electrification": "Eisenbahn Elektrifizierung",
     "category:railway-infrastructure": "Eisenbahn Infrastruktur",
+    "category:railway-maxspeed": "Eisenbahn Höchstgeschwindigkeiten",
     "category:railway-routes": "",
     "category:religion": "Religion",
     "category:residential": "Wohngebiete",
diff --git a/lang/el.json b/lang/el.json
index 8dd6d13ee..c25f63f47 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Επικοινωνίες",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Υπηρεσίες Εκπαίδευσης",
+    "category:electric_power": "",
     "category:emergency": "Υπηρεσίες Έκτακτης Ανάγκης",
+    "category:energy": "",
     "category:financial": "Χρήμα",
     "category:gastro": "Γαστρονομία",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "",
     "category:leisure": "Αναψυχή",
     "category:leisure_sport_shopping": "Αναψυχή, Αθλητισμός και Αγορές",
+    "category:memorial": "",
     "category:military": "Στρατιωτικό",
     "category:mtb-routes": "",
     "category:natural": "Φυσικοί Σχηματισμοί",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +45,6 @@
     "category:places_geo": "Μέρη",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Στάσεις & Σταθμοί",
@@ -48,6 +53,7 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Θρησκεία",
     "category:residential": "Περιοχές Κατοικίας",
diff --git a/lang/en.json b/lang/en.json
index 302245a4a..46851f26c 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "Maxspeed",
     "category:car_routes": "Car routes",
     "category:children": "Children amenities",
+    "category:coal": "Coal",
     "category:communication": "Communication",
     "category:construction": "Construction Sites",
     "category:craft": "Craft",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "Amenities",
     "category:cycle_routes": "Cycle Routes",
     "category:education": "Educational Services",
+    "category:electric_power": "Electric Power",
     "category:emergency": "Emergency Services",
+    "category:energy": "Energy",
     "category:financial": "Financial",
     "category:gastro": "Gastronomy",
     "category:gastro-smoking": "Smokefree Gastronomy",
@@ -29,9 +32,12 @@
     "category:internet": "Internet access",
     "category:leisure": "Leisure",
     "category:leisure_sport_shopping": "Leisure, Sport and Shopping",
+    "category:memorial": "Memorials",
     "category:military": "Military",
     "category:mtb-routes": "Mountain bike routes",
     "category:natural": "Natural Formations",
+    "category:network": "Network infrastructure",
+    "category:oil_gas": "Petroleum and natural gas",
     "category:other": "Other",
     "category:outdoor": "Outdoor activities",
     "category:phone": "Phone",
@@ -39,7 +45,6 @@
     "category:places_geo": "Places",
     "category:playgrounds": "Playground",
     "category:post": "Post",
-    "category:power": "Power",
     "category:pt": "Public transport map",
     "category:pt:routes": "Routes",
     "category:pt:stops": "Stops & Stations",
@@ -48,6 +53,7 @@
     "category:railway": "Railway",
     "category:railway-electrification": "Railway electrification",
     "category:railway-infrastructure": "Railway infrastructure",
+    "category:railway-maxspeed": "Railway Maxspeed",
     "category:railway-routes": "Railway Routes",
     "category:religion": "Religion",
     "category:residential": "Residential Areas",
diff --git a/lang/es.json b/lang/es.json
index 98640c8f3..853d88bc2 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "",
+    "category:electric_power": "",
     "category:emergency": "Servicios de emergencia",
+    "category:energy": "",
     "category:financial": "",
     "category:gastro": "",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "Acceso a Internet",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Ocio, deporte y compras",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +45,6 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Paradas y estaciones",
@@ -48,6 +53,7 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
     "category:residential": "",
diff --git a/lang/et.json b/lang/et.json
index 32fb0544b..2a1d43e4c 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Kommunikatsioon",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Haridusteenused",
+    "category:electric_power": "Elekter",
     "category:emergency": "Hädaabi teenused",
+    "category:energy": "",
     "category:financial": "",
     "category:gastro": "",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Vaba aeg, sport ja ostmine",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Ülejäänud",
     "category:outdoor": "",
     "category:phone": "Telefon",
@@ -39,7 +45,6 @@
     "category:places_geo": "Kohad",
     "category:playgrounds": "Mänguväljak",
     "category:post": "",
-    "category:power": "Elekter",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
@@ -48,6 +53,7 @@
     "category:railway": "Raudtee",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religioon",
     "category:residential": "Elamupiirkonnad",
diff --git a/lang/fr.json b/lang/fr.json
index 6fec0e04c..93d167cc1 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "Limites de vitesse",
     "category:car_routes": "",
     "category:children": "Équipements pour enfants",
+    "category:coal": "",
     "category:communication": "Communication",
     "category:construction": "Constructions",
     "category:craft": "Artisanat",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "Équipements vélo",
     "category:cycle_routes": "Itinéraires vélo",
     "category:education": "Éducation",
+    "category:electric_power": "Énergie",
     "category:emergency": "Services d'urgence",
+    "category:energy": "",
     "category:financial": "Finance",
     "category:gastro": "Restauration",
     "category:gastro-smoking": "Restauration sans tabac",
@@ -29,9 +32,12 @@
     "category:internet": "Internet",
     "category:leisure": "Loisirs",
     "category:leisure_sport_shopping": "Loisirs",
+    "category:memorial": "",
     "category:military": "Militaire",
     "category:mtb-routes": "Itinéraires de VTT",
     "category:natural": "Éléments naturels",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Autres",
     "category:outdoor": "Activités de plein air",
     "category:phone": "Téléphone",
@@ -39,7 +45,6 @@
     "category:places_geo": "Lieux",
     "category:playgrounds": "Jeux pour enfants",
     "category:post": "",
-    "category:power": "Énergie",
     "category:pt": "",
     "category:pt:routes": "Lignes",
     "category:pt:stops": "Arrêts/Stops, Stations",
@@ -48,6 +53,7 @@
     "category:railway": "Chemins de fer",
     "category:railway-electrification": "Puissance électrique ferroviaire",
     "category:railway-infrastructure": "Infrastructure ferroviaire",
+    "category:railway-maxspeed": "Limites de vitesse",
     "category:railway-routes": "Lignes ferroviaires",
     "category:religion": "Religion",
     "category:residential": "Zones résidentielles",
diff --git a/lang/hu.json b/lang/hu.json
index 541d46f64..159590406 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "Sebességkorlátozás",
     "category:car_routes": "Főútvonalak",
     "category:children": "Gyermekek",
+    "category:coal": "",
     "category:communication": "Kommunikácó",
     "category:construction": "Építési terület",
     "category:craft": "Műhelyek",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "Kerékpáros létesítmények",
     "category:cycle_routes": "Kerékpáros útvonalak",
     "category:education": "Oktatás",
+    "category:electric_power": "Áramellátás",
     "category:emergency": "Vészhelyzet",
+    "category:energy": "",
     "category:financial": "Pénzügyek",
     "category:gastro": "Vendéglátás",
     "category:gastro-smoking": "Nem dohányzó vendéglátóhelyek",
@@ -29,9 +32,12 @@
     "category:internet": "Internetcsatlakozás",
     "category:leisure": "Szabadidő",
     "category:leisure_sport_shopping": "Szabadidő, sport és vásárlás",
+    "category:memorial": "",
     "category:military": "Katonai objektumok",
     "category:mtb-routes": "Hegyikerékpáros útvonalak",
     "category:natural": "Természeti képződmények",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Egyéb",
     "category:outdoor": "Szabadtéri tevékenységek",
     "category:phone": "Telefon",
@@ -39,7 +45,6 @@
     "category:places_geo": "Helyek",
     "category:playgrounds": "Játszóterek",
     "category:post": "Posta",
-    "category:power": "Áramellátás",
     "category:pt": "Tömegközlekedési térkép",
     "category:pt:routes": "Útvonalak",
     "category:pt:stops": "Megállók és állomások",
@@ -48,6 +53,7 @@
     "category:railway": "Vasút",
     "category:railway-electrification": "Vasút villamosítottsága",
     "category:railway-infrastructure": "Vasúti infrastruktúra",
+    "category:railway-maxspeed": "Sebességkorlátozás",
     "category:railway-routes": "Vasútvonalak",
     "category:religion": "Vallás",
     "category:residential": "Lakóövezetek",
diff --git a/lang/it.json b/lang/it.json
index 96517f0fb..7c62381d8 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Communicazioni",
     "category:construction": "Cantieri",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Istruzione",
+    "category:electric_power": "Energia",
     "category:emergency": "Servizi d'emergenza",
+    "category:energy": "",
     "category:financial": "Finanze",
     "category:gastro": "Gastronomia",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "",
     "category:leisure": "Tempo libero",
     "category:leisure_sport_shopping": "Tempo libero, sport e shopping",
+    "category:memorial": "",
     "category:military": "Militare",
     "category:mtb-routes": "",
     "category:natural": "Natura",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Altri",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +45,6 @@
     "category:places_geo": "Luoghi",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "Energia",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Stazioni e fermate",
@@ -48,6 +53,7 @@
     "category:railway": "Ferrovie",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religione",
     "category:residential": "Aree residenziali",
diff --git a/lang/ja.json b/lang/ja.json
index b1e963fed..0e5e62f62 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "交流",
     "category:construction": "工事中",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "教育サービス",
+    "category:electric_power": "電力",
     "category:emergency": "緊急サービス",
+    "category:energy": "",
     "category:financial": "金融",
     "category:gastro": "食べ物",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "インターネット接続",
     "category:leisure": "レジャー",
     "category:leisure_sport_shopping": "レジャー",
+    "category:memorial": "",
     "category:military": "軍事",
     "category:mtb-routes": "",
     "category:natural": "自然地層",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "その他",
     "category:outdoor": "",
     "category:phone": "電話",
@@ -39,7 +45,6 @@
     "category:places_geo": "場所",
     "category:playgrounds": "",
     "category:post": "郵便",
-    "category:power": "電力",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "停留所と駅",
@@ -48,6 +53,7 @@
     "category:railway": "鉄道",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "宗教",
     "category:residential": "住居エリア",
diff --git a/lang/nl.json b/lang/nl.json
index edb0a135e..8b1d6afad 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Communicatie",
     "category:construction": "Bouwterrein",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Onderwijs",
+    "category:electric_power": "Stroomvoorziening",
     "category:emergency": "Hulpdiensten",
+    "category:energy": "",
     "category:financial": "Financieel",
     "category:gastro": "Gastronomie",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "Internettoegang",
     "category:leisure": "Vrije tijd",
     "category:leisure_sport_shopping": "Vrije tijd, Sport en Winkelen",
+    "category:memorial": "",
     "category:military": "Militair",
     "category:mtb-routes": "",
     "category:natural": "Natuurlijke Formaties",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Andere",
     "category:outdoor": "",
     "category:phone": "Telefonie",
@@ -39,7 +45,6 @@
     "category:places_geo": "Plaatsen",
     "category:playgrounds": "",
     "category:post": "Post",
-    "category:power": "Stroomvoorziening",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Haltes en Stations",
@@ -48,6 +53,7 @@
     "category:railway": "Spoorwegen",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religie",
     "category:residential": "Woongebieden",
diff --git a/lang/pl.json b/lang/pl.json
index 45961b027..aced0df22 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Edukacyjne",
+    "category:electric_power": "",
     "category:emergency": "",
+    "category:energy": "",
     "category:financial": "Finasowe",
     "category:gastro": "Gastronomia",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Wypoczynek, Sport i Zakupy",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +45,6 @@
     "category:places_geo": "Miejsca",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Przystanki i Stacje",
@@ -48,6 +53,7 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
     "category:residential": "",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index a79642a33..10476d8b9 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "Velocidade máxima",
     "category:car_routes": "Rotas rodoviárias",
     "category:children": "Equipamentos infantis",
+    "category:coal": "",
     "category:communication": "Comunicação",
     "category:construction": "Terrenos vazios e obras",
     "category:craft": "Ofícios",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "Equipamentos",
     "category:cycle_routes": "Ciclorrotas",
     "category:education": "Educação",
+    "category:electric_power": "Energia",
     "category:emergency": "Emergência",
+    "category:energy": "",
     "category:financial": "Finanças",
     "category:gastro": "Gastronomia",
     "category:gastro-smoking": "Gastronomia sem fumo",
@@ -29,9 +32,12 @@
     "category:internet": "Acesso à Internet",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, esportes e compras",
+    "category:memorial": "",
     "category:military": "Militar",
     "category:mtb-routes": "Rotas mountain bike",
     "category:natural": "Formações naturais",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Outros",
     "category:outdoor": "Atividades ao ar livre",
     "category:phone": "Telefone",
@@ -39,7 +45,6 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parquinhos",
     "category:post": "Correios",
-    "category:power": "Energia",
     "category:pt": "Mapa de transporte público",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "Paradas e estações",
@@ -48,6 +53,7 @@
     "category:railway": "Ferrovia",
     "category:railway-electrification": "Eletrificação ferroviária",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
+    "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "Rotas ferroviárias",
     "category:religion": "Religião",
     "category:residential": "Áreas residenciais",
diff --git a/lang/pt.json b/lang/pt.json
index e055231cf..bc57099f6 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "Velocidade máxima",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Comunicação",
     "category:construction": "Locais de construção",
     "category:craft": "Artesanato",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "Ciclovias",
     "category:education": "Educação",
+    "category:electric_power": "Eletricidade",
     "category:emergency": "Emergência",
+    "category:energy": "",
     "category:financial": "Finanças",
     "category:gastro": "Restauração",
     "category:gastro-smoking": "Restauração livre de tabaco",
@@ -29,9 +32,12 @@
     "category:internet": "Acesso à Internet",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, desporto e compras",
+    "category:memorial": "",
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "Formações naturais",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Outros",
     "category:outdoor": "",
     "category:phone": "Telefone",
@@ -39,7 +45,6 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parques infantis",
     "category:post": "Correios",
-    "category:power": "Eletricidade",
     "category:pt": "",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "",
@@ -48,6 +53,7 @@
     "category:railway": "Linhas ferroviárias",
     "category:railway-electrification": "Eletrificação ferroviária",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
+    "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "",
     "category:religion": "Religião",
     "category:residential": "Áreas residenciais",
diff --git a/lang/ro.json b/lang/ro.json
index d79d6b096..dbc1e619a 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Comunicatii",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Servicii educatie",
+    "category:electric_power": "Energie",
     "category:emergency": "Servicii urgenta",
+    "category:energy": "",
     "category:financial": "Financiar",
     "category:gastro": "Gastronomie",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "Acces internet",
     "category:leisure": "Timp liber",
     "category:leisure_sport_shopping": "Timp liber, Sport si Cumparaturi",
+    "category:memorial": "",
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Altele",
     "category:outdoor": "",
     "category:phone": "Telefon",
@@ -39,7 +45,6 @@
     "category:places_geo": "Locuri",
     "category:playgrounds": "Loc de joaca",
     "category:post": "",
-    "category:power": "Energie",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
@@ -48,6 +53,7 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religie",
     "category:residential": "Zona rezidentiala",
diff --git a/lang/ru.json b/lang/ru.json
index 7a2a36f3c..0237ae35c 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Услуги связи",
     "category:construction": "Места строительства",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Образование",
+    "category:electric_power": "Энергетика",
     "category:emergency": "Экстренные службы",
+    "category:energy": "",
     "category:financial": "Финансы",
     "category:gastro": "Общепит",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "",
     "category:leisure": "Досуг",
     "category:leisure_sport_shopping": "Досуг",
+    "category:memorial": "",
     "category:military": "Вооружённые силы",
     "category:mtb-routes": "",
     "category:natural": "Природные образования",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Прочее",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +45,6 @@
     "category:places_geo": "Места",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "Энергетика",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Остановки и станции",
@@ -48,6 +53,7 @@
     "category:railway": "Железные дороги",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Религия",
     "category:residential": "Жилые районы",
diff --git a/lang/template.json b/lang/template.json
index 2f475441f..6f83241eb 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "",
+    "category:electric_power": "",
     "category:emergency": "",
+    "category:energy": "",
     "category:financial": "",
     "category:gastro": "",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +45,6 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
@@ -48,6 +53,7 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
     "category:residential": "",
diff --git a/lang/uk.json b/lang/uk.json
index e9778eb5c..7c67359c1 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -9,6 +9,7 @@
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Телекомунікації",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +18,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Освіта",
+    "category:electric_power": "",
     "category:emergency": "Швидка допомога",
+    "category:energy": "",
     "category:financial": "Фінанси",
     "category:gastro": "Гастрономія",
     "category:gastro-smoking": "",
@@ -29,9 +32,12 @@
     "category:internet": "",
     "category:leisure": "Дозвілля",
     "category:leisure_sport_shopping": "Дозвілля",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "Природне середовище",
+    "category:network": "",
+    "category:oil_gas": "",
     "category:other": "Інше",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +45,6 @@
     "category:places_geo": "Місцевість",
     "category:playgrounds": "Дитячий майданчик",
     "category:post": "",
-    "category:power": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Зупинки та станції",
@@ -48,6 +53,7 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Релігія",
     "category:residential": "Житлова зона",

From 1a1c093ef46da855dec53d4c81f866a6dfec13a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 26 Oct 2018 22:22:14 +0200
Subject: [PATCH 023/108] historic/religion: also show wayside_chapel in
 religion

---
 historic.json | 6 +++---
 religion.json | 8 ++++----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/historic.json b/historic.json
index e69ce8b0f..f09cf10fc 100644
--- a/historic.json
+++ b/historic.json
@@ -29,9 +29,9 @@
         ],
         "14": [
             "(",
-            "node[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine)$\"];",
-            "way[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine)$\"];",
-            "relation[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine)$\"];",
+            "node[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
+            "way[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
+            "relation[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
             ")"
         ]
     },
diff --git a/religion.json b/religion.json
index c5b12fcd6..ebdc2b66d 100644
--- a/religion.json
+++ b/religion.json
@@ -35,9 +35,9 @@
             "relation[amenity~\"^(place_of_worship|grave_yard|crematorium)$\"];",
             "way[landuse~\"^(cemetery)$\"];",
             "relation[landuse~\"^(cemetery)$\"];",
-            "node[historic~\"^wayside_(cross|shrine)$\"];",
-            "way[historic~\"^wayside_(cross|shrine)$\"];",
-            "relation[historic~\"^wayside_(cross|shrine)$\"];",
+            "node[historic~\"^wayside_(cross|shrine|chapel)$\"];",
+            "way[historic~\"^wayside_(cross|shrine|chapel)$\"];",
+            "relation[historic~\"^wayside_(cross|shrine|chapel)$\"];",
             ")"
         ]
     },
@@ -46,7 +46,7 @@
             "{% if tags.landuse == 'cemetery' %}",
             "{% set key = 'landuse' %}",
             "{% set value = tags.landuse %}",
-            "{% elseif tags.historic == 'wayside_cross' or tags.historic == 'wayside_shrine' %}",
+            "{% elseif tags.historic in [ 'wayside_cross', 'wayside_shrine', 'wayside_chapel' ] %}",
             "{% set key = 'historic' %}",
             "{% set value = tags.historic %}",
             "{% else %}",

From 5adefe24572128ee4887fba4e14875f1f8c874d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 27 Oct 2018 06:56:45 +0200
Subject: [PATCH 024/108] Energy: add new 'renewables' category

---
 index.json         |  3 +++
 lang/ast.json      |  2 +-
 lang/ca.json       |  2 +-
 lang/cs.json       |  2 +-
 lang/de.json       |  2 +-
 lang/el.json       |  2 +-
 lang/en.json       |  2 +-
 lang/es.json       |  2 +-
 lang/et.json       |  2 +-
 lang/fr.json       |  2 +-
 lang/hu.json       |  2 +-
 lang/it.json       |  2 +-
 lang/ja.json       |  2 +-
 lang/nl.json       |  2 +-
 lang/pl.json       |  2 +-
 lang/pt-br.json    |  2 +-
 lang/pt.json       |  2 +-
 lang/ro.json       |  2 +-
 lang/ru.json       |  2 +-
 lang/template.json |  2 +-
 lang/uk.json       |  2 +-
 renewables.json    | 37 +++++++++++++++++++++++++++++++++++++
 22 files changed, 60 insertions(+), 20 deletions(-)
 create mode 100644 renewables.json

diff --git a/index.json b/index.json
index 1b56e051e..2fbd6b829 100644
--- a/index.json
+++ b/index.json
@@ -265,6 +265,9 @@
                         },
                         {
                             "id": "oil_gas"
+                        },
+                        {
+                            "id": "renewables"
                         }
                     ]
                 },
diff --git a/lang/ast.json b/lang/ast.json
index bbf1fe4f9..a5e172fe2 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -36,7 +36,6 @@
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "Formaciones naturales",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Otres",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Relixón",
+    "category:renewables": "",
     "category:residential": "Zones residenciales",
     "category:resources": "Estraición de recursos",
     "category:services": "Servicios",
diff --git a/lang/ca.json b/lang/ca.json
index 817dabdd5..9a95a3e15 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -36,7 +36,6 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
+    "category:renewables": "",
     "category:residential": "",
     "category:resources": "",
     "category:services": "Serveis",
diff --git a/lang/cs.json b/lang/cs.json
index 3983a2564..316a8e552 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -36,7 +36,6 @@
     "category:military": "Vojenské",
     "category:mtb-routes": "",
     "category:natural": "Přírodní úkazy",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Jiné",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religion",
+    "category:renewables": "",
     "category:residential": "Obytné oblasti",
     "category:resources": "Těžba surovin",
     "category:services": "Služby",
diff --git a/lang/de.json b/lang/de.json
index e48999236..2a7700985 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -36,7 +36,6 @@
     "category:military": "Militär",
     "category:mtb-routes": "",
     "category:natural": "Geographische Objekte",
-    "category:network": "",
     "category:oil_gas": "Erdöl und Erdgas",
     "category:other": "Andere",
     "category:outdoor": "Freiluftaktivitäten",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "Eisenbahn Höchstgeschwindigkeiten",
     "category:railway-routes": "",
     "category:religion": "Religion",
+    "category:renewables": "Erneuerbare Energien",
     "category:residential": "Wohngebiete",
     "category:resources": "Ressourcengewinnung",
     "category:services": "Dienste",
diff --git a/lang/el.json b/lang/el.json
index c25f63f47..97c3dc668 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -36,7 +36,6 @@
     "category:military": "Στρατιωτικό",
     "category:mtb-routes": "",
     "category:natural": "Φυσικοί Σχηματισμοί",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Θρησκεία",
+    "category:renewables": "",
     "category:residential": "Περιοχές Κατοικίας",
     "category:resources": "",
     "category:services": "Υπηρεσίες",
diff --git a/lang/en.json b/lang/en.json
index 46851f26c..153aea4a5 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -36,7 +36,6 @@
     "category:military": "Military",
     "category:mtb-routes": "Mountain bike routes",
     "category:natural": "Natural Formations",
-    "category:network": "Network infrastructure",
     "category:oil_gas": "Petroleum and natural gas",
     "category:other": "Other",
     "category:outdoor": "Outdoor activities",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "Railway Maxspeed",
     "category:railway-routes": "Railway Routes",
     "category:religion": "Religion",
+    "category:renewables": "Renewables",
     "category:residential": "Residential Areas",
     "category:resources": "Resource Extraction",
     "category:services": "Services",
diff --git a/lang/es.json b/lang/es.json
index 853d88bc2..b13fced3b 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -36,7 +36,6 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
+    "category:renewables": "",
     "category:residential": "",
     "category:resources": "",
     "category:services": "Servicios",
diff --git a/lang/et.json b/lang/et.json
index 2a1d43e4c..e64744101 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -36,7 +36,6 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Ülejäänud",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religioon",
+    "category:renewables": "",
     "category:residential": "Elamupiirkonnad",
     "category:resources": "",
     "category:services": "Teenused",
diff --git a/lang/fr.json b/lang/fr.json
index 93d167cc1..784d81c96 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -36,7 +36,6 @@
     "category:military": "Militaire",
     "category:mtb-routes": "Itinéraires de VTT",
     "category:natural": "Éléments naturels",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Autres",
     "category:outdoor": "Activités de plein air",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "Limites de vitesse",
     "category:railway-routes": "Lignes ferroviaires",
     "category:religion": "Religion",
+    "category:renewables": "",
     "category:residential": "Zones résidentielles",
     "category:resources": "Extraction des ressources",
     "category:services": "Services",
diff --git a/lang/hu.json b/lang/hu.json
index 159590406..a673480cb 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -36,7 +36,6 @@
     "category:military": "Katonai objektumok",
     "category:mtb-routes": "Hegyikerékpáros útvonalak",
     "category:natural": "Természeti képződmények",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Egyéb",
     "category:outdoor": "Szabadtéri tevékenységek",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "Sebességkorlátozás",
     "category:railway-routes": "Vasútvonalak",
     "category:religion": "Vallás",
+    "category:renewables": "",
     "category:residential": "Lakóövezetek",
     "category:resources": "Bányászat",
     "category:services": "Szolgáltatások",
diff --git a/lang/it.json b/lang/it.json
index 7c62381d8..1e54cd380 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -36,7 +36,6 @@
     "category:military": "Militare",
     "category:mtb-routes": "",
     "category:natural": "Natura",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Altri",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religione",
+    "category:renewables": "",
     "category:residential": "Aree residenziali",
     "category:resources": "Areee estrattive",
     "category:services": "Servizi",
diff --git a/lang/ja.json b/lang/ja.json
index 0e5e62f62..6f92a3bf9 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -36,7 +36,6 @@
     "category:military": "軍事",
     "category:mtb-routes": "",
     "category:natural": "自然地層",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "その他",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "宗教",
+    "category:renewables": "",
     "category:residential": "住居エリア",
     "category:resources": "",
     "category:services": "サービス",
diff --git a/lang/nl.json b/lang/nl.json
index 8b1d6afad..a7ca08ee4 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -36,7 +36,6 @@
     "category:military": "Militair",
     "category:mtb-routes": "",
     "category:natural": "Natuurlijke Formaties",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Andere",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religie",
+    "category:renewables": "",
     "category:residential": "Woongebieden",
     "category:resources": "Grondstoffenwinning",
     "category:services": "Dienstverlening",
diff --git a/lang/pl.json b/lang/pl.json
index aced0df22..fbce3f3f3 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -36,7 +36,6 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
+    "category:renewables": "",
     "category:residential": "",
     "category:resources": "",
     "category:services": "Usługi",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index 10476d8b9..e0fa41fcf 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -36,7 +36,6 @@
     "category:military": "Militar",
     "category:mtb-routes": "Rotas mountain bike",
     "category:natural": "Formações naturais",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Outros",
     "category:outdoor": "Atividades ao ar livre",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "Rotas ferroviárias",
     "category:religion": "Religião",
+    "category:renewables": "",
     "category:residential": "Áreas residenciais",
     "category:resources": "Extração de recursos",
     "category:services": "Prestação de serviços",
diff --git a/lang/pt.json b/lang/pt.json
index bc57099f6..64314ad90 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -36,7 +36,6 @@
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "Formações naturais",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Outros",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "",
     "category:religion": "Religião",
+    "category:renewables": "",
     "category:residential": "Áreas residenciais",
     "category:resources": "Extração de recursos",
     "category:services": "Serviços",
diff --git a/lang/ro.json b/lang/ro.json
index dbc1e619a..827c3298d 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -36,7 +36,6 @@
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Altele",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religie",
+    "category:renewables": "",
     "category:residential": "Zona rezidentiala",
     "category:resources": "",
     "category:services": "Servicii",
diff --git a/lang/ru.json b/lang/ru.json
index 0237ae35c..57ed50079 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -36,7 +36,6 @@
     "category:military": "Вооружённые силы",
     "category:mtb-routes": "",
     "category:natural": "Природные образования",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Прочее",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Религия",
+    "category:renewables": "",
     "category:residential": "Жилые районы",
     "category:resources": "Добыча ресурсов",
     "category:services": "Услуги",
diff --git a/lang/template.json b/lang/template.json
index 6f83241eb..39c78d335 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -36,7 +36,6 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
+    "category:renewables": "",
     "category:residential": "",
     "category:resources": "",
     "category:services": "",
diff --git a/lang/uk.json b/lang/uk.json
index 7c67359c1..ae7ca298e 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -36,7 +36,6 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "Природне середовище",
-    "category:network": "",
     "category:oil_gas": "",
     "category:other": "Інше",
     "category:outdoor": "",
@@ -56,6 +55,7 @@
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Релігія",
+    "category:renewables": "",
     "category:residential": "Житлова зона",
     "category:resources": "",
     "category:services": "Послуги",
diff --git a/renewables.json b/renewables.json
new file mode 100644
index 000000000..8e22ef7ff
--- /dev/null
+++ b/renewables.json
@@ -0,0 +1,37 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Erneuerbare Energien",
+        "en": "Renewables"
+    },
+    "query": {
+        "11": [
+            "(",
+            "node[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "way[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "relation[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            ")",
+            ""
+        ],
+        "15": [
+            "(",
+            "node[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "way[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "relation[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "node[power~\"^(generator)$\"][\"generator:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "way[power~\"^(generator)$\"][\"generator:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "relation[power~\"^(generator)$\"][\"generator:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": "{{ tagTrans('power', tags.power) }}{% set x='generator:source' %}{% if tags[x] %}, {{ tagTransList('generator:source', tags[x]) }}{% endif %}",
+        "popupDescription": "{{ tagTrans('power', tags.power) }}",
+        "body": [
+            "{% set x='generator:source' %}{% if tags[x] %}<br/>{{ keyTrans('generator:source') }}: {{ tagTransList('generator:source', tags[x]) }}{% endif %}",
+            "{% set x='generator:method' %}{% if tags[x] %}<br/>{{ keyTrans('generator:method') }}: {{ tagTransList('generator:method', tags[x]) }}{% endif %}",
+            "{% set x='generator:type' %}{% if tags[x] %}<br/>{{ tagTransList('generator:type') }}: {{ tagTrans('generator:type', tags[x]) }}{% endif %}"
+        ],
+        "priority": "{% if tags.power == 'plant' %}0{% elseif tags.power == 'generator' or tags.power == 'line' %}1{% elseif tags.power == 'substation' %}2{% else %}3{% endif %}"
+    }
+}

From 11c5fd6b7d6b92855e243a3fd09d8078be4a1a63 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 27 Oct 2018 07:09:17 +0200
Subject: [PATCH 025/108] coal, oil_gas: description for power=generator

---
 coal.json    | 2 ++
 oil_gas.json | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/coal.json b/coal.json
index ff1191343..3cc7137dd 100644
--- a/coal.json
+++ b/coal.json
@@ -28,6 +28,8 @@
             "{{ tagTrans('man_made', tags.man_made) }}",
             "{% elseif tags.power == 'plant' %}",
             "{{ tagTrans('power', 'plant') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
+            "{% elseif tags.power == 'generator' %}",
+            "{{ tagTrans('power', 'generator') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
             "{% elseif tags.landuse == 'quarry' %}",
             "{{ tagTrans('landuse', tags.landuse) }} {% if tags.resource %}({{ tagTrans('resource', tags.resource) }}){% endif %}",
             "{% elseif tags.landuse == 'industrial' %}",
diff --git a/oil_gas.json b/oil_gas.json
index 96aa12601..6dfaf0398 100644
--- a/oil_gas.json
+++ b/oil_gas.json
@@ -51,6 +51,8 @@
             "{{ tagTrans('man_made', tags.man_made) }}",
             "{% elseif tags.power == 'plant' %}",
             "{{ tagTrans('power', 'plant') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
+            "{% elseif tags.power == 'generator' %}",
+            "{{ tagTrans('power', 'generator') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
             "{% elseif tags.waterway == 'offshore_field' %}",
             "{{ tagTrans('waterway', tags.waterway) }}",
             "{% elseif tags.landuse == 'industrial' %}",

From b3d20e824098d9943cd688bfb2ea38dd48e8aa8d Mon Sep 17 00:00:00 2001
From: Igor Eliezer <IgorEliezer@users.noreply.github.com>
Date: Sat, 27 Oct 2018 08:28:40 -0300
Subject: [PATCH 026/108] Update pt-br.json

---
 lang/pt-br.json | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lang/pt-br.json b/lang/pt-br.json
index e0fa41fcf..332aeaf8c 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -9,7 +9,7 @@
     "category:car_maxspeed": "Velocidade máxima",
     "category:car_routes": "Rotas rodoviárias",
     "category:children": "Equipamentos infantis",
-    "category:coal": "",
+    "category:coal": "Carvão",
     "category:communication": "Comunicação",
     "category:construction": "Terrenos vazios e obras",
     "category:craft": "Ofícios",
@@ -18,9 +18,9 @@
     "category:cycle_amenities": "Equipamentos",
     "category:cycle_routes": "Ciclorrotas",
     "category:education": "Educação",
-    "category:electric_power": "Energia",
+    "category:electric_power": "Energia elétrica",
     "category:emergency": "Emergência",
-    "category:energy": "",
+    "category:energy": "Energia",
     "category:financial": "Finanças",
     "category:gastro": "Gastronomia",
     "category:gastro-smoking": "Gastronomia sem fumo",
@@ -32,11 +32,11 @@
     "category:internet": "Acesso à Internet",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, esportes e compras",
-    "category:memorial": "",
+    "category:memorial": "Memoriais",
     "category:military": "Militar",
-    "category:mtb-routes": "Rotas mountain bike",
+    "category:mtb-routes": "Rotas de mountain bike",
     "category:natural": "Formações naturais",
-    "category:oil_gas": "",
+    "category:oil_gas": "Petróleo e gás",
     "category:other": "Outros",
     "category:outdoor": "Atividades ao ar livre",
     "category:phone": "Telefone",
@@ -55,7 +55,7 @@
     "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "Rotas ferroviárias",
     "category:religion": "Religião",
-    "category:renewables": "",
+    "category:renewables": "Renováveis",
     "category:residential": "Áreas residenciais",
     "category:resources": "Extração de recursos",
     "category:services": "Prestação de serviços",

From f968b451ad340d929be640cdc83f37cb5fbe06aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 27 Oct 2018 20:38:53 +0200
Subject: [PATCH 027/108] New category: power routes

---
 index.json         |  3 +++
 lang/ast.json      |  1 +
 lang/ca.json       |  1 +
 lang/cs.json       |  1 +
 lang/de.json       |  1 +
 lang/el.json       |  1 +
 lang/en.json       |  1 +
 lang/es.json       |  1 +
 lang/et.json       |  1 +
 lang/fr.json       |  1 +
 lang/hu.json       |  1 +
 lang/it.json       |  1 +
 lang/ja.json       |  1 +
 lang/nl.json       |  1 +
 lang/pl.json       |  1 +
 lang/pt-br.json    |  1 +
 lang/pt.json       |  1 +
 lang/ro.json       |  1 +
 lang/ru.json       |  1 +
 lang/template.json |  1 +
 lang/uk.json       |  1 +
 power_routes.json  | 63 ++++++++++++++++++++++++++++++++++++++++++++++
 22 files changed, 86 insertions(+)
 create mode 100644 power_routes.json

diff --git a/index.json b/index.json
index 2fbd6b829..e7b6bc069 100644
--- a/index.json
+++ b/index.json
@@ -260,6 +260,9 @@
                         {
                             "id": "electric_power"
                         },
+                        {
+                            "id": "power_routes"
+                        },
                         {
                             "id": "coal"
                         },
diff --git a/lang/ast.json b/lang/ast.json
index a5e172fe2..0f66d3156 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Llugares",
     "category:playgrounds": "Xuegos infantiles",
     "category:post": "Corréu",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Paraes y estaciones",
diff --git a/lang/ca.json b/lang/ca.json
index 9a95a3e15..3fd3e7de2 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -44,6 +44,7 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
diff --git a/lang/cs.json b/lang/cs.json
index 316a8e552..b6e8cfef4 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Sídla",
     "category:playgrounds": "Hřiště",
     "category:post": "Poštovní služby",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Zastávky & Stanice",
diff --git a/lang/de.json b/lang/de.json
index 2a7700985..467fec37a 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Orte",
     "category:playgrounds": "Spielplätze",
     "category:post": "Post",
+    "category:power_routes": "",
     "category:pt": "ÖV Karte",
     "category:pt:routes": "Routen",
     "category:pt:stops": "Haltestellen",
diff --git a/lang/el.json b/lang/el.json
index 97c3dc668..ff8f6450d 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Μέρη",
     "category:playgrounds": "",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Στάσεις & Σταθμοί",
diff --git a/lang/en.json b/lang/en.json
index 153aea4a5..696622058 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Places",
     "category:playgrounds": "Playground",
     "category:post": "Post",
+    "category:power_routes": "Power routes",
     "category:pt": "Public transport map",
     "category:pt:routes": "Routes",
     "category:pt:stops": "Stops & Stations",
diff --git a/lang/es.json b/lang/es.json
index b13fced3b..4af85d5e0 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -44,6 +44,7 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Paradas y estaciones",
diff --git a/lang/et.json b/lang/et.json
index e64744101..9bbb3c5ff 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Kohad",
     "category:playgrounds": "Mänguväljak",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
diff --git a/lang/fr.json b/lang/fr.json
index 784d81c96..fb9798cd2 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Lieux",
     "category:playgrounds": "Jeux pour enfants",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "Lignes",
     "category:pt:stops": "Arrêts/Stops, Stations",
diff --git a/lang/hu.json b/lang/hu.json
index a673480cb..7239711d3 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Helyek",
     "category:playgrounds": "Játszóterek",
     "category:post": "Posta",
+    "category:power_routes": "",
     "category:pt": "Tömegközlekedési térkép",
     "category:pt:routes": "Útvonalak",
     "category:pt:stops": "Megállók és állomások",
diff --git a/lang/it.json b/lang/it.json
index 1e54cd380..69663bb0d 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Luoghi",
     "category:playgrounds": "",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Stazioni e fermate",
diff --git a/lang/ja.json b/lang/ja.json
index 6f92a3bf9..883490c30 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -44,6 +44,7 @@
     "category:places_geo": "場所",
     "category:playgrounds": "",
     "category:post": "郵便",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "停留所と駅",
diff --git a/lang/nl.json b/lang/nl.json
index a7ca08ee4..c1902e39b 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Plaatsen",
     "category:playgrounds": "",
     "category:post": "Post",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Haltes en Stations",
diff --git a/lang/pl.json b/lang/pl.json
index fbce3f3f3..bf6258ec5 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Miejsca",
     "category:playgrounds": "",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Przystanki i Stacje",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index e0fa41fcf..aded34dc0 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parquinhos",
     "category:post": "Correios",
+    "category:power_routes": "",
     "category:pt": "Mapa de transporte público",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "Paradas e estações",
diff --git a/lang/pt.json b/lang/pt.json
index 64314ad90..9a1666236 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parques infantis",
     "category:post": "Correios",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "",
diff --git a/lang/ro.json b/lang/ro.json
index 827c3298d..464919694 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Locuri",
     "category:playgrounds": "Loc de joaca",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
diff --git a/lang/ru.json b/lang/ru.json
index 57ed50079..e4f125ffb 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Места",
     "category:playgrounds": "",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Остановки и станции",
diff --git a/lang/template.json b/lang/template.json
index 39c78d335..fa309a5d1 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -44,6 +44,7 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
diff --git a/lang/uk.json b/lang/uk.json
index ae7ca298e..96d8e03a6 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -44,6 +44,7 @@
     "category:places_geo": "Місцевість",
     "category:playgrounds": "Дитячий майданчик",
     "category:post": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Зупинки та станції",
diff --git a/power_routes.json b/power_routes.json
new file mode 100644
index 000000000..dd3c6f455
--- /dev/null
+++ b/power_routes.json
@@ -0,0 +1,63 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Power routes"
+    },
+    "query": {
+        "10": "relation[type=route][route=power]"
+    },
+    "members": true,
+    "feature": {
+        "pre": "{% set color = '#' ~ tags.operator|default('')|md5|slice(0, 6) %}",
+        "description": "{% if tags.operator %}{{ tags.operator }}{% endif %}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': color })|raw }}",
+        "markerSymbol": "",
+        "styles": ""
+    },
+    "memberFeature": {
+        "pre": [
+            "{% set refs = [] %}",
+            "{% set color = '#d41d8c' %}",
+            "{% if tags.ref %}",
+            "  {% for ref in tags.ref|split(';') %}",
+            "    {% set refs = refs|merge([ ref|trim ]) %}",
+            "  {% endfor %}",
+            "{% endif %}",
+            "",
+            "{% for master in masters %}",
+            "  {% if master.tags.operator %}",
+            "    {% set color = '#' ~ master.tags.operator|md5|slice(0, 6) %}",
+            "  {% endif %}",
+            "  {% if master.tags.ref %}",
+            "    {% set refs = refs|merge([ master.tags.ref ]) %}",
+            "  {% endif %}",
+            "{% endfor %}",
+            "",
+            "{% set refs = refs|unique|natsort({ insensitive: true }) %}"
+        ],
+        "body": [
+            "<h4>Routes</h4>",
+            "<ul>",
+            "{% for master in masters %}",
+            "  {% set _color = '#' ~ master.tags.operator|default('')|md5|slice(0, 6) %}",
+            "  <li data-object=\"{{ master.id }}\" style='list-style: none;'>",
+            "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: _color })|raw }}</div></span>",
+            "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</span>",
+            "    <span class='description'>{{ master.tags.operator }}</span>",
+            "  </li>",
+            "{% endfor %}",
+            "</ul>"
+        ],
+        "listExclude": "1",
+        "style": {
+            "color": "{{ color }}",
+            "width": 4,
+            "opacity": 1,
+            "text": "{{ refs|join(' · ') }}             ",
+            "textRepeat": "1",
+            "textOffset": "12",
+            "textFontWeight": "bold"
+        }
+    }
+}

From 11c08791ea11f755fa7f0e41252886daf3801598 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 30 Oct 2018 06:18:10 +0100
Subject: [PATCH 028/108] Cycle routes: show directions on ways

---
 cycle_routes.json | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/cycle_routes.json b/cycle_routes.json
index 3844eec18..93610247e 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -28,6 +28,8 @@
             "{% set priority = 4 %}",
             "{% set network = '' %}",
             "{% set refs = [] %}",
+            "{% set dirForward = false %}",
+            "{% set dirBackward = false %}",
             "",
             "{% for master in masters %}",
             "  {% set _p = const[master.tags.network].priority|default(4) %}",
@@ -38,6 +40,10 @@
             "  {% if master.tags.ref %}",
             "    {% set refs = refs|merge([ master.tags.ref ]) %}",
             "  {% endif %}",
+            "  {% if master.role == 'forward' %}{% set dirForward = true %}",
+            "  {% elseif master.role == 'backward' %}{% set dirBackward = true %}",
+            "  {% else %}{% set dirForward = true %}{% set dirBackward = true %}",
+            "  {% endif %}",
             "{% endfor %}"
         ],
         "title": "",
@@ -56,12 +62,19 @@
         "listExclude": "1",
         "style": {
             "color": "{{ const[network].color }}",
-            "width": 4,
+            "width": "{% if not dirForward or not dirBackward %}0{% else %}4{% endif %}",
             "opacity": 1,
             "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
-            "textFontWeight": "bold"
+            "textFontWeight": "bold",
+            "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
+            "pattern-pixelSize": "4",
+            "pattern-repeat": "7",
+            "pattern-polygon": "",
+            "pattern-path-weight": "2",
+            "pattern-path-color": "{{ const[network].color }}",
+            "pattern-path-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}"
         }
     },
     "const": {

From 06132618339186eff714503de4916dd96404a21c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 30 Oct 2018 12:05:29 +0100
Subject: [PATCH 029/108] Cycle routes: hover/selected on the member features
 instead of master

---
 cycle_routes.json | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/cycle_routes.json b/cycle_routes.json
index 93610247e..ee3bdb69a 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -21,6 +21,12 @@
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[tags.network].color|default(const[''].color) })|raw }}",
         "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
         "styles": "",
+        "style:hover": {
+            "width": 0
+        },
+        "style:selected": {
+            "width": 0
+        },
         "markerSymbol": ""
     },
     "memberFeature": {
@@ -30,6 +36,8 @@
             "{% set refs = [] %}",
             "{% set dirForward = false %}",
             "{% set dirBackward = false %}",
+            "{% set hover = false %}",
+            "{% set selected = false %}",
             "",
             "{% for master in masters %}",
             "  {% set _p = const[master.tags.network].priority|default(4) %}",
@@ -44,6 +52,8 @@
             "  {% elseif master.role == 'backward' %}{% set dirBackward = true %}",
             "  {% else %}{% set dirForward = true %}{% set dirBackward = true %}",
             "  {% endif %}",
+            "  {% if master.flags.hover %}{% set hover = master.role|default('both') %}{% endif %}",
+            "  {% if master.flags.selected %}{% set selected = master.role|default('both') %}{% endif %}",
             "{% endfor %}"
         ],
         "title": "",
@@ -60,6 +70,7 @@
             "</ul>"
         ],
         "listExclude": "1",
+        "styles": "default{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}",
         "style": {
             "color": "{{ const[network].color }}",
             "width": "{% if not dirForward or not dirBackward %}0{% else %}4{% endif %}",
@@ -75,6 +86,30 @@
             "pattern-path-weight": "2",
             "pattern-path-color": "{{ const[network].color }}",
             "pattern-path-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}"
+        },
+        "style:hover": {
+            "pane": "hover",
+            "width": "{% if hover == 'forward' or hover == 'backward' %}0{% else %}4{% endif %}",
+            "color": "black",
+            "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
+            "pattern-pixelSize": "4",
+            "pattern-repeat": "7",
+            "pattern-polygon": "",
+            "pattern-path-weight": "2",
+            "pattern-path-color": "black",
+            "pattern-path-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}"
+        },
+        "style:selected": {
+            "pane": "selected",
+            "width": "{% if selected == 'forward' or selected == 'backward' %}0{% else %}3{% endif %}",
+            "color": "#3f3f3f",
+            "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
+            "pattern-pixelSize": "4",
+            "pattern-repeat": "7",
+            "pattern-polygon": "",
+            "pattern-path-weight": "2",
+            "pattern-path-color": "#3f3f3f",
+            "pattern-path-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}"
         }
     },
     "const": {

From 2ab2a904b2f37b0ab4f441c1eac8ac31de3e1122 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 1 Nov 2018 10:05:17 +0100
Subject: [PATCH 030/108] pt: instead of circles on stops use markers of type
 circle (always on top)

---
 pt.json | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/pt.json b/pt.json
index 46451cf37..5ef65901b 100644
--- a/pt.json
+++ b/pt.json
@@ -118,13 +118,14 @@
             "{% endfor %}",
             "</ul>"
         ],
-        "styles": "{% if isStop and stopCount > 0 %}stop{% elseif isWay %}way{% else %}{% endif %}",
+        "styles": "{% if isStop and stopCount > 0 %}{% elseif isWay %}way{% else %}{% endif %}",
         "listStopsMarkerSign": null,
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
         "listStopsTitle": "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}",
         "listStopsDescription": "{{ refs|join(' · ') }}",
         "listRoutesExclude": "true",
+        "markerSymbol": "{% if isStop and stopCount > 0 %}{{ markerCircle({ width: 0, fill: true, fillColor: color, fillOpacity: '1', radius: 5 })|raw }}{% endif %}",
         "style:way": {
             "width": "3",
             "color": "{{ color|default('#ff0000') }}",
@@ -132,11 +133,6 @@
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
-        },
-        "style:stop": {
-            "width": "5",
-            "color": "{{ color|default('#ff0000') }}",
-            "radius": "3"
         }
     },
     "info": [

From 4225e151fa1f995507862df5d5629415fb86975b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 1 Nov 2018 10:06:06 +0100
Subject: [PATCH 031/108] pt: show arrowHeads to indicate direction of routes

---
 pt.json | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/pt.json b/pt.json
index 5ef65901b..210e56f56 100644
--- a/pt.json
+++ b/pt.json
@@ -82,6 +82,8 @@
             "{% set isWay = false %}",
             "{% set aRoute = null %}",
             "{% set refs = [] %}",
+            "{% set dirForward = false %}",
+            "{% set dirBackward = false %}",
             "{% for master in masters %}",
             "  {% if master.tags.public_transport == 'stop_area' %}",
             "    {% set stopName = master.tags.name %}",
@@ -97,6 +99,10 @@
             "    {% if master.tags.ref %}",
             "      {% set refs = refs|merge([ master.tags.ref ]) %}",
             "    {% endif %}",
+            "    {% if master.dir == 'forward' %}{% set dirForward = true %}",
+            "    {% elseif master.dir == 'backward' %}{% set dirBackward = true %}",
+            "    {% else %}{% set dirForward = true %}{% set dirBackward = true %}",
+            "    {% endif %}",
             "  {% endif %}",
             "{% endfor %}",
             "",
@@ -128,11 +134,19 @@
         "markerSymbol": "{% if isStop and stopCount > 0 %}{{ markerCircle({ width: 0, fill: true, fillColor: color, fillOpacity: '1', radius: 5 })|raw }}{% endif %}",
         "style:way": {
             "width": "3",
+            "opacity": "{% if (dirForward and dirBackward) or (not dirForward and not dirBackward) %}1{% else %}0{% endif %}",
             "color": "{{ color|default('#ff0000') }}",
             "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
-            "textFontWeight": "bold"
+            "textFontWeight": "bold",
+            "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
+            "pattern-pixelSize": "4",
+            "pattern-repeat": "7",
+            "pattern-polygon": "",
+            "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
+            "pattern-path-weight": "2",
+            "pattern-path-color": "{{ color|default('#ff0000') }}"
         }
     },
     "info": [

From 6d3e7c932e7531d2e508be7668a5b9cc08fb95ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 1 Nov 2018 10:25:36 +0100
Subject: [PATCH 032/108] pt: show directions in hover and selected

---
 pt.json | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/pt.json b/pt.json
index 210e56f56..3f4bb5b15 100644
--- a/pt.json
+++ b/pt.json
@@ -84,6 +84,8 @@
             "{% set refs = [] %}",
             "{% set dirForward = false %}",
             "{% set dirBackward = false %}",
+            "{% set hover = false %}",
+            "{% set selected = false %}",
             "{% for master in masters %}",
             "  {% if master.tags.public_transport == 'stop_area' %}",
             "    {% set stopName = master.tags.name %}",
@@ -104,6 +106,9 @@
             "    {% else %}{% set dirForward = true %}{% set dirBackward = true %}",
             "    {% endif %}",
             "  {% endif %}",
+            "",
+            "  {% if master.flags.hover %}{% set hover = master.dir|default('both') %}{% endif %}",
+            "  {% if master.flags.selected %}{% set selected = master.dir|default('both') %}{% endif %}",
             "{% endfor %}",
             "",
             "{% set refs = refs|unique|natsort({ insensitive: true }) %}",
@@ -118,20 +123,20 @@
             "  <li data-object=\"{{ master.id }}\">",
             "    <span class='markerParent'><div class='marker'>{{ markerCircle({fillColor:const[master.tags.route].color})|raw }}</div><div class='icon'>{{ const[master.tags.route].sign|raw }}</div></span>",
             "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</span>",
-            "    <span class='description'>{{ tagTrans('route', master.tags.route) }}</span>",
+            "    <span class='description'>{{ tagTrans('route', master.tags.route) }}{{ master.dir }}</span>",
             "  </li>",
             "  {% endif %}",
             "{% endfor %}",
             "</ul>"
         ],
-        "styles": "{% if isStop and stopCount > 0 %}{% elseif isWay %}way{% else %}{% endif %}",
+        "styles": "{% if isStop and stopCount > 0 %}{% elseif isWay %}way{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}{% endif %}",
         "listStopsMarkerSign": null,
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
         "listStopsTitle": "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}",
         "listStopsDescription": "{{ refs|join(' · ') }}",
         "listRoutesExclude": "true",
-        "markerSymbol": "{% if isStop and stopCount > 0 %}{{ markerCircle({ width: 0, fill: true, fillColor: color, fillOpacity: '1', radius: 5 })|raw }}{% endif %}",
+        "markerSymbol": "{% if isStop and stopCount > 0 %}{% if hover or selected %}{{ markerCircle({ width: 0, fill: true, fillColor: hover ? '#000000' : '#3f3f3f', fillOpacity: '1', radius: 7 })|raw }}{% else %}{{ markerCircle({ width: 0, fill: true, fillColor: color, fillOpacity: '1', radius: 5 })|raw }}{% endif %}{% endif %}",
         "style:way": {
             "width": "3",
             "opacity": "{% if (dirForward and dirBackward) or (not dirForward and not dirBackward) %}1{% else %}0{% endif %}",
@@ -147,6 +152,30 @@
             "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
             "pattern-path-weight": "2",
             "pattern-path-color": "{{ color|default('#ff0000') }}"
+        },
+        "style:hover": {
+            "pane": "hover",
+            "width": "{% if hover == 'forward' or hover == 'backward' %}0{% else %}4{% endif %}",
+            "color": "black",
+            "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
+            "pattern-pixelSize": "4",
+            "pattern-repeat": "7",
+            "pattern-polygon": "",
+            "pattern-path-weight": "2",
+            "pattern-path-color": "black",
+            "pattern-path-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}"
+        },
+        "style:selected": {
+            "pane": "selected",
+            "width": "{% if selected == 'forward' or selected == 'backward' %}0{% else %}3{% endif %}",
+            "color": "#3f3f3f",
+            "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
+            "pattern-pixelSize": "4",
+            "pattern-repeat": "7",
+            "pattern-polygon": "",
+            "pattern-path-weight": "2",
+            "pattern-path-color": "#3f3f3f",
+            "pattern-path-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}"
         }
     },
     "info": [

From 335ccb9df8731437c5889790fe2018b740d1595f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 1 Nov 2018 22:04:39 +0100
Subject: [PATCH 033/108] Import pt-br translations to categories

---
 coal.json           | 3 ++-
 electric_power.json | 2 +-
 index.json          | 3 ++-
 memorial.json       | 3 ++-
 mtb-routes.json     | 2 +-
 oil_gas.json        | 5 +++--
 renewables.json     | 3 ++-
 7 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/coal.json b/coal.json
index 3cc7137dd..325af1f36 100644
--- a/coal.json
+++ b/coal.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Kohle",
-        "en": "Coal"
+        "en": "Coal",
+        "pt-br": "Carvão"
     },
     "query": {
         "11": [
diff --git a/electric_power.json b/electric_power.json
index ce31be5a9..d77bbec38 100644
--- a/electric_power.json
+++ b/electric_power.json
@@ -12,7 +12,7 @@
         "ja": "電力",
         "nl": "Stroomvoorziening",
         "pt": "Eletricidade",
-        "pt-br": "Energia",
+        "pt-br": "Energia elétrica",
         "ro": "Energie",
         "ru": "Энергетика"
     },
diff --git a/index.json b/index.json
index e7b6bc069..2721734ab 100644
--- a/index.json
+++ b/index.json
@@ -254,7 +254,8 @@
                     "type": "index",
                     "name": {
                         "en": "Energy",
-                        "de": "Energie"
+                        "de": "Energie",
+                        "pt-br": "Energia"
                     },
                     "subCategories": [
                         {
diff --git a/memorial.json b/memorial.json
index 117785c57..50d2bc14c 100644
--- a/memorial.json
+++ b/memorial.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Denkmäler",
-        "en": "Memorials"
+        "en": "Memorials",
+        "pt-br": "Memoriais"
     },
     "query": {
         "11": [
diff --git a/mtb-routes.json b/mtb-routes.json
index 02d2c7137..ffc267060 100644
--- a/mtb-routes.json
+++ b/mtb-routes.json
@@ -4,7 +4,7 @@
         "en": "Mountain bike routes",
         "fr": "Itinéraires de VTT",
         "hu": "Hegyikerékpáros útvonalak",
-        "pt-br": "Rotas mountain bike"
+        "pt-br": "Rotas de mountain bike"
     },
     "query": {
         "13": "relation[type=route][route=mtb]"
diff --git a/oil_gas.json b/oil_gas.json
index 6dfaf0398..5c8fbddd0 100644
--- a/oil_gas.json
+++ b/oil_gas.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Erdöl und Erdgas",
-        "en": "Petroleum and natural gas"
+        "en": "Petroleum and natural gas",
+        "pt-br": "Petróleo e gás"
     },
     "query": {
         "11": [
@@ -23,7 +24,7 @@
             ")"
         ],
         "13": [
-          "(",
+            "(",
             "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
             "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
             "node[landuse=industrial][industrial~\"^(|.*;)(oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
diff --git a/renewables.json b/renewables.json
index 8e22ef7ff..f2eb805eb 100644
--- a/renewables.json
+++ b/renewables.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Erneuerbare Energien",
-        "en": "Renewables"
+        "en": "Renewables",
+        "pt-br": "Renováveis"
     },
     "query": {
         "11": [

From 60aac841bd7ecaa5ad28fde53c0d0e1f530e228c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 2 Nov 2018 17:24:03 +0100
Subject: [PATCH 034/108] children: Translate toilets with diaper changing
 table

---
 children.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/children.json b/children.json
index e814ed101..69fc9134b 100644
--- a/children.json
+++ b/children.json
@@ -37,7 +37,7 @@
             "{% elseif tags.shop=='baby_goods' or tags.shop=='toys' %}",
             "{{ keyTrans('shop') }}: {{ tagTrans('shop', tags.shop) }}",
             "{% elseif tags.amenity=='toilets' and tags.diaper %}",
-            "{{ tagTrans('amenity', 'toilets') }} with diaper changing table",
+            "{{ tagTrans('amenity', 'toilets diaper=yes') }}",
             "{% endif %}"
         ],
         "markerSign": [
@@ -78,7 +78,7 @@
         "  </tr>",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>🚽🚼</div></td>",
-        "    <td>{{ tagTrans('amenity', 'toilets') }} with diaper changing table</td>",
+        "    <td>{{ tagTrans('amenity', 'toilets diaper=yes') }}</td>",
         "  </tr>",
         "</table>"
     ]

From 682ac5c0f989dc64187fd074b0d4412092416441 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 5 Nov 2018 21:11:17 +0100
Subject: [PATCH 035/108] cycle_routes: bettern pattern

---
 cycle_routes.json | 62 ++++++++++++++++++++++++++++++-----------------
 1 file changed, 40 insertions(+), 22 deletions(-)

diff --git a/cycle_routes.json b/cycle_routes.json
index ee3bdb69a..5cef3e3f2 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -73,43 +73,61 @@
         "styles": "default{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}",
         "style": {
             "color": "{{ const[network].color }}",
-            "width": "{% if not dirForward or not dirBackward %}0{% else %}4{% endif %}",
+            "width": "4",
+            "dashArray": "{% if not dirForward or not dirBackward %}13,10{% endif %}",
+            "dashOffset": "{% if dirBackward %}16{% else %}0{% endif %}",
+            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
+            "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
             "opacity": 1,
             "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold",
             "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
-            "pattern-pixelSize": "4",
-            "pattern-repeat": "7",
-            "pattern-polygon": "",
-            "pattern-path-weight": "2",
-            "pattern-path-color": "{{ const[network].color }}",
-            "pattern-path-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}"
+            "pattern-pixelSize": "9",
+            "pattern-repeat": "23",
+            "pattern-offset": "{% if dirBackward %}2{% else %}18.5{% endif %}",
+            "pattern-polygon": "true",
+            "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
+            "pattern-path-weight": "0",
+            "pattern-path-fillOpacity": "1",
+            "pattern-path-color": "{{ const[network].color }}"
         },
         "style:hover": {
             "pane": "hover",
-            "width": "{% if hover == 'forward' or hover == 'backward' %}0{% else %}4{% endif %}",
+            "width": "4",
+            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}15,8{% endif %}",
+            "dashOffset": "{% if hover == 'backward' %}16{% else %}0{% endif %}",
+            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
+            "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
             "color": "black",
             "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
-            "pattern-pixelSize": "4",
-            "pattern-repeat": "7",
-            "pattern-polygon": "",
-            "pattern-path-weight": "2",
-            "pattern-path-color": "black",
-            "pattern-path-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}"
+            "pattern-pixelSize": "9",
+            "pattern-repeat": "23",
+            "pattern-offset": "{% if hover == 'backward' %}2{% else %}18.5{% endif %}",
+            "pattern-polygon": "true",
+            "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-weight": "0",
+            "pattern-path-fillOpacity": "1",
+            "pattern-path-color": "black"
         },
         "style:selected": {
             "pane": "selected",
-            "width": "{% if selected == 'forward' or selected == 'backward' %}0{% else %}3{% endif %}",
-            "color": "#3f3f3f",
+            "width": "4",
+            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}15,8{% endif %}",
+            "dashOffset": "{% if selected == 'backward' %}16{% else %}0{% endif %}",
+            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
+            "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
+            "color": "black",
             "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
-            "pattern-pixelSize": "4",
-            "pattern-repeat": "7",
-            "pattern-polygon": "",
-            "pattern-path-weight": "2",
-            "pattern-path-color": "#3f3f3f",
-            "pattern-path-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}"
+            "pattern-pixelSize": "9",
+            "pattern-repeat": "23",
+            "pattern-offset": "{% if selected == 'backward' %}2{% else %}18.5{% endif %}",
+            "pattern-polygon": "true",
+            "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-weight": "0",
+            "pattern-path-fillOpacity": "1",
+            "pattern-path-color": "#3f3f3f"
         }
     },
     "const": {

From acc5de362e30df8f7e9c1567bab49203878cbb70 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 11 Nov 2018 21:54:09 +0100
Subject: [PATCH 036/108] xmas: new category in special

---
 index.json |  3 ++
 xmas.json  | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+)
 create mode 100644 xmas.json

diff --git a/index.json b/index.json
index 2721734ab..d5c01b9d1 100644
--- a/index.json
+++ b/index.json
@@ -342,6 +342,9 @@
                 },
                 {
                     "id": "wikipedia"
+                },
+                {
+                    "id": "xmas"
                 }
             ]
         }
diff --git a/xmas.json b/xmas.json
new file mode 100644
index 000000000..91adbfc45
--- /dev/null
+++ b/xmas.json
@@ -0,0 +1,80 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Christmas"
+    },
+    "query": {
+        "14": [
+            "(",
+            "node[\"xmas:feature\"];",
+            "way[\"xmas:feature\"];",
+            "relation[\"xmas:feature\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "title": "{{ attribute(tags, \"xmas:name\")|default(trans(\"unnamed\")) }}",
+        "description": "{{ tagTransList(\"xmas:feature\", attribute(tags, \"xmas:feature\")) }}",
+        "body": [
+            "{% if attribute(tags, 'xmas:location') %}",
+            "<li class='hasSymbol'>",
+            "  <i class=\"fa fa-globe\" aria-hidden=\"true\"></i>",
+            "  <span class='key'>{{ keyTrans('location') }}:</span>",
+            "  <span class='value'>",
+            "    {{ attribute(tags, 'xmas:location') }}",
+            "  </span>",
+            "</li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'xmas:day_date') %}",
+            "<li class='hasSymbol'>",
+            "  <i class=\"fa fa-clock-o\" aria-hidden=\"true\"></i>",
+            "  <span class='key'>Open:</span>",
+            "  <span class='value'>",
+            "    {{ attribute(tags, 'xmas:day_date') }}",
+            "  </span>",
+            "</li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'xmas:opening_hours') %}",
+            "<li class='hasSymbol'>",
+            "  <i class=\"fa fa-clock-o\" aria-hidden=\"true\"></i>",
+            "  <span class='key'>{{ keyTrans('opening_hours') }}:</span>",
+            "  <span class='value'>",
+            "    {{ attribute(tags, 'xmas:opening_hours') }}",
+            "  </span>",
+            "</li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'xmas:url') %}",
+            "<li class='hasSymbol'>",
+            "  <i class=\"fa fa-globe\" aria-hidden=\"true\"></i>",
+            "  <span class='key'>{{ keyTrans('website') }}:</span>",
+            "  <span class='value'>",
+            "    <a target='_blank' href='{{ attribute(tags, 'xmas:url')|websiteUrl }}'>{{ attribute(tags, 'xmas:url') }}</a>",
+            "  </span>",
+            "</li>",
+            "{% endif %}"
+        ],
+        "markerSign": [
+            "{{ attribute(const, attribute(tags, 'xmas:feature'))|raw }}",
+            ""
+        ]
+    },
+    "const": {
+        "market": "<img src='maki:commercial'>",
+        "tree": "<i class=\"fa fa-tree\" aria-hidden=\"true\"></i>",
+        "shop": "<i class=\"fa fa-shopping-basket\" aria-hidden=\"true\"></i>",
+        "event": "<img src='maki:amusement-park'>"
+    },
+    "info": [
+        "<table>",
+        "{% for value, icon in const %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ icon|raw }}</div></td>",
+        "    <td>{{ tagTrans('xmas:feature', value) }}</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "</table>"
+    ]
+}

From 2759d6c6e38aec302a66a97341fb7e51fc7a7366 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 8 Nov 2018 10:33:46 +0100
Subject: [PATCH 037/108] pt: better patterns

---
 pt.json | 66 +++++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 45 insertions(+), 21 deletions(-)

diff --git a/pt.json b/pt.json
index 3f4bb5b15..cd3bbe0ca 100644
--- a/pt.json
+++ b/pt.json
@@ -67,6 +67,12 @@
         ],
         "markerSymbol": "",
         "styles": "",
+        "style:hover": {
+            "width": 0
+        },
+        "style:selected": {
+            "width": 0
+        },
         "listStopsExclude": "true",
         "listRoutesMarkerSign": "{{ const[tags.route].sign|raw }}",
         "listRoutesMarkerSymbol": "{{ markerCircle({fillColor:const[tags.route].color})|raw }}",
@@ -129,7 +135,7 @@
             "{% endfor %}",
             "</ul>"
         ],
-        "styles": "{% if isStop and stopCount > 0 %}{% elseif isWay %}way{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}{% endif %}",
+        "styles": "{% if isStop and stopCount > 0 %}{% elseif isWay %}casing,way{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}{% endif %}",
         "listStopsMarkerSign": null,
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
@@ -138,44 +144,62 @@
         "listRoutesExclude": "true",
         "markerSymbol": "{% if isStop and stopCount > 0 %}{% if hover or selected %}{{ markerCircle({ width: 0, fill: true, fillColor: hover ? '#000000' : '#3f3f3f', fillOpacity: '1', radius: 7 })|raw }}{% else %}{{ markerCircle({ width: 0, fill: true, fillColor: color, fillOpacity: '1', radius: 5 })|raw }}{% endif %}{% endif %}",
         "style:way": {
-            "width": "3",
-            "opacity": "{% if (dirForward and dirBackward) or (not dirForward and not dirBackward) %}1{% else %}0{% endif %}",
             "color": "{{ color|default('#ff0000') }}",
+            "width": "4",
+            "dashArray": "{% if not dirForward or not dirBackward %}15,8{% endif %}",
+            "dashOffset": "{% if dirBackward %}16{% else %}0{% endif %}",
+            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
+            "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
+            "opacity": 1,
             "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold",
             "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
-            "pattern-pixelSize": "4",
-            "pattern-repeat": "7",
-            "pattern-polygon": "",
+            "pattern-pixelSize": "9",
+            "pattern-repeat": "23",
+            "pattern-offset": "{% if dirBackward %}2{% else %}18.5{% endif %}",
+            "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
-            "pattern-path-weight": "2",
+            "pattern-path-weight": "0",
+            "pattern-path-fillOpacity": "1",
             "pattern-path-color": "{{ color|default('#ff0000') }}"
         },
         "style:hover": {
             "pane": "hover",
-            "width": "{% if hover == 'forward' or hover == 'backward' %}0{% else %}4{% endif %}",
+            "width": "4",
+            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}15,8{% endif %}",
+            "dashOffset": "{% if hover == 'backward' %}16{% else %}0{% endif %}",
+            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
+            "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
             "color": "black",
             "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
-            "pattern-pixelSize": "4",
-            "pattern-repeat": "7",
-            "pattern-polygon": "",
-            "pattern-path-weight": "2",
-            "pattern-path-color": "black",
-            "pattern-path-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}"
+            "pattern-pixelSize": "9",
+            "pattern-repeat": "23",
+            "pattern-offset": "{% if hover == 'backward' %}2{% else %}18.5{% endif %}",
+            "pattern-polygon": "true",
+            "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-weight": "0",
+            "pattern-path-fillOpacity": "1",
+            "pattern-path-color": "black"
         },
         "style:selected": {
             "pane": "selected",
-            "width": "{% if selected == 'forward' or selected == 'backward' %}0{% else %}3{% endif %}",
+            "width": "4",
+            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}15,8{% endif %}",
+            "dashOffset": "{% if selected == 'backward' %}16{% else %}0{% endif %}",
+            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
+            "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
             "color": "#3f3f3f",
             "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
-            "pattern-pixelSize": "4",
-            "pattern-repeat": "7",
-            "pattern-polygon": "",
-            "pattern-path-weight": "2",
-            "pattern-path-color": "#3f3f3f",
-            "pattern-path-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}"
+            "pattern-pixelSize": "9",
+            "pattern-repeat": "23",
+            "pattern-offset": "{% if selected == 'backward' %}2{% else %}18.5{% endif %}",
+            "pattern-polygon": "true",
+            "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-weight": "0",
+            "pattern-path-fillOpacity": "1",
+            "pattern-path-color": "#3f3f3f"
         }
     },
     "info": [

From 0e11d00ed8f65d2749a85ec6ccf42befae569c8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 12 Nov 2018 21:52:13 +0100
Subject: [PATCH 038/108] pt, cycle_routes: longer arrows

---
 cycle_routes.json | 26 +++++++++++++-------------
 pt.json           | 24 ++++++++++++------------
 2 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/cycle_routes.json b/cycle_routes.json
index 5cef3e3f2..3e001bcc2 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -74,8 +74,8 @@
         "style": {
             "color": "{{ const[network].color }}",
             "width": "4",
-            "dashArray": "{% if not dirForward or not dirBackward %}13,10{% endif %}",
-            "dashOffset": "{% if dirBackward %}16{% else %}0{% endif %}",
+            "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}",
+            "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}",
             "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
             "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
             "opacity": 1,
@@ -85,8 +85,8 @@
             "textFontWeight": "bold",
             "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
             "pattern-pixelSize": "9",
-            "pattern-repeat": "23",
-            "pattern-offset": "{% if dirBackward %}2{% else %}18.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
             "pattern-path-weight": "0",
@@ -96,15 +96,15 @@
         "style:hover": {
             "pane": "hover",
             "width": "4",
-            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}15,8{% endif %}",
-            "dashOffset": "{% if hover == 'backward' %}16{% else %}0{% endif %}",
+            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}",
             "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
             "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
             "color": "black",
             "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
             "pattern-pixelSize": "9",
-            "pattern-repeat": "23",
-            "pattern-offset": "{% if hover == 'backward' %}2{% else %}18.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
             "pattern-path-weight": "0",
@@ -114,15 +114,15 @@
         "style:selected": {
             "pane": "selected",
             "width": "4",
-            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}15,8{% endif %}",
-            "dashOffset": "{% if selected == 'backward' %}16{% else %}0{% endif %}",
+            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}",
             "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
             "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
-            "color": "black",
+            "color": "#3f3f3f",
             "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
             "pattern-pixelSize": "9",
-            "pattern-repeat": "23",
-            "pattern-offset": "{% if selected == 'backward' %}2{% else %}18.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
             "pattern-path-weight": "0",
diff --git a/pt.json b/pt.json
index cd3bbe0ca..b1cdc2b4f 100644
--- a/pt.json
+++ b/pt.json
@@ -146,8 +146,8 @@
         "style:way": {
             "color": "{{ color|default('#ff0000') }}",
             "width": "4",
-            "dashArray": "{% if not dirForward or not dirBackward %}15,8{% endif %}",
-            "dashOffset": "{% if dirBackward %}16{% else %}0{% endif %}",
+            "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}",
+            "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}",
             "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
             "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
             "opacity": 1,
@@ -157,8 +157,8 @@
             "textFontWeight": "bold",
             "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
             "pattern-pixelSize": "9",
-            "pattern-repeat": "23",
-            "pattern-offset": "{% if dirBackward %}2{% else %}18.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
             "pattern-path-weight": "0",
@@ -168,15 +168,15 @@
         "style:hover": {
             "pane": "hover",
             "width": "4",
-            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}15,8{% endif %}",
-            "dashOffset": "{% if hover == 'backward' %}16{% else %}0{% endif %}",
+            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}",
             "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
             "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
             "color": "black",
             "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
             "pattern-pixelSize": "9",
-            "pattern-repeat": "23",
-            "pattern-offset": "{% if hover == 'backward' %}2{% else %}18.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
             "pattern-path-weight": "0",
@@ -186,15 +186,15 @@
         "style:selected": {
             "pane": "selected",
             "width": "4",
-            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}15,8{% endif %}",
-            "dashOffset": "{% if selected == 'backward' %}16{% else %}0{% endif %}",
+            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}",
             "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
             "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
             "color": "#3f3f3f",
             "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
             "pattern-pixelSize": "9",
-            "pattern-repeat": "23",
-            "pattern-offset": "{% if selected == 'backward' %}2{% else %}18.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
             "pattern-path-weight": "0",

From ee8d4b21cb0123f937e3bb8b9cb82abbba6a2af7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 12 Nov 2018 22:03:19 +0100
Subject: [PATCH 039/108] pt: Show pointer on stops, when route
 hovered/selected

---
 pt.json | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/pt.json b/pt.json
index b1cdc2b4f..14d5b3c67 100644
--- a/pt.json
+++ b/pt.json
@@ -135,14 +135,21 @@
             "{% endfor %}",
             "</ul>"
         ],
-        "styles": "{% if isStop and stopCount > 0 %}{% elseif isWay %}casing,way{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}{% endif %}",
+        "styles": "{% if isStop and stopCount > 0 %}stop{% elseif isWay %}casing,way{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}{% endif %}",
         "listStopsMarkerSign": null,
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
         "listStopsTitle": "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}",
         "listStopsDescription": "{{ refs|join(' · ') }}",
         "listRoutesExclude": "true",
-        "markerSymbol": "{% if isStop and stopCount > 0 %}{% if hover or selected %}{{ markerCircle({ width: 0, fill: true, fillColor: hover ? '#000000' : '#3f3f3f', fillOpacity: '1', radius: 7 })|raw }}{% else %}{{ markerCircle({ width: 0, fill: true, fillColor: color, fillOpacity: '1', radius: 5 })|raw }}{% endif %}{% endif %}",
+        "markerSymbol": "{% if isStop and stopCount > 0 %}{% if hover or selected %}{{ markerPointer({ })|raw }}{% endif %}{% endif %}",
+        "markerSign": " ",
+        "style:stop": {
+            "color": "{{ color|default('#ff0000') }}",
+            "width": "4",
+            "radius": "3",
+            "zIndex": "1"
+        },
         "style:way": {
             "color": "{{ color|default('#ff0000') }}",
             "width": "4",

From ddd764584b6ec8531cd25a1ed243ef5bcf2389c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 13 Nov 2018 21:36:40 +0100
Subject: [PATCH 040/108] pt, cycle_routes: use width for pattern paths

---
 cycle_routes.json | 6 +++---
 pt.json           | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/cycle_routes.json b/cycle_routes.json
index 3e001bcc2..828dfaf76 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -89,7 +89,7 @@
             "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
-            "pattern-path-weight": "0",
+            "pattern-path-width": "0",
             "pattern-path-fillOpacity": "1",
             "pattern-path-color": "{{ const[network].color }}"
         },
@@ -107,7 +107,7 @@
             "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
-            "pattern-path-weight": "0",
+            "pattern-path-width": "0",
             "pattern-path-fillOpacity": "1",
             "pattern-path-color": "black"
         },
@@ -125,7 +125,7 @@
             "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
-            "pattern-path-weight": "0",
+            "pattern-path-width": "0",
             "pattern-path-fillOpacity": "1",
             "pattern-path-color": "#3f3f3f"
         }
diff --git a/pt.json b/pt.json
index 14d5b3c67..6db6264b8 100644
--- a/pt.json
+++ b/pt.json
@@ -168,7 +168,7 @@
             "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
-            "pattern-path-weight": "0",
+            "pattern-path-width": "0",
             "pattern-path-fillOpacity": "1",
             "pattern-path-color": "{{ color|default('#ff0000') }}"
         },
@@ -186,7 +186,7 @@
             "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
-            "pattern-path-weight": "0",
+            "pattern-path-width": "0",
             "pattern-path-fillOpacity": "1",
             "pattern-path-color": "black"
         },
@@ -204,7 +204,7 @@
             "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
             "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
-            "pattern-path-weight": "0",
+            "pattern-path-width": "0",
             "pattern-path-fillOpacity": "1",
             "pattern-path-color": "#3f3f3f"
         }

From 02c6f8f7fed80d2fcc96df5a214eadd9a233c4ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 15 Nov 2018 13:57:34 +0100
Subject: [PATCH 041/108] pt: remove debug message

---
 pt.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pt.json b/pt.json
index 6db6264b8..a3d6eea38 100644
--- a/pt.json
+++ b/pt.json
@@ -129,7 +129,7 @@
             "  <li data-object=\"{{ master.id }}\">",
             "    <span class='markerParent'><div class='marker'>{{ markerCircle({fillColor:const[master.tags.route].color})|raw }}</div><div class='icon'>{{ const[master.tags.route].sign|raw }}</div></span>",
             "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</span>",
-            "    <span class='description'>{{ tagTrans('route', master.tags.route) }}{{ master.dir }}</span>",
+            "    <span class='description'>{{ tagTrans('route', master.tags.route) }}</span>",
             "  </li>",
             "  {% endif %}",
             "{% endfor %}",

From dddfeda3e8a19840fdf4e3c412e2d17994ec0a0a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?=
 <plepe@noreply.openstreetbrowser.org>
Date: Fri, 16 Nov 2018 11:18:16 +0100
Subject: [PATCH 042/108] bathing_swimming: new category

---
 index.json            |  3 +++
 swimming_bathing.json | 48 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 51 insertions(+)
 create mode 100644 swimming_bathing.json

diff --git a/index.json b/index.json
index d5c01b9d1..aebc34bb5 100644
--- a/index.json
+++ b/index.json
@@ -46,6 +46,9 @@
                 },
                 {
                     "id": "outdoor"
+                },
+                {
+                    "id": "swimming_bathing"
                 }
             ]
         },
diff --git a/swimming_bathing.json b/swimming_bathing.json
new file mode 100644
index 000000000..6a9987747
--- /dev/null
+++ b/swimming_bathing.json
@@ -0,0 +1,48 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Swimming and bathing",
+        "de": "Schwimmen und Baden"
+    },
+    "query": {
+        "13": [
+            "(",
+            "nwr[leisure=swimming_area];",
+            "nwr[natural~\"^(water|beach)\"][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[leisure~\"^(water_park|beach_resort)$\"];",
+            "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[amenity=public_bath];",
+            "nwr[tourism=spa_resort];",
+            ")"
+        ],
+        "16": [
+            "(",
+            "nwr[leisure=swimming_area];",
+            "nwr[natural~\"^(water|beach)\"][sport~\"^(|.*;)swimming(;.*|)$\"];",
+            "nwr[leisure~\"^(water_park|beach_resort)$\"];",
+            "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(;.*|)$\"];",
+            "nwr[amenity=public_bath];",
+            "nwr[tourism=spa_resort];",
+            "",
+            "nwr[leisure=swimming_pool][access!=private];",
+            "nwr[leisure=sauna];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": "",
+        "description": [
+            "{% if tags.amenity == 'public_path' %}",
+            "  {{ tagTrans('amenity', 'public_path') }}",
+            "  {% if attribute(tags, 'bath:type') %}({{ tagTrans('bath:type', attribute(tags, 'bath:type')) }}){% endif %}",
+            "{% elseif tags.tourism == 'spa_resort' %}",
+            "{{ tagTrans('tourism', tags.tourism ) }}",
+            "{% elseif tags.leisure %}",
+            "{{ tagTrans('leisure', tags.leisure) }}",
+            "{% elseif tags.natural %}",
+            "{{ tagTrans('natural', tags.natural) }}",
+            "{% endif %}"
+        ],
+        "priority": "{% if tags.name %}0{% else %}1{% endif %}"
+    }
+}

From 32a06ff946d3a22e46e01d14d9c68f5f975e89a7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?=
 <plepe@noreply.openstreetbrowser.org>
Date: Fri, 16 Nov 2018 13:13:33 +0100
Subject: [PATCH 043/108] bathing_swimming: show sauna type, small bugfixes

---
 swimming_bathing.json | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/swimming_bathing.json b/swimming_bathing.json
index 6a9987747..0e090d381 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -32,11 +32,14 @@
     "feature": {
         "pre": "",
         "description": [
-            "{% if tags.amenity == 'public_path' %}",
-            "  {{ tagTrans('amenity', 'public_path') }}",
-            "  {% if attribute(tags, 'bath:type') %}({{ tagTrans('bath:type', attribute(tags, 'bath:type')) }}){% endif %}",
+            "{% if tags.amenity == 'public_bath' %}",
+            "{{ tagTrans('amenity', 'public_bath' ) }}",
+            "{% if attribute(tags, 'bath:type') %}({{ tagTrans('bath:type', attribute(tags, 'bath:type')) }}){% endif %}",
             "{% elseif tags.tourism == 'spa_resort' %}",
             "{{ tagTrans('tourism', tags.tourism ) }}",
+            "{% elseif tags.leisure == 'sauna' %}",
+            "  {{ tagTrans('leisure', 'sauna') }}",
+            "  {% if tags.sauna and tags.sauna != 'yes' %}({{ tagTransList('sauna', tags.sauna) }}){% endif %}",
             "{% elseif tags.leisure %}",
             "{{ tagTrans('leisure', tags.leisure) }}",
             "{% elseif tags.natural %}",

From b4d0a3517a350b14f98fe751211cde64682d87c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 25 Nov 2018 08:13:44 +0100
Subject: [PATCH 044/108] swimming_bathing: icons, map key

---
 swimming_bathing.json | 87 ++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 78 insertions(+), 9 deletions(-)

diff --git a/swimming_bathing.json b/swimming_bathing.json
index 0e090d381..5ae2e1365 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -30,22 +30,91 @@
         ]
     },
     "feature": {
-        "pre": "",
-        "description": [
+        "pre": [
+            "{% set k = null %}{% set v = null %}{% set append = null %}",
             "{% if tags.amenity == 'public_bath' %}",
-            "{{ tagTrans('amenity', 'public_bath' ) }}",
-            "{% if attribute(tags, 'bath:type') %}({{ tagTrans('bath:type', attribute(tags, 'bath:type')) }}){% endif %}",
+            "  {% set k = 'amenity' %}",
+            "  {% set v = 'public_bath' %}",
+            "  {% if attribute(tags, 'bath:type') %}{% set append = tagTrans('bath:type', attribute(tags, 'bath:type')) %}{% endif %}",
             "{% elseif tags.tourism == 'spa_resort' %}",
-            "{{ tagTrans('tourism', tags.tourism ) }}",
+            "  {% set k = 'tourism' %}",
+            "  {% set v = tags.tourism %}",
             "{% elseif tags.leisure == 'sauna' %}",
-            "  {{ tagTrans('leisure', 'sauna') }}",
-            "  {% if tags.sauna and tags.sauna != 'yes' %}({{ tagTransList('sauna', tags.sauna) }}){% endif %}",
+            "  {% set k = 'leisure' %}",
+            "  {% set v = tags.leisure %}",
+            "  {% if tags.sauna and tags.sauna != 'yes' %}{% set append = tagTransList('sauna', tags.sauna) %}{% endif %}",
+            "{% elseif tags.leisure == 'sports_centre' %}",
+            "  {% set k = 'leisure' %}",
+            "  {% set v = tags.leisure %}",
+            "  {% set append = tagTrans('sport', 'swimming') %}",
             "{% elseif tags.leisure %}",
-            "{{ tagTrans('leisure', tags.leisure) }}",
+            "  {% set k = 'leisure' %}",
+            "  {% set v = tags.leisure %}",
             "{% elseif tags.natural %}",
-            "{{ tagTrans('natural', tags.natural) }}",
+            "  {% set k = 'natural' %}",
+            "  {% set v = tags.natural %}",
+            "  {% if tags.sport %}{% set append = tagTrans('sport', 'swimming') %}{% endif %}",
             "{% endif %}"
         ],
+        "description": [
+            "{{ tagTrans(k, v) }}",
+            "{% if append %}({{ append }}){% endif %}"
+        ],
+        "markerSign": "{{ const[k ~ '=' ~ v].sign|raw }}",
         "priority": "{% if tags.name %}0{% else %}1{% endif %}"
+    },
+    "info": [
+        "<table>",
+        "{% for value, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>{{ keyTrans(value) }}</td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "</table>"
+    ],
+    "const": {
+        "leisure=swimming_area": {
+          "zoom": 13,
+          "sign": "<img data-src='maki:swimming?size=11&fill=blue'>"
+        },
+        "leisure=water_park": {
+          "zoom": 13,
+          "sign": "<img data-src='maki:swimming'>"
+        },
+        "leisure=beach_resort": {
+          "zoom": 13,
+          "sign": "<img data-src='temaki:beach'>"
+        },
+        "leisure=sports_centre": {
+          "zoom": 13,
+          "sign": "<img data-src='maki:basketball'>"
+        },
+        "natural=water": {
+          "zoom": 13,
+          "sign": "<img data-src='maki:swimming?fill=blue'>"
+        },
+        "natural=beach": {
+          "zoom": 13,
+          "sign": "<img data-src='temaki:beach?fill=green'>"
+        },
+        "amenity=public_bath": {
+          "zoom": 13,
+          "sign": "<i class=\"fa fa-bath\" style='color: black' aria-hidden=\"true\"></i>"
+        },
+        "tourism=spa_resort": {
+          "zoom": 13,
+          "sign": "<i class=\"fa fa-bath\" style='color: blue' aria-hidden=\"true\"></i>"
+        },
+        "leisure=swimming_pool": {
+          "zoom": 16,
+          "sign": "<img data-src='maki:swimming?size=11'>"
+        },
+        "leisure=sauna": {
+          "zoom": 16,
+          "sign": "<i class=\"fa fa-thermometer-full\" aria-hidden=\"true\"></i>"
+        }
     }
 }

From 283f91a930f04367214d0792e0a8a2e25a1380a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 25 Nov 2018 08:23:40 +0100
Subject: [PATCH 045/108] swimming_bathing: append additional info, show all
 beaches

---
 swimming_bathing.json | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/swimming_bathing.json b/swimming_bathing.json
index 5ae2e1365..76ce3e3de 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -8,7 +8,8 @@
         "13": [
             "(",
             "nwr[leisure=swimming_area];",
-            "nwr[natural~\"^(water|beach)\"][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[natural~\"^(water)\"][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[natural~\"^(beach)\"];",
             "nwr[leisure~\"^(water_park|beach_resort)$\"];",
             "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(.*|)$\"];",
             "nwr[amenity=public_bath];",
@@ -18,7 +19,8 @@
         "16": [
             "(",
             "nwr[leisure=swimming_area];",
-            "nwr[natural~\"^(water|beach)\"][sport~\"^(|.*;)swimming(;.*|)$\"];",
+            "nwr[natural~\"^(water)\"][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[natural~\"^(beach)\"];",
             "nwr[leisure~\"^(water_park|beach_resort)$\"];",
             "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(;.*|)$\"];",
             "nwr[amenity=public_bath];",
@@ -69,7 +71,7 @@
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ keyTrans(value) }}</td>",
+        "    <td>{{ keyTrans(value) }} {% if data.append %}({{ trans(data.append) }}){% endif %}</td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
@@ -90,10 +92,12 @@
         },
         "leisure=sports_centre": {
           "zoom": 13,
+          "append": "tag:sport=swimming",
           "sign": "<img data-src='maki:basketball'>"
         },
         "natural=water": {
           "zoom": 13,
+          "append": "tag:sport=swimming",
           "sign": "<img data-src='maki:swimming?fill=blue'>"
         },
         "natural=beach": {
@@ -110,6 +114,7 @@
         },
         "leisure=swimming_pool": {
           "zoom": 16,
+          "append": "tag:access!=private",
           "sign": "<img data-src='maki:swimming?size=11'>"
         },
         "leisure=sauna": {

From 749d637d4a01d3313d0c9af33ee2747b71101889 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 25 Nov 2018 08:32:43 +0100
Subject: [PATCH 046/108] swimming_bathing: show taginfo in map key on
 mouseover

---
 swimming_bathing.json | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/swimming_bathing.json b/swimming_bathing.json
index 76ce3e3de..c252dc0b7 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -71,7 +71,10 @@
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ keyTrans(value) }} {% if data.append %}({{ trans(data.append) }}){% endif %}</td>",
+        "    <td title=\"{% if data.taginfo %}{{ data.taginfo }}{% else %}{{ value }}{% endif %}\">",
+        "      {{ keyTrans(value) }}",
+        "      {% if data.append %}({{ trans(data.append) }}){% endif %}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
@@ -93,11 +96,13 @@
         "leisure=sports_centre": {
           "zoom": 13,
           "append": "tag:sport=swimming",
+          "taginfo": "leisure=swimming_area, sport=swimming",
           "sign": "<img data-src='maki:basketball'>"
         },
         "natural=water": {
           "zoom": 13,
           "append": "tag:sport=swimming",
+          "taginfo": "natural=water, sport=swimming",
           "sign": "<img data-src='maki:swimming?fill=blue'>"
         },
         "natural=beach": {
@@ -106,6 +111,7 @@
         },
         "amenity=public_bath": {
           "zoom": 13,
+          "taginfo": "amenity=public_bath, bath:type=*",
           "sign": "<i class=\"fa fa-bath\" style='color: black' aria-hidden=\"true\"></i>"
         },
         "tourism=spa_resort": {
@@ -115,10 +121,12 @@
         "leisure=swimming_pool": {
           "zoom": 16,
           "append": "tag:access!=private",
+          "taginfo": "leisure=swimming_pool, access!=private",
           "sign": "<img data-src='maki:swimming?size=11'>"
         },
         "leisure=sauna": {
           "zoom": 16,
+          "taginfo": "leisure=sauna, sauna:type=*",
           "sign": "<i class=\"fa fa-thermometer-full\" aria-hidden=\"true\"></i>"
         }
     }

From aa5f4ba259a991ee14c2d867a4a6290bc0da13df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 25 Nov 2018 19:10:15 +0100
Subject: [PATCH 047/108] swimming_bathing: use new Font Awesome icons

---
 swimming_bathing.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/swimming_bathing.json b/swimming_bathing.json
index c252dc0b7..5225d4ba5 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -103,7 +103,7 @@
           "zoom": 13,
           "append": "tag:sport=swimming",
           "taginfo": "natural=water, sport=swimming",
-          "sign": "<img data-src='maki:swimming?fill=blue'>"
+          "sign": "<i style='color: blue' class=\"fas fa-water\"></i>"
         },
         "natural=beach": {
           "zoom": 13,
@@ -122,7 +122,7 @@
           "zoom": 16,
           "append": "tag:access!=private",
           "taginfo": "leisure=swimming_pool, access!=private",
-          "sign": "<img data-src='maki:swimming?size=11'>"
+          "sign": "<i style='font-size: 80%; color: black;' class='fas fa-swimming-pool'></i>"
         },
         "leisure=sauna": {
           "zoom": 16,

From 697b102cdef93f87ffa4ea8f2ec6f89786a52c3a Mon Sep 17 00:00:00 2001
From: Cybereric <Cybereric@users.noreply.github.com>
Date: Mon, 26 Nov 2018 18:51:26 +0100
Subject: [PATCH 048/108] Categories FR update

I don't understand very well the difference between "Electric Power" and "Power Routes"  I have electric lines in the two categories.
I don't find the "Christmas" category
---
 lang/fr.json | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/lang/fr.json b/lang/fr.json
index fb9798cd2..1c4056d9e 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -7,9 +7,9 @@
     "category:car_amenities": "Équipements auto",
     "category:car_furniture": "Fournitures automobiles",
     "category:car_maxspeed": "Limites de vitesse",
-    "category:car_routes": "",
+    "category:car_routes": "Itinéraires auto",
     "category:children": "Équipements pour enfants",
-    "category:coal": "",
+    "category:coal": "Charbon",
     "category:communication": "Communication",
     "category:construction": "Constructions",
     "category:craft": "Artisanat",
@@ -18,9 +18,9 @@
     "category:cycle_amenities": "Équipements vélo",
     "category:cycle_routes": "Itinéraires vélo",
     "category:education": "Éducation",
-    "category:electric_power": "Énergie",
+    "category:electric_power": "Énergie électrique",
     "category:emergency": "Services d'urgence",
-    "category:energy": "",
+    "category:energy": "Énergie",
     "category:financial": "Finance",
     "category:gastro": "Restauration",
     "category:gastro-smoking": "Restauration sans tabac",
@@ -32,11 +32,11 @@
     "category:internet": "Internet",
     "category:leisure": "Loisirs",
     "category:leisure_sport_shopping": "Loisirs",
-    "category:memorial": "",
+    "category:memorial": "Mémoriaux",
     "category:military": "Militaire",
     "category:mtb-routes": "Itinéraires de VTT",
     "category:natural": "Éléments naturels",
-    "category:oil_gas": "",
+    "category:oil_gas": "Pétrole et gaz naturel",
     "category:other": "Autres",
     "category:outdoor": "Activités de plein air",
     "category:phone": "Téléphone",
@@ -45,7 +45,7 @@
     "category:playgrounds": "Jeux pour enfants",
     "category:post": "",
     "category:power_routes": "",
-    "category:pt": "",
+    "category:pt": "Carte des transports publics",
     "category:pt:routes": "Lignes",
     "category:pt:stops": "Arrêts/Stops, Stations",
     "category:pt_amenities": "Équipements",
@@ -56,7 +56,7 @@
     "category:railway-maxspeed": "Limites de vitesse",
     "category:railway-routes": "Lignes ferroviaires",
     "category:religion": "Religion",
-    "category:renewables": "",
+    "category:renewables": "Énergies renouvelables",
     "category:residential": "Zones résidentielles",
     "category:resources": "Extraction des ressources",
     "category:services": "Services",

From 55ad8a7c0e778a582bbf55ee13de63c3b284e4eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 26 Nov 2018 21:06:54 +0100
Subject: [PATCH 049/108] office: new category

---
 index.json  |  3 +++
 office.json | 13 +++++++++++++
 2 files changed, 16 insertions(+)
 create mode 100644 office.json

diff --git a/index.json b/index.json
index aebc34bb5..bf2c076e9 100644
--- a/index.json
+++ b/index.json
@@ -89,6 +89,9 @@
                 {
                     "id": "communication"
                 },
+                {
+                    "id": "office"
+                },
                 {
                     "id": "financial"
                 },
diff --git a/office.json b/office.json
new file mode 100644
index 000000000..4ae627aa5
--- /dev/null
+++ b/office.json
@@ -0,0 +1,13 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Offices",
+        "de": "Büros"
+    },
+    "query": {
+        "14": "nwr[office]"
+    },
+    "feature": {
+        "description": "{{ tagTrans('office', tags.office) }}"
+    }
+}

From bff3d77ad7c72c6d7e0f0e57874b08821f72f36e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 26 Nov 2018 21:11:21 +0100
Subject: [PATCH 050/108] office: distingish office=government, government=*

---
 office.json | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/office.json b/office.json
index 4ae627aa5..5675114f7 100644
--- a/office.json
+++ b/office.json
@@ -8,6 +8,9 @@
         "14": "nwr[office]"
     },
     "feature": {
-        "description": "{{ tagTrans('office', tags.office) }}"
+        "description": [
+            "{{ tagTrans('office', tags.office) }}",
+            "{% if tags.office == 'government' and tags.government %}({{ tagTrans('government', tags.government) }}){% endif %}"
+        ]
     }
 }

From c62f8f6e79ac33ef5bb85c0131907cb2b2a57e08 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 27 Nov 2018 22:21:26 +0100
Subject: [PATCH 051/108] Add new categories to language files

---
 lang/ast.json      | 4 +++-
 lang/ca.json       | 4 +++-
 lang/cs.json       | 4 +++-
 lang/de.json       | 4 +++-
 lang/el.json       | 4 +++-
 lang/en.json       | 4 +++-
 lang/es.json       | 4 +++-
 lang/et.json       | 4 +++-
 lang/fr.json       | 4 +++-
 lang/hu.json       | 4 +++-
 lang/it.json       | 4 +++-
 lang/ja.json       | 4 +++-
 lang/nl.json       | 4 +++-
 lang/pl.json       | 4 +++-
 lang/pt-br.json    | 4 +++-
 lang/pt.json       | 4 +++-
 lang/ro.json       | 4 +++-
 lang/ru.json       | 4 +++-
 lang/template.json | 4 +++-
 lang/uk.json       | 4 +++-
 20 files changed, 60 insertions(+), 20 deletions(-)

diff --git a/lang/ast.json b/lang/ast.json
index 0f66d3156..5fa37e6c3 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -63,6 +63,7 @@
     "category:shop": "Compres",
     "category:special": "",
     "category:sport": "Deportes",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turismu",
     "category:tourism_services": "Turismu",
     "category:transport": "Tresporte",
@@ -75,5 +76,6 @@
     "category:waste": "Basures",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Fábriques"
+    "category:works": "Fábriques",
+    "category:xmas": ""
 }
diff --git a/lang/ca.json b/lang/ca.json
index 3fd3e7de2..96fa71a63 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -63,6 +63,7 @@
     "category:shop": "",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "",
     "category:tourism_services": "",
     "category:transport": "",
@@ -75,5 +76,6 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": ""
 }
diff --git a/lang/cs.json b/lang/cs.json
index b6e8cfef4..f0b37061d 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -63,6 +63,7 @@
     "category:shop": "Obchody",
     "category:special": "",
     "category:sport": "Sport",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turistika",
     "category:tourism_services": "Turistika",
     "category:transport": "Doprava",
@@ -75,5 +76,6 @@
     "category:waste": "Nakládání s odpady",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Továrny"
+    "category:works": "Továrny",
+    "category:xmas": ""
 }
diff --git a/lang/de.json b/lang/de.json
index 467fec37a..4ad4de754 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -63,6 +63,7 @@
     "category:shop": "Einkauf",
     "category:special": "Spezial",
     "category:sport": "Sport",
+    "category:swimming_bathing": "Schwimmen und Baden",
     "category:tourism_attractions": "Tourismus",
     "category:tourism_services": "Tourismus",
     "category:transport": "Transport",
@@ -75,5 +76,6 @@
     "category:waste": "Entsorgung",
     "category:water": "Gewässer",
     "category:wikipedia": "Wikipedia",
-    "category:works": "Fabriken"
+    "category:works": "Fabriken",
+    "category:xmas": ""
 }
diff --git a/lang/el.json b/lang/el.json
index ff8f6450d..0e3e53c41 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -63,6 +63,7 @@
     "category:shop": "Αγορές",
     "category:special": "",
     "category:sport": "Άθληση",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Τουρισμός",
     "category:tourism_services": "Τουρισμός",
     "category:transport": "Μεταφορές",
@@ -75,5 +76,6 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": ""
 }
diff --git a/lang/en.json b/lang/en.json
index 696622058..5d3ee21e2 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -63,6 +63,7 @@
     "category:shop": "Shopping",
     "category:special": "Special",
     "category:sport": "Sport",
+    "category:swimming_bathing": "Swimming and bathing",
     "category:tourism_attractions": "Tourism",
     "category:tourism_services": "Tourism",
     "category:transport": "Transportation",
@@ -75,5 +76,6 @@
     "category:waste": "Disposal",
     "category:water": "Waterbodies",
     "category:wikipedia": "Wikipedia",
-    "category:works": "Works"
+    "category:works": "Works",
+    "category:xmas": "Christmas"
 }
diff --git a/lang/es.json b/lang/es.json
index 4af85d5e0..3e5f459c7 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -63,6 +63,7 @@
     "category:shop": "",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "",
     "category:tourism_services": "",
     "category:transport": "",
@@ -75,5 +76,6 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": ""
 }
diff --git a/lang/et.json b/lang/et.json
index 9bbb3c5ff..c36a0a5d4 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -63,6 +63,7 @@
     "category:shop": "Ostmine",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turism",
     "category:tourism_services": "Turism",
     "category:transport": "Transport",
@@ -75,5 +76,6 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": ""
 }
diff --git a/lang/fr.json b/lang/fr.json
index fb9798cd2..48701a7ee 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -63,6 +63,7 @@
     "category:shop": "Magasins/Boutiques",
     "category:special": "Catégories spéciales",
     "category:sport": "Sports",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Tourisme",
     "category:tourism_services": "Tourisme",
     "category:transport": "Transports",
@@ -75,5 +76,6 @@
     "category:waste": "Déchets/Recyclage",
     "category:water": "Hydrographie",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Zones industrielles"
+    "category:works": "Zones industrielles",
+    "category:xmas": ""
 }
diff --git a/lang/hu.json b/lang/hu.json
index 7239711d3..fbc2661b3 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -63,6 +63,7 @@
     "category:shop": "Vásárlás",
     "category:special": "Speciális",
     "category:sport": "Sport",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Látnivalók",
     "category:tourism_services": "Turisztikai szolgáltatások",
     "category:transport": "Közlekedés",
@@ -75,5 +76,6 @@
     "category:waste": "Hulladék",
     "category:water": "Vizek",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Üzemek"
+    "category:works": "Üzemek",
+    "category:xmas": ""
 }
diff --git a/lang/it.json b/lang/it.json
index 69663bb0d..1151e1ed6 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -63,6 +63,7 @@
     "category:shop": "Acquisti",
     "category:special": "",
     "category:sport": "Sport",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
     "category:transport": "Trasporti",
@@ -75,5 +76,6 @@
     "category:waste": "Smaltimento",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Fabbriche"
+    "category:works": "Fabbriche",
+    "category:xmas": ""
 }
diff --git a/lang/ja.json b/lang/ja.json
index 883490c30..ffe1bee9e 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -63,6 +63,7 @@
     "category:shop": "ショッピング",
     "category:special": "",
     "category:sport": "スポーツ",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "観光",
     "category:tourism_services": "観光",
     "category:transport": "輸送",
@@ -75,5 +76,6 @@
     "category:waste": "処理場",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "工場"
+    "category:works": "工場",
+    "category:xmas": ""
 }
diff --git a/lang/nl.json b/lang/nl.json
index c1902e39b..bbe5dba85 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -63,6 +63,7 @@
     "category:shop": "Winkelen",
     "category:special": "",
     "category:sport": "Sport",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Toerisme",
     "category:tourism_services": "Toerisme",
     "category:transport": "Vervoer",
@@ -75,5 +76,6 @@
     "category:waste": "Afvalverwijdering",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Fabrieken"
+    "category:works": "Fabrieken",
+    "category:xmas": ""
 }
diff --git a/lang/pl.json b/lang/pl.json
index bf6258ec5..9fbc7606c 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -63,6 +63,7 @@
     "category:shop": "Zakupy",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turystyka",
     "category:tourism_services": "Turystyka",
     "category:transport": "Transport",
@@ -75,5 +76,6 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": ""
 }
diff --git a/lang/pt-br.json b/lang/pt-br.json
index c71ed2bf0..6234ebcf3 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -63,6 +63,7 @@
     "category:shop": "Compras",
     "category:special": "Especial",
     "category:sport": "Esportes",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Serviços de turismo",
     "category:transport": "Mobilidade",
@@ -75,5 +76,6 @@
     "category:waste": "Lixo",
     "category:water": "Hidrografia",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Fábricas"
+    "category:works": "Fábricas",
+    "category:xmas": ""
 }
diff --git a/lang/pt.json b/lang/pt.json
index 9a1666236..6ab52c24f 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -63,6 +63,7 @@
     "category:shop": "Compras",
     "category:special": "Especial",
     "category:sport": "Desporto",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
     "category:transport": "Transportes",
@@ -75,5 +76,6 @@
     "category:waste": "Lixo",
     "category:water": "Massas de água",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Fábricas"
+    "category:works": "Fábricas",
+    "category:xmas": ""
 }
diff --git a/lang/ro.json b/lang/ro.json
index 464919694..96f91501a 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -63,6 +63,7 @@
     "category:shop": "Cumpărături",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turism",
     "category:tourism_services": "Turism",
     "category:transport": "Transport",
@@ -75,5 +76,6 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": ""
 }
diff --git a/lang/ru.json b/lang/ru.json
index e4f125ffb..55da1a6b1 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -63,6 +63,7 @@
     "category:shop": "Покупки",
     "category:special": "",
     "category:sport": "Спорт",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Туризм",
     "category:tourism_services": "Туризм",
     "category:transport": "Транспорт",
@@ -75,5 +76,6 @@
     "category:waste": "Переработка отходов",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Промышленность"
+    "category:works": "Промышленность",
+    "category:xmas": ""
 }
diff --git a/lang/template.json b/lang/template.json
index fa309a5d1..a90e42ee0 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -63,6 +63,7 @@
     "category:shop": "",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "",
     "category:tourism_services": "",
     "category:transport": "",
@@ -75,5 +76,6 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": ""
 }
diff --git a/lang/uk.json b/lang/uk.json
index 96d8e03a6..d0d6c6cb9 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -63,6 +63,7 @@
     "category:shop": "Торгівля",
     "category:special": "",
     "category:sport": "Спорт. Інше.",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Туризм",
     "category:tourism_services": "Туризм",
     "category:transport": "Транспорт",
@@ -75,5 +76,6 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": ""
 }

From 7f7b64af10e6d3759522c52531e43273ab76e4c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 28 Nov 2018 21:21:46 +0100
Subject: [PATCH 052/108] Copy french translations to category titles

---
 car_routes.json       | 1 +
 coal.json             | 1 +
 electric_power.json   | 2 +-
 index.json            | 3 ++-
 memorial.json         | 1 +
 oil_gas.json          | 1 +
 pt.json               | 1 +
 renewables.json       | 1 +
 swimming_bathing.json | 4 ++--
 9 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/car_routes.json b/car_routes.json
index a31247e8e..d1c7734c4 100644
--- a/car_routes.json
+++ b/car_routes.json
@@ -2,6 +2,7 @@
     "type": "overpass",
     "name": {
         "en": "Car routes",
+        "fr": "Itinéraires auto",
         "hu": "Főútvonalak",
         "pt-br": "Rotas rodoviárias"
     },
diff --git a/coal.json b/coal.json
index 325af1f36..d084cae29 100644
--- a/coal.json
+++ b/coal.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Kohle",
         "en": "Coal",
+        "fr": "Charbon",
         "pt-br": "Carvão"
     },
     "query": {
diff --git a/electric_power.json b/electric_power.json
index d77bbec38..7a54e914f 100644
--- a/electric_power.json
+++ b/electric_power.json
@@ -6,7 +6,7 @@
         "de": "Elektrischer Strom",
         "en": "Electric Power",
         "et": "Elekter",
-        "fr": "Énergie",
+        "fr": "Énergie électrique",
         "hu": "Áramellátás",
         "it": "Energia",
         "ja": "電力",
diff --git a/index.json b/index.json
index aebc34bb5..12a2451e0 100644
--- a/index.json
+++ b/index.json
@@ -258,7 +258,8 @@
                     "name": {
                         "en": "Energy",
                         "de": "Energie",
-                        "pt-br": "Energia"
+                        "pt-br": "Energia",
+                        "fr": "Énergie"
                     },
                     "subCategories": [
                         {
diff --git a/memorial.json b/memorial.json
index 50d2bc14c..4095a1378 100644
--- a/memorial.json
+++ b/memorial.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Denkmäler",
         "en": "Memorials",
+        "fr": "Mémoriaux",
         "pt-br": "Memoriais"
     },
     "query": {
diff --git a/oil_gas.json b/oil_gas.json
index 5c8fbddd0..d74a1dfcc 100644
--- a/oil_gas.json
+++ b/oil_gas.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Erdöl und Erdgas",
         "en": "Petroleum and natural gas",
+        "fr": "Pétrole et gaz naturel",
         "pt-br": "Petróleo e gás"
     },
     "query": {
diff --git a/pt.json b/pt.json
index a3d6eea38..7ade18d46 100644
--- a/pt.json
+++ b/pt.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "ÖV Karte",
         "en": "Public transport map",
+        "fr": "Carte des transports publics",
         "hu": "Tömegközlekedési térkép",
         "pt-br": "Mapa de transporte público"
     },
diff --git a/renewables.json b/renewables.json
index f2eb805eb..6c32493df 100644
--- a/renewables.json
+++ b/renewables.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Erneuerbare Energien",
         "en": "Renewables",
+        "fr": "Énergies renouvelables",
         "pt-br": "Renováveis"
     },
     "query": {
diff --git a/swimming_bathing.json b/swimming_bathing.json
index 5225d4ba5..00bcce6b7 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -1,8 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "en": "Swimming and bathing",
-        "de": "Schwimmen und Baden"
+        "de": "Schwimmen und Baden",
+        "en": "Swimming and bathing"
     },
     "query": {
         "13": [

From 81db894f32874f15a00c8f414b219452856a1c59 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 28 Nov 2018 21:21:59 +0100
Subject: [PATCH 053/108] swimming_bathing: fix indentation

---
 swimming_bathing.json | 56 +++++++++++++++++++++----------------------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/swimming_bathing.json b/swimming_bathing.json
index 00bcce6b7..84dc48e97 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -82,52 +82,52 @@
     ],
     "const": {
         "leisure=swimming_area": {
-          "zoom": 13,
-          "sign": "<img data-src='maki:swimming?size=11&fill=blue'>"
+            "zoom": 13,
+            "sign": "<img data-src='maki:swimming?size=11&fill=blue'>"
         },
         "leisure=water_park": {
-          "zoom": 13,
-          "sign": "<img data-src='maki:swimming'>"
+            "zoom": 13,
+            "sign": "<img data-src='maki:swimming'>"
         },
         "leisure=beach_resort": {
-          "zoom": 13,
-          "sign": "<img data-src='temaki:beach'>"
+            "zoom": 13,
+            "sign": "<img data-src='temaki:beach'>"
         },
         "leisure=sports_centre": {
-          "zoom": 13,
-          "append": "tag:sport=swimming",
-          "taginfo": "leisure=swimming_area, sport=swimming",
-          "sign": "<img data-src='maki:basketball'>"
+            "zoom": 13,
+            "append": "tag:sport=swimming",
+            "taginfo": "leisure=swimming_area, sport=swimming",
+            "sign": "<img data-src='maki:basketball'>"
         },
         "natural=water": {
-          "zoom": 13,
-          "append": "tag:sport=swimming",
-          "taginfo": "natural=water, sport=swimming",
-          "sign": "<i style='color: blue' class=\"fas fa-water\"></i>"
+            "zoom": 13,
+            "append": "tag:sport=swimming",
+            "taginfo": "natural=water, sport=swimming",
+            "sign": "<i style='color: blue' class=\"fas fa-water\"></i>"
         },
         "natural=beach": {
-          "zoom": 13,
-          "sign": "<img data-src='temaki:beach?fill=green'>"
+            "zoom": 13,
+            "sign": "<img data-src='temaki:beach?fill=green'>"
         },
         "amenity=public_bath": {
-          "zoom": 13,
-          "taginfo": "amenity=public_bath, bath:type=*",
-          "sign": "<i class=\"fa fa-bath\" style='color: black' aria-hidden=\"true\"></i>"
+            "zoom": 13,
+            "taginfo": "amenity=public_bath, bath:type=*",
+            "sign": "<i class=\"fa fa-bath\" style='color: black' aria-hidden=\"true\"></i>"
         },
         "tourism=spa_resort": {
-          "zoom": 13,
-          "sign": "<i class=\"fa fa-bath\" style='color: blue' aria-hidden=\"true\"></i>"
+            "zoom": 13,
+            "sign": "<i class=\"fa fa-bath\" style='color: blue' aria-hidden=\"true\"></i>"
         },
         "leisure=swimming_pool": {
-          "zoom": 16,
-          "append": "tag:access!=private",
-          "taginfo": "leisure=swimming_pool, access!=private",
-          "sign": "<i style='font-size: 80%; color: black;' class='fas fa-swimming-pool'></i>"
+            "zoom": 16,
+            "append": "tag:access!=private",
+            "taginfo": "leisure=swimming_pool, access!=private",
+            "sign": "<i style='font-size: 80%; color: black;' class='fas fa-swimming-pool'></i>"
         },
         "leisure=sauna": {
-          "zoom": 16,
-          "taginfo": "leisure=sauna, sauna:type=*",
-          "sign": "<i class=\"fa fa-thermometer-full\" aria-hidden=\"true\"></i>"
+            "zoom": 16,
+            "taginfo": "leisure=sauna, sauna:type=*",
+            "sign": "<i class=\"fa fa-thermometer-full\" aria-hidden=\"true\"></i>"
         }
     }
 }

From 24b3e32fc761c65b0c3cb64483ea7177ed6a2704 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 28 Nov 2018 21:59:12 +0100
Subject: [PATCH 054/108] office: icons for common office types (+ german
 translation)

---
 office.json | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/office.json b/office.json
index 5675114f7..75bd82820 100644
--- a/office.json
+++ b/office.json
@@ -2,7 +2,7 @@
     "type": "overpass",
     "name": {
         "en": "Offices",
-        "de": "Büros"
+        "de": "Ämter, Dienst- und Geschäftsstellen"
     },
     "query": {
         "14": "nwr[office]"
@@ -11,6 +11,34 @@
         "description": [
             "{{ tagTrans('office', tags.office) }}",
             "{% if tags.office == 'government' and tags.government %}({{ tagTrans('government', tags.government) }}){% endif %}"
-        ]
+        ],
+        "markerSign": "{{ const[tags.office]|raw }}"
+    },
+    "const": {
+        "government": "<i class='fas fa-landmark'></i>",
+        "company": "<i class='fas fa-building'></i>",
+        "estate_agent": "<i class='fas fa-home'></i>",
+        "insurance": "<i class='fas fa-file-signature'></i>",
+        "lawyer": "<i class='fas fa-gavel'></i>",
+        "educational_institution": "<i class='fas fa-school'></i>",
+        "administrative": "<i class='fas fa-landmark'></i>",
+        "telecommunication": "<i class='fas fa-phone'></i>",
+        "ngo": "<i class='fas fa-people-carry'></i>",
+        "quango": "<i class='fas fa-people-carry'></i>",
+        "association": "<i class='fas fa-people-carry'></i>",
+        "it": "<i class='fas fa-desktop'></i>",
+        "accountant": "<i class='fas fa-money-bill-alt'></i>",
+        "tax_advisor": "<i class='fas fa-money-bill-alt'></i>",
+        "employment_agency": "<i class='fas fa-user'></i>",
+        "research": "<i class='fas fa-flask'></i>",
+        "religion": "<i class='fas fa-pray'></i>",
+        "architect": "<i class='fas fa-torii-gate'></i>",
+        "financial": "<i class='fas fa-money-bill'></i>",
+        "newspaper": "<i class='fas fa-newspaper'></i>",
+        "political_party": "<i class='fas fa-flag'></i>",
+        "advertising_agency": "<i class='fas fa-ad'></i>",
+        "therapist": "<i class='fas fa-couch'></i>",
+        "travel_agent": "<i class='fas fa-plane-departure'></i>",
+        "publisher": "<i class='fas fa-book'></i>"
     }
 }

From 81fdc3ea6a407e249dea484cb3b2ebbb7b5858bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 28 Nov 2018 22:00:21 +0100
Subject: [PATCH 055/108] Make 'office' translateable

---
 lang/ast.json      | 1 +
 lang/ca.json       | 1 +
 lang/cs.json       | 1 +
 lang/de.json       | 1 +
 lang/el.json       | 1 +
 lang/en.json       | 1 +
 lang/es.json       | 1 +
 lang/et.json       | 1 +
 lang/fr.json       | 1 +
 lang/hu.json       | 1 +
 lang/it.json       | 1 +
 lang/ja.json       | 1 +
 lang/nl.json       | 1 +
 lang/pl.json       | 1 +
 lang/pt-br.json    | 1 +
 lang/pt.json       | 1 +
 lang/ro.json       | 1 +
 lang/ru.json       | 1 +
 lang/template.json | 1 +
 lang/uk.json       | 1 +
 20 files changed, 20 insertions(+)

diff --git a/lang/ast.json b/lang/ast.json
index 5fa37e6c3..5439d69ff 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -36,6 +36,7 @@
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "Formaciones naturales",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Otres",
     "category:outdoor": "",
diff --git a/lang/ca.json b/lang/ca.json
index 96fa71a63..2b4a38dfe 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -36,6 +36,7 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
diff --git a/lang/cs.json b/lang/cs.json
index f0b37061d..ac91fbc36 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -36,6 +36,7 @@
     "category:military": "Vojenské",
     "category:mtb-routes": "",
     "category:natural": "Přírodní úkazy",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Jiné",
     "category:outdoor": "",
diff --git a/lang/de.json b/lang/de.json
index 4ad4de754..8056518e1 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -36,6 +36,7 @@
     "category:military": "Militär",
     "category:mtb-routes": "",
     "category:natural": "Geographische Objekte",
+    "category:office": "Ämter, Dienst- und Geschäftsstellen",
     "category:oil_gas": "Erdöl und Erdgas",
     "category:other": "Andere",
     "category:outdoor": "Freiluftaktivitäten",
diff --git a/lang/el.json b/lang/el.json
index 0e3e53c41..6daf1ec03 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -36,6 +36,7 @@
     "category:military": "Στρατιωτικό",
     "category:mtb-routes": "",
     "category:natural": "Φυσικοί Σχηματισμοί",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
diff --git a/lang/en.json b/lang/en.json
index 5d3ee21e2..8d7fa635c 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -36,6 +36,7 @@
     "category:military": "Military",
     "category:mtb-routes": "Mountain bike routes",
     "category:natural": "Natural Formations",
+    "category:office": "Offices",
     "category:oil_gas": "Petroleum and natural gas",
     "category:other": "Other",
     "category:outdoor": "Outdoor activities",
diff --git a/lang/es.json b/lang/es.json
index 3e5f459c7..75245e17d 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -36,6 +36,7 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
diff --git a/lang/et.json b/lang/et.json
index c36a0a5d4..e8985de6b 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -36,6 +36,7 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Ülejäänud",
     "category:outdoor": "",
diff --git a/lang/fr.json b/lang/fr.json
index 139faf731..f5752b13b 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -36,6 +36,7 @@
     "category:military": "Militaire",
     "category:mtb-routes": "Itinéraires de VTT",
     "category:natural": "Éléments naturels",
+    "category:office": "",
     "category:oil_gas": "Pétrole et gaz naturel",
     "category:other": "Autres",
     "category:outdoor": "Activités de plein air",
diff --git a/lang/hu.json b/lang/hu.json
index fbc2661b3..b188f7ac4 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -36,6 +36,7 @@
     "category:military": "Katonai objektumok",
     "category:mtb-routes": "Hegyikerékpáros útvonalak",
     "category:natural": "Természeti képződmények",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Egyéb",
     "category:outdoor": "Szabadtéri tevékenységek",
diff --git a/lang/it.json b/lang/it.json
index 1151e1ed6..75dff9682 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -36,6 +36,7 @@
     "category:military": "Militare",
     "category:mtb-routes": "",
     "category:natural": "Natura",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Altri",
     "category:outdoor": "",
diff --git a/lang/ja.json b/lang/ja.json
index ffe1bee9e..01be5468d 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -36,6 +36,7 @@
     "category:military": "軍事",
     "category:mtb-routes": "",
     "category:natural": "自然地層",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "その他",
     "category:outdoor": "",
diff --git a/lang/nl.json b/lang/nl.json
index bbe5dba85..39911ad2e 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -36,6 +36,7 @@
     "category:military": "Militair",
     "category:mtb-routes": "",
     "category:natural": "Natuurlijke Formaties",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Andere",
     "category:outdoor": "",
diff --git a/lang/pl.json b/lang/pl.json
index 9fbc7606c..b4709717f 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -36,6 +36,7 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index 6234ebcf3..04af446a3 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -36,6 +36,7 @@
     "category:military": "Militar",
     "category:mtb-routes": "Rotas de mountain bike",
     "category:natural": "Formações naturais",
+    "category:office": "",
     "category:oil_gas": "Petróleo e gás",
     "category:other": "Outros",
     "category:outdoor": "Atividades ao ar livre",
diff --git a/lang/pt.json b/lang/pt.json
index 6ab52c24f..ac5a8aa7a 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -36,6 +36,7 @@
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "Formações naturais",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Outros",
     "category:outdoor": "",
diff --git a/lang/ro.json b/lang/ro.json
index 96f91501a..857f9e064 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -36,6 +36,7 @@
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Altele",
     "category:outdoor": "",
diff --git a/lang/ru.json b/lang/ru.json
index 55da1a6b1..0d2c78d30 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -36,6 +36,7 @@
     "category:military": "Вооружённые силы",
     "category:mtb-routes": "",
     "category:natural": "Природные образования",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Прочее",
     "category:outdoor": "",
diff --git a/lang/template.json b/lang/template.json
index a90e42ee0..135ff395f 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -36,6 +36,7 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "",
     "category:outdoor": "",
diff --git a/lang/uk.json b/lang/uk.json
index d0d6c6cb9..cb3d073b3 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -36,6 +36,7 @@
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "Природне середовище",
+    "category:office": "",
     "category:oil_gas": "",
     "category:other": "Інше",
     "category:outdoor": "",

From e081492023ef50b8008e8470d95830509c51bf66 Mon Sep 17 00:00:00 2001
From: Cybereric <Cybereric@users.noreply.github.com>
Date: Thu, 29 Nov 2018 02:08:42 +0100
Subject: [PATCH 056/108] Update fr.json

---
 lang/fr.json | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lang/fr.json b/lang/fr.json
index f5752b13b..59026796c 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -18,7 +18,7 @@
     "category:cycle_amenities": "Équipements vélo",
     "category:cycle_routes": "Itinéraires vélo",
     "category:education": "Éducation",
-    "category:electric_power": "Énergie électrique",
+    "category:electric_power": "Production/transport électrique",
     "category:emergency": "Services d'urgence",
     "category:energy": "Énergie",
     "category:financial": "Finance",
@@ -36,7 +36,7 @@
     "category:military": "Militaire",
     "category:mtb-routes": "Itinéraires de VTT",
     "category:natural": "Éléments naturels",
-    "category:office": "",
+    "category:office": "Bureaux",
     "category:oil_gas": "Pétrole et gaz naturel",
     "category:other": "Autres",
     "category:outdoor": "Activités de plein air",
@@ -45,7 +45,7 @@
     "category:places_geo": "Lieux",
     "category:playgrounds": "Jeux pour enfants",
     "category:post": "",
-    "category:power_routes": "",
+    "category:power_routes": "Réseaux électriques",
     "category:pt": "Carte des transports publics",
     "category:pt:routes": "Lignes",
     "category:pt:stops": "Arrêts/Stops, Stations",
@@ -64,7 +64,7 @@
     "category:shop": "Magasins/Boutiques",
     "category:special": "Catégories spéciales",
     "category:sport": "Sports",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Natation/Baignade/Bains",
     "category:tourism_attractions": "Tourisme",
     "category:tourism_services": "Tourisme",
     "category:transport": "Transports",
@@ -78,5 +78,5 @@
     "category:water": "Hydrographie",
     "category:wikipedia": "Wikipédia",
     "category:works": "Zones industrielles",
-    "category:xmas": ""
+    "category:xmas": "Noël"
 }

From 2bcf2bd9174e72ceaae4be3645fa3301c02448ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 29 Nov 2018 13:50:53 +0100
Subject: [PATCH 057/108] Import fr translations to categories

---
 electric_power.json   | 2 +-
 office.json           | 3 ++-
 power_routes.json     | 3 ++-
 swimming_bathing.json | 3 ++-
 xmas.json             | 3 ++-
 5 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/electric_power.json b/electric_power.json
index 7a54e914f..e2cee9764 100644
--- a/electric_power.json
+++ b/electric_power.json
@@ -6,7 +6,7 @@
         "de": "Elektrischer Strom",
         "en": "Electric Power",
         "et": "Elekter",
-        "fr": "Énergie électrique",
+        "fr": "Production/transport électrique",
         "hu": "Áramellátás",
         "it": "Energia",
         "ja": "電力",
diff --git a/office.json b/office.json
index 75bd82820..c66872f32 100644
--- a/office.json
+++ b/office.json
@@ -1,8 +1,9 @@
 {
     "type": "overpass",
     "name": {
+        "de": "Ämter, Dienst- und Geschäftsstellen",
         "en": "Offices",
-        "de": "Ämter, Dienst- und Geschäftsstellen"
+        "fr": "Bureaux"
     },
     "query": {
         "14": "nwr[office]"
diff --git a/power_routes.json b/power_routes.json
index dd3c6f455..4405a20c0 100644
--- a/power_routes.json
+++ b/power_routes.json
@@ -1,7 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "en": "Power routes"
+        "en": "Power routes",
+        "fr": "Réseaux électriques"
     },
     "query": {
         "10": "relation[type=route][route=power]"
diff --git a/swimming_bathing.json b/swimming_bathing.json
index 84dc48e97..eccb6016f 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Schwimmen und Baden",
-        "en": "Swimming and bathing"
+        "en": "Swimming and bathing",
+        "fr": "Natation/Baignade/Bains"
     },
     "query": {
         "13": [
diff --git a/xmas.json b/xmas.json
index 91adbfc45..ab7280291 100644
--- a/xmas.json
+++ b/xmas.json
@@ -1,7 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "en": "Christmas"
+        "en": "Christmas",
+        "fr": "Noël"
     },
     "query": {
         "14": [

From b998f6f177e9aea9ccce8094a78ceb41458efddf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 29 Nov 2018 14:16:01 +0100
Subject: [PATCH 058/108] Re-order fields (like openstreetbrowser-editor
 orders)

---
 car_maxspeed.json |  2 +-
 cycle_routes.json | 50 ++++++++++++-------------
 pt.json           | 94 +++++++++++++++++++++++------------------------
 3 files changed, 73 insertions(+), 73 deletions(-)

diff --git a/car_maxspeed.json b/car_maxspeed.json
index b2249f360..b077c9616 100644
--- a/car_maxspeed.json
+++ b/car_maxspeed.json
@@ -53,7 +53,7 @@
             "{{ trans('unknown') }}",
             "{% endif %}"
         ],
-        "markerSymbol": null,
+        "markerSymbol": "",
         "listMarkerSymbol": "line",
         "style": {
             "width": "3",
diff --git a/cycle_routes.json b/cycle_routes.json
index 828dfaf76..2cb57edd7 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -16,18 +16,18 @@
     },
     "members": true,
     "feature": {
-        "priority": "{{ const[tags.network].priority|default(4) }}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
         "description": "{{ tagTrans('network', tags.network) }}",
+        "markerSymbol": "",
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[tags.network].color|default(const[''].color) })|raw }}",
-        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "priority": "{{ const[tags.network].priority|default(4) }}",
         "styles": "",
         "style:hover": {
-            "width": 0
+            "width": "0"
         },
         "style:selected": {
-            "width": 0
-        },
-        "markerSymbol": ""
+            "width": "0"
+        }
     },
     "memberFeature": {
         "pre": [
@@ -72,62 +72,62 @@
         "listExclude": "1",
         "styles": "default{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}",
         "style": {
-            "color": "{{ const[network].color }}",
             "width": "4",
+            "color": "{{ const[network].color }}",
+            "opacity": "1",
+            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
             "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}",
             "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}",
-            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
             "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
-            "opacity": 1,
             "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
-            "textFontWeight": "bold",
             "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
-            "pattern-pixelSize": "9",
-            "pattern-repeat": "35",
             "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
             "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
             "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
             "pattern-path-width": "0",
+            "pattern-path-color": "{{ const[network].color }}",
             "pattern-path-fillOpacity": "1",
-            "pattern-path-color": "{{ const[network].color }}"
+            "textFontWeight": "bold"
         },
         "style:hover": {
             "pane": "hover",
             "width": "4",
+            "color": "black",
+            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
             "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}",
             "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}",
-            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
             "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
-            "color": "black",
             "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
-            "pattern-pixelSize": "9",
-            "pattern-repeat": "35",
             "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
             "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
             "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
             "pattern-path-width": "0",
-            "pattern-path-fillOpacity": "1",
-            "pattern-path-color": "black"
+            "pattern-path-color": "black",
+            "pattern-path-fillOpacity": "1"
         },
         "style:selected": {
             "pane": "selected",
             "width": "4",
+            "color": "#3f3f3f",
+            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
             "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}",
             "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}",
-            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
             "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
-            "color": "#3f3f3f",
             "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
-            "pattern-pixelSize": "9",
-            "pattern-repeat": "35",
             "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
             "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
             "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
             "pattern-path-width": "0",
-            "pattern-path-fillOpacity": "1",
-            "pattern-path-color": "#3f3f3f"
+            "pattern-path-color": "#3f3f3f",
+            "pattern-path-fillOpacity": "1"
         }
     },
     "const": {
diff --git a/pt.json b/pt.json
index 7ade18d46..9c26bf2d2 100644
--- a/pt.json
+++ b/pt.json
@@ -69,10 +69,10 @@
         "markerSymbol": "",
         "styles": "",
         "style:hover": {
-            "width": 0
+            "width": "0"
         },
         "style:selected": {
-            "width": 0
+            "width": "0"
         },
         "listStopsExclude": "true",
         "listRoutesMarkerSign": "{{ const[tags.route].sign|raw }}",
@@ -136,78 +136,78 @@
             "{% endfor %}",
             "</ul>"
         ],
+        "markerSign": " ",
+        "markerSymbol": "{% if isStop and stopCount > 0 %}{% if hover or selected %}{{ markerPointer({ })|raw }}{% endif %}{% endif %}",
         "styles": "{% if isStop and stopCount > 0 %}stop{% elseif isWay %}casing,way{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}{% endif %}",
+        "style:hover": {
+            "pane": "hover",
+            "width": "4",
+            "color": "black",
+            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}",
+            "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
+            "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
+            "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "black",
+            "pattern-path-fillOpacity": "1"
+        },
+        "style:selected": {
+            "pane": "selected",
+            "width": "4",
+            "color": "#3f3f3f",
+            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}",
+            "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
+            "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
+            "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "#3f3f3f",
+            "pattern-path-fillOpacity": "1"
+        },
         "listStopsMarkerSign": null,
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
         "listStopsTitle": "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}",
         "listStopsDescription": "{{ refs|join(' · ') }}",
         "listRoutesExclude": "true",
-        "markerSymbol": "{% if isStop and stopCount > 0 %}{% if hover or selected %}{{ markerPointer({ })|raw }}{% endif %}{% endif %}",
-        "markerSign": " ",
         "style:stop": {
-            "color": "{{ color|default('#ff0000') }}",
             "width": "4",
+            "color": "{{ color|default('#ff0000') }}",
             "radius": "3",
             "zIndex": "1"
         },
         "style:way": {
-            "color": "{{ color|default('#ff0000') }}",
             "width": "4",
+            "color": "{{ color|default('#ff0000') }}",
+            "opacity": "1",
+            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
             "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}",
             "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}",
-            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
             "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
-            "opacity": 1,
             "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
-            "textFontWeight": "bold",
             "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
-            "pattern-pixelSize": "9",
-            "pattern-repeat": "35",
             "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
-            "pattern-polygon": "true",
-            "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
-            "pattern-path-width": "0",
-            "pattern-path-fillOpacity": "1",
-            "pattern-path-color": "{{ color|default('#ff0000') }}"
-        },
-        "style:hover": {
-            "pane": "hover",
-            "width": "4",
-            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}",
-            "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}",
-            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
-            "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
-            "color": "black",
-            "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
-            "pattern-pixelSize": "9",
             "pattern-repeat": "35",
-            "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
             "pattern-polygon": "true",
-            "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
-            "pattern-path-width": "0",
-            "pattern-path-fillOpacity": "1",
-            "pattern-path-color": "black"
-        },
-        "style:selected": {
-            "pane": "selected",
-            "width": "4",
-            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}",
-            "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}",
-            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
-            "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
-            "color": "#3f3f3f",
-            "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
             "pattern-pixelSize": "9",
-            "pattern-repeat": "35",
-            "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
-            "pattern-polygon": "true",
-            "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
             "pattern-path-width": "0",
+            "pattern-path-color": "{{ color|default('#ff0000') }}",
             "pattern-path-fillOpacity": "1",
-            "pattern-path-color": "#3f3f3f"
+            "textFontWeight": "bold"
         }
     },
     "info": [

From 9ef5a06731ceb9e6b9ee37e7e2f88f22d72ab746 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 29 Nov 2018 18:44:31 +0100
Subject: [PATCH 059/108] public: include office=government and
 office=administration

---
 public.json | 40 ++++++++++++++++++++++++++++------------
 1 file changed, 28 insertions(+), 12 deletions(-)

diff --git a/public.json b/public.json
index cf28f627a..63061c054 100644
--- a/public.json
+++ b/public.json
@@ -27,6 +27,7 @@
             "node[amenity=recycling][recyling_type=centre];",
             "way[amenity=recycling][recyling_type=centre];",
             "relation[amenity=recycling][recyling_type=centre];",
+            "nwr[office~\"^(government|administration)$\"];",
             ");"
         ],
         "16": [
@@ -35,23 +36,36 @@
             "way[amenity~'^(courthouse|embassy|public_building|townhall|recycling|toilets)$'];",
             "relation[amenity~'^(courthouse|embassy|public_building|townhall|recycling|toilets)$'];",
             "node[drinking_water];",
+            "nwr[office~\"^(government|administration)$\"];",
             ");"
         ]
     },
     "feature": {
         "pre": [
             "{% if tags.drinking_water %}",
+            "{% set key = 'amenity' %}",
             "{% set value = 'drinking_water' %}",
-            "{% else %}",
+            "{% elseif tags.amenity %}",
+            "{% set key = 'amenity' %}",
             "{% set value = tags.amenity %}",
+            "{% elseif tags.office %}",
+            "{% set key = 'office' %}",
+            "{% set value = tags.office %}",
             "{% endif %}"
         ],
         "title": "{{ tags.name|default(tags.operator)|default(tagTrans('amenity', value)) }}",
-        "description": "{{ tagTrans('amenity', value) }}",
+        "description": [
+            "{% if key == 'office' %}",
+            "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
+            "{% else %}",
+            "  {{ tagTrans(key, value) }}",
+            "{% endif %}"
+        ],
         "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ tags.operator }}<br/>{% endif %}",
         "markerSign": [
-            "{% if const[value] %}",
-            "{{ const[value]|raw }}",
+            "{% set kv = key ~ '=' ~ value %}",
+            "{% if const[kv] %}",
+            "{{ const[kv]|raw }}",
             "{% endif %}"
         ]
     },
@@ -66,13 +80,15 @@
         "</table>"
     ],
     "const": {
-        "courthouse": "⚖",
-        "clock": "<i class='fa fa-clock-o' aria-hidden='true'></i>",
-        "drinking_water": "<img src='maki:drinking-water'>",
-        "embassy": "<img src='maki:embassy'>",
-        "public_building": "<img src='maki:building'>",
-        "recycling": "<img src='maki:recycling'>",
-        "toilets": "<img src='maki:toilet'>",
-        "townhall": "<img src='maki:town-hall'>"
+        "amenity=courthouse": "⚖",
+        "amenity=clock": "<i class='fa fa-clock-o' aria-hidden='true'></i>",
+        "amenity=drinking_water": "<img data-src='maki:drinking-water'>",
+        "amenity=embassy": "<img data-src='maki:embassy'>",
+        "amenity=public_building": "<img data-src='maki:building'>",
+        "amenity=recycling": "<img data-src='maki:recycling'>",
+        "amenity=toilets": "<img data-src='maki:toilet'>",
+        "amenity=townhall": "<img data-src='maki:town-hall'>",
+        "office=administration": "<img data-src='maki:town-hall'>",
+        "office=government": "<img data-src='maki:town-hall'>"
     }
 }

From 4662e01bf4779e9a72fec2cd2a84ee5acb15c0ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 29 Nov 2018 18:53:46 +0100
Subject: [PATCH 060/108] education: include office=educational_institution and
 =research

---
 education.json | 51 ++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 37 insertions(+), 14 deletions(-)

diff --git a/education.json b/education.json
index c366e82f1..5b4772da6 100644
--- a/education.json
+++ b/education.json
@@ -32,6 +32,7 @@
             "node[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
             "way[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
             "relation[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
+            "nwr[office~\"^(educational_institution|research)$\"];",
             ")"
         ],
         "16": [
@@ -39,20 +40,30 @@
             "node[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
             "way[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
             "relation[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
+            "nwr[office~\"^(educational_institution|research)$\"];",
             ")"
         ]
     },
     "feature": {
-        "description": "{{ tagTrans('amenity', tags.amenity) }}",
+        "pre": [
+            "{% if tags.office == 'educational_institution' or tags.office == 'research' %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% else %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = tags.amenity %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTrans(key, value) }}",
         "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ tags.operator }}<br/>{% endif %}",
         "markerSign": [
-            "{% set data = const[tags.amenity] %}",
+            "{% set data = const[key ~ '=' ~ value] %}",
             "{% if data %}",
-            "{{ data.sign }}",
+            "{{ data.sign|raw }}",
             "{% endif %}"
         ],
         "priority": [
-            "{% set data = const[tags.amenity] %}",
+            "{% set data = const[key ~ '=' ~ value] %}",
             "{% if data %}",
             "{{ data.priority }}",
             "{% endif %}"
@@ -60,51 +71,63 @@
     },
     "info": [
         "<table>",
-        "{% for value, data in const %}",
+        "{% for kv, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign }}</div></td>",
-        "    <td>{{ tagTrans('amenity', value) }}</td>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>",
+        "      {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
-        "university": {
+        "amenity=university": {
             "priority": 0,
             "sign": "🎓",
             "zoom": 11
         },
-        "college": {
+        "amenity=college": {
             "priority": 1,
             "sign": "🎓",
             "zoom": 11
         },
-        "library": {
+        "amenity=library": {
             "priority": 2,
             "sign": "🕮",
             "zoom": 11
         },
-        "school": {
+        "amenity=school": {
             "priority": 3,
             "sign": "🏫",
             "zoom": 14
         },
-        "language_school": {
+        "amenity=language_school": {
             "priority": 3,
             "sign": "🏫",
             "zoom": 14
         },
-        "kindergarten": {
+        "amenity=kindergarten": {
             "priority": 4,
             "sign": "⛹",
             "zoom": 14
         },
-        "public_bookcase": {
+        "amenity=public_bookcase": {
             "priority": 5,
             "sign": "📚",
             "zoom": 16
+        },
+        "office=educational_institution": {
+            "priority": 3,
+            "sign": "🏢",
+            "zoom": 14
+        },
+        "office=research": {
+            "priority": 3,
+            "sign": "<i class='fas fa-vials'></i>",
+            "zoom": 14
         }
     }
 }

From 18cb2fdd53bf8436fd8df58e9f2e3c0a9e9b515e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 29 Nov 2018 19:05:02 +0100
Subject: [PATCH 061/108] communication: include office=telecommunication and
 office=it

---
 communication.json | 48 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 40 insertions(+), 8 deletions(-)

diff --git a/communication.json b/communication.json
index 27f8372c7..dbdb66216 100644
--- a/communication.json
+++ b/communication.json
@@ -25,21 +25,38 @@
             "node[amenity~'^(post_office|internet_cafe)$'];",
             "way[amenity~'^(post_office|internet_cafe)$'];",
             "relation[amenity~'^(post_office|internet_cafe)$'];",
+            "nwr[office~\"^(telecommunication|it)$\"];",
             ");"
         ],
         "16": [
             "(node[amenity~'^(post_office|internet_cafe|post_box|telephone)$'];",
             "way[amenity~'^(post_office|internet_cafe)$'];",
             "relation[amenity~'^(post_office|internet_cafe)$'];",
+            "nwr[office~\"^(telecommunication|it)$\"];",
             ");"
         ]
     },
     "feature": {
+        "pre": [
+            "{% if tags.amenity %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = tags.amenity %}",
+            "{% else %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% endif %}"
+        ],
         "title": "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) |default(tagTrans('amenity', tags.amenity)) }}",
-        "description": "{{ tagTrans('amenity', tags.amenity) }}",
+        "description": [
+            "{% if key == 'office' %}",
+            "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
+            "{% else %}",
+            "  {{ tagTrans(key, value) }}",
+            "{% endif %}"
+        ],
         "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}<br/>{% endif %}",
         "markerSign": [
-            "{% set data = const[tags.amenity] %}",
+            "{% set data = const[key ~ '=' ~ value] %}",
             "{% if data %}",
             "{{ data.sign|raw }}",
             "{% endif %}"
@@ -47,30 +64,45 @@
     },
     "info": [
         "<table>",
-        "{% for value, data in const %}",
+        "{% for kv, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('amenity', value) }}</td>",
+        "    <td>",
+        "      {% if kv|split('=')[0] == 'office' %}",
+        "        {{ keyTrans('office') }}",
+        "        ({{ tagTrans('office', kv|split('=')[1]) }})",
+        "      {% else %}",
+        "        {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "      {% endif %}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
-        "post_office": {
+        "amenity=post_office": {
             "sign": "<img src='maki:post?size=15'>",
             "zoom": 13
         },
-        "post_box": {
+        "amenity=post_box": {
             "sign": "<img src='maki:post?size=11'>",
             "zoom": 16
         },
-        "internet_cafe": {
+        "amenity=internet_cafe": {
             "sign": "<i class='fa fa-laptop' aria-hidden='true'></i>",
             "zoom": 13
         },
-        "telephone": {
+        "office=telecommunication": {
+            "sign": "<img src='maki:building'>",
+            "zoom": 13
+        },
+        "office=it": {
+            "sign": "<i class='fas fa-desktop'></i>",
+            "zoom": 13
+        },
+        "amenity=telephone": {
             "sign": "<img src='maki:telephone'>",
             "zoom": 16
         }

From 4340a38dd2a50fc47fe7149f0153266bd0611394 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?=
 <plepe@noreply.openstreetbrowser.org>
Date: Mon, 3 Dec 2018 21:49:00 +0100
Subject: [PATCH 062/108] xmas: show features from z13

---
 xmas.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xmas.json b/xmas.json
index ab7280291..89049a8cc 100644
--- a/xmas.json
+++ b/xmas.json
@@ -5,7 +5,7 @@
         "fr": "Noël"
     },
     "query": {
-        "14": [
+        "13": [
             "(",
             "node[\"xmas:feature\"];",
             "way[\"xmas:feature\"];",

From 059abb67d7bcc89cc3fdfd48295c46812d4aef0c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?=
 <plepe@noreply.openstreetbrowser.org>
Date: Mon, 3 Dec 2018 22:11:57 +0100
Subject: [PATCH 063/108] xmas: show outdated features in red

---
 xmas.json | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/xmas.json b/xmas.json
index 89049a8cc..5f698b96c 100644
--- a/xmas.json
+++ b/xmas.json
@@ -14,9 +14,17 @@
         ]
     },
     "feature": {
+        "pre": [
+            "{% set isCurrent = meta.timestamp > now|date_modify('-1 month')|date('Y') %}",
+            "{% set bgColor = isCurrent ? '#f2756a' : 'red' %}"
+        ],
         "title": "{{ attribute(tags, \"xmas:name\")|default(trans(\"unnamed\")) }}",
         "description": "{{ tagTransList(\"xmas:feature\", attribute(tags, \"xmas:feature\")) }}",
         "body": [
+            "{% if not isCurrent %}",
+            "<div style='border: 1px solid red; padding: 2px; margin-bottom: 2px;'>Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date.</div>",
+            "{% endif %}",
+            "",
             "{% if attribute(tags, 'xmas:location') %}",
             "<li class='hasSymbol'>",
             "  <i class=\"fa fa-globe\" aria-hidden=\"true\"></i>",
@@ -60,7 +68,9 @@
         "markerSign": [
             "{{ attribute(const, attribute(tags, 'xmas:feature'))|raw }}",
             ""
-        ]
+        ],
+        "markerSymbol": "{{ markerPointer({\"fillColor\":bgColor})|raw }}",
+        "listMarkerSymbol": "{{ markerCircle({\"fillColor\":bgColor})|raw }}"
     },
     "const": {
         "market": "<img src='maki:commercial'>",

From 643a607701ead913a13bdab4a7b7664270f46646 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?=
 <plepe@noreply.openstreetbrowser.org>
Date: Mon, 3 Dec 2018 22:26:11 +0100
Subject: [PATCH 064/108] xmas: add outdated feature to map key;

---
 xmas.json | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/xmas.json b/xmas.json
index 5f698b96c..f285e1c6f 100644
--- a/xmas.json
+++ b/xmas.json
@@ -86,6 +86,10 @@
         "    <td>{{ tagTrans('xmas:feature', value) }}</td>",
         "  </tr>",
         "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({\"fillColor\":\"red\"})|raw }}</td>",
+        "    <td>outdated feature</td>",
+        "  </tr>",
         "</table>"
     ]
 }

From 0cb5b80235679a4f1ea8e6d8a99c296d592f5a23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?=
 <plepe@noreply.openstreetbrowser.org>
Date: Mon, 3 Dec 2018 22:36:48 +0100
Subject: [PATCH 065/108] xmas: lint, german title

---
 xmas.json | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/xmas.json b/xmas.json
index f285e1c6f..3bc95f987 100644
--- a/xmas.json
+++ b/xmas.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "en": "Christmas",
-        "fr": "Noël"
+        "fr": "Noël",
+        "de": "Weihnachten"
     },
     "query": {
         "13": [
@@ -65,18 +66,15 @@
             "</li>",
             "{% endif %}"
         ],
-        "markerSign": [
-            "{{ attribute(const, attribute(tags, 'xmas:feature'))|raw }}",
-            ""
-        ],
+        "markerSign": "{{ attribute(const, attribute(tags, 'xmas:feature'))|raw }}",
         "markerSymbol": "{{ markerPointer({\"fillColor\":bgColor})|raw }}",
         "listMarkerSymbol": "{{ markerCircle({\"fillColor\":bgColor})|raw }}"
     },
     "const": {
-        "market": "<img src='maki:commercial'>",
+        "market": "<img data-src='maki:commercial'>",
         "tree": "<i class=\"fa fa-tree\" aria-hidden=\"true\"></i>",
         "shop": "<i class=\"fa fa-shopping-basket\" aria-hidden=\"true\"></i>",
-        "event": "<img src='maki:amusement-park'>"
+        "event": "<img data-src='maki:amusement-park'>"
     },
     "info": [
         "<table>",

From 5c080689cc15191fc32d6e2248d2fb589ffaa508 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 4 Dec 2018 09:18:32 +0100
Subject: [PATCH 066/108] new category organisations

---
 index.json         |  3 ++
 organisations.json | 75 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 78 insertions(+)
 create mode 100644 organisations.json

diff --git a/index.json b/index.json
index 77bd73e41..b2f33648e 100644
--- a/index.json
+++ b/index.json
@@ -100,6 +100,9 @@
                 },
                 {
                     "id": "tourism_services"
+                },
+                {
+                    "id": "organisations"
                 }
             ]
         },
diff --git a/organisations.json b/organisations.json
new file mode 100644
index 000000000..dcc1aa4bf
--- /dev/null
+++ b/organisations.json
@@ -0,0 +1,75 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Organisations"
+    },
+    "query": {
+        "13": [
+            "(",
+            "nwr[office~\"^(ngo|quango|political_party|association|charity)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% set key = 'office' %}",
+            "{% set value = tags.office %}",
+            ""
+        ],
+        "description": "{{ tagTrans(key, value) }}",
+        "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ tags.operator }}<br/>{% endif %}",
+        "markerSign": [
+            "{% set data = const[key ~ '=' ~ value] %}",
+            "{% if data %}",
+            "{{ data.sign|raw }}",
+            "{% endif %}"
+        ],
+        "priority": [
+            "{% set data = const[key ~ '=' ~ value] %}",
+            "{% if data %}",
+            "{{ data.priority }}",
+            "{% endif %}"
+        ]
+    },
+    "info": [
+        "<table>",
+        "{% for kv, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>",
+        "      {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "    </td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "</table>"
+    ],
+    "const": {
+        "office=ngo": {
+            "priority": 0,
+            "sign": "<i class='fas fa-users'></i>",
+            "zoom": 13
+        },
+        "office=quango": {
+            "priority": 0,
+            "sign": "<i class='fas fa-users'></i>",
+            "zoom": 13
+        },
+        "office=political_party": {
+            "priority": 0,
+            "sign": "<i class='fas fa-flag'></i>",
+            "zoom": 13
+        },
+        "office=association": {
+            "priority": 0,
+            "sign": "<i class='fas fa-people-carry'></i>",
+            "zoom": 13
+        },
+        "office=charity": {
+            "priority": 0,
+            "sign": "<i class='fas fa-hands-helping'></i>",
+            "zoom": 13
+        }
+    }
+}

From 27752f8cf7998aac33d3b36a58a1c502e6339015 Mon Sep 17 00:00:00 2001
From: Igor Eliezer <IgorEliezer@users.noreply.github.com>
Date: Wed, 5 Dec 2018 04:54:55 -0200
Subject: [PATCH 067/108] Update pt-br.json

---
 lang/pt-br.json | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lang/pt-br.json b/lang/pt-br.json
index 04af446a3..cbafd234d 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -36,7 +36,7 @@
     "category:military": "Militar",
     "category:mtb-routes": "Rotas de mountain bike",
     "category:natural": "Formações naturais",
-    "category:office": "",
+    "category:office": "Escritórios e agências",
     "category:oil_gas": "Petróleo e gás",
     "category:other": "Outros",
     "category:outdoor": "Atividades ao ar livre",
@@ -45,12 +45,12 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parquinhos",
     "category:post": "Correios",
-    "category:power_routes": "",
+    "category:power_routes": "Rotas de energia",
     "category:pt": "Mapa de transporte público",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "Paradas e estações",
     "category:pt_amenities": "Equipamentos",
-    "category:public": "Serviços públicos",
+    "category:public": "Utilidade pública",
     "category:railway": "Ferrovia",
     "category:railway-electrification": "Eletrificação ferroviária",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
@@ -64,9 +64,9 @@
     "category:shop": "Compras",
     "category:special": "Especial",
     "category:sport": "Esportes",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Natação e banho",
     "category:tourism_attractions": "Turismo",
-    "category:tourism_services": "Serviços de turismo",
+    "category:tourism_services": "Serviços turísticos",
     "category:transport": "Mobilidade",
     "category:transport_alternative": "Transporte alternativo",
     "category:transport_car": "Tráfego individual",
@@ -78,5 +78,5 @@
     "category:water": "Hidrografia",
     "category:wikipedia": "Wikipédia",
     "category:works": "Fábricas",
-    "category:xmas": ""
+    "category:xmas": "Natal"
 }

From 3d9fa74b08a5da0baae309e1b9cdc53d2298cd00 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 5 Dec 2018 09:15:44 +0100
Subject: [PATCH 068/108] Import pt-br translations to categories

---
 office.json           | 3 ++-
 power_routes.json     | 3 ++-
 public.json           | 2 +-
 swimming_bathing.json | 3 ++-
 tourism_services.json | 2 +-
 xmas.json             | 3 ++-
 6 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/office.json b/office.json
index c66872f32..b0166cdd5 100644
--- a/office.json
+++ b/office.json
@@ -3,7 +3,8 @@
     "name": {
         "de": "Ämter, Dienst- und Geschäftsstellen",
         "en": "Offices",
-        "fr": "Bureaux"
+        "fr": "Bureaux",
+        "pt-br": "Escritórios e agências"
     },
     "query": {
         "14": "nwr[office]"
diff --git a/power_routes.json b/power_routes.json
index 4405a20c0..39122720a 100644
--- a/power_routes.json
+++ b/power_routes.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "en": "Power routes",
-        "fr": "Réseaux électriques"
+        "fr": "Réseaux électriques",
+        "pt-br": "Rotas de energia"
     },
     "query": {
         "10": "relation[type=route][route=power]"
diff --git a/public.json b/public.json
index cf28f627a..4fad62c59 100644
--- a/public.json
+++ b/public.json
@@ -13,7 +13,7 @@
         "ja": "公共サービス",
         "nl": "Openbare diensten",
         "pt": "Serviços públicos",
-        "pt-br": "Serviços públicos",
+        "pt-br": "Utilidade pública",
         "ro": "Servicii publice",
         "ru": "Общественные места",
         "uk": "Громадські місця"
diff --git a/swimming_bathing.json b/swimming_bathing.json
index eccb6016f..7b735beb2 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -3,7 +3,8 @@
     "name": {
         "de": "Schwimmen und Baden",
         "en": "Swimming and bathing",
-        "fr": "Natation/Baignade/Bains"
+        "fr": "Natation/Baignade/Bains",
+        "pt-br": "Natação e banho"
     },
     "query": {
         "13": [
diff --git a/tourism_services.json b/tourism_services.json
index 721916ed8..7a2182ffe 100644
--- a/tourism_services.json
+++ b/tourism_services.json
@@ -14,7 +14,7 @@
         "nl": "Toerisme",
         "pl": "Turystyka",
         "pt": "Turismo",
-        "pt-br": "Serviços de turismo",
+        "pt-br": "Serviços turísticos",
         "ro": "Turism",
         "ru": "Туризм",
         "uk": "Туризм"
diff --git a/xmas.json b/xmas.json
index 3bc95f987..d3ad2fdfa 100644
--- a/xmas.json
+++ b/xmas.json
@@ -1,9 +1,10 @@
 {
     "type": "overpass",
     "name": {
+        "de": "Weihnachten",
         "en": "Christmas",
         "fr": "Noël",
-        "de": "Weihnachten"
+        "pt-br": "Natal"
     },
     "query": {
         "13": [

From 3e0d9e69537379bb3b91e069b16396914fe7ce1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?=
 <plepe@noreply.openstreetbrowser.org>
Date: Thu, 6 Dec 2018 20:53:52 +0100
Subject: [PATCH 069/108] swimming_bathing: add amenity=shower (from z16)

---
 swimming_bathing.json | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/swimming_bathing.json b/swimming_bathing.json
index 7b735beb2..645b61366 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -25,7 +25,7 @@
             "nwr[natural~\"^(beach)\"];",
             "nwr[leisure~\"^(water_park|beach_resort)$\"];",
             "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(;.*|)$\"];",
-            "nwr[amenity=public_bath];",
+            "nwr[amenity~\"^(public_bath|shower)$\"];",
             "nwr[tourism=spa_resort];",
             "",
             "nwr[leisure=swimming_pool][access!=private];",
@@ -40,6 +40,9 @@
             "  {% set k = 'amenity' %}",
             "  {% set v = 'public_bath' %}",
             "  {% if attribute(tags, 'bath:type') %}{% set append = tagTrans('bath:type', attribute(tags, 'bath:type')) %}{% endif %}",
+            "{% elseif tags.amenity == 'shower' %}",
+            "  {% set k = 'amenity' %}",
+            "  {% set v = 'shower' %}",
             "{% elseif tags.tourism == 'spa_resort' %}",
             "  {% set k = 'tourism' %}",
             "  {% set v = tags.tourism %}",
@@ -130,6 +133,10 @@
             "zoom": 16,
             "taginfo": "leisure=sauna, sauna:type=*",
             "sign": "<i class=\"fa fa-thermometer-full\" aria-hidden=\"true\"></i>"
+        },
+        "amenity=shower": {
+            "zoom": 16,
+            "sign": "🚿 "
         }
     }
 }

From a66c807f628ba607f42975d7a2d7082163c3ee62 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 16 Dec 2018 22:17:44 +0100
Subject: [PATCH 070/108] buildings-height: similar markers as in building age

---
 buildings-height.json | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/buildings-height.json b/buildings-height.json
index 84c21afce..28c2e1490 100644
--- a/buildings-height.json
+++ b/buildings-height.json
@@ -14,9 +14,9 @@
     },
     "feature": {
         "pre": [
-            "{% if tags.height %}",
+            "{% if tags.height is defined %}",
             "{% set approxHeight = tags.height %}",
-            "{% elseif attribute(tags, 'building:levels') %}",
+            "{% elseif attribute(tags, 'building:levels') is defined %}",
             "{% set approxHeight = attribute(tags, 'building:levels') * 3.5 %}",
             "{% endif %}",
             "",
@@ -29,16 +29,16 @@
             "{% endif %}"
         ],
         "description": [
-            "{% if tags.height %}",
+            "{% if tags.height is defined %}",
             "{{ tags.height }}m",
             "{% endif %}",
             "",
-            "{% if attribute(tags, 'building:levels') %}",
+            "{% if attribute(tags, 'building:levels') is defined %}",
             "{{ attribute(tags, 'building:levels') }} {{ keyTrans('building:levels') }}",
             "{% endif %}"
         ],
         "markerSymbol": null,
-        "listMarkerSymbol": "{{ markerCircle({fillColor: color})|raw }}",
+        "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
         "priority": "{{ (approxHeight|default(0)) * -1 }}",
         "style": {
             "width": "1",
@@ -52,23 +52,23 @@
         "{{ tagTrans('height') }}",
         "<table>",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': '#7f7f7f' })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
         "    <td colspan>{{ trans('unknown') }}</td>",
         "  </tr>",
         "{% for i in range(0, 50, 10) %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['green', 'red'], i / 50) })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
         "    <td>{{ i }}m</td>",
         "  </tr>",
         "{% endfor %}",
         "{% for i in range(100, 250, 50) %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['red', 'yellow'], (i - 50) / 250) })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
         "    <td>{{ i }}m</td>",
         "  </tr>",
         "{% endfor %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': 'yellow' })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": \"300\" }))|raw }}</td>",
         "    <td>≥300m</td>",
         "  </tr>",
         "</table>",
@@ -78,23 +78,23 @@
         "{{ tagTrans('building:levels') }}",
         "<table>",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': '#7f7f7f' })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
         "    <td colspan>{{ trans('unknown') }}</td>",
         "  </tr>",
         "{% for i in range(0, 12, 3) %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['green', 'red'], (i * 3.5) / 50) })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
         "    <td>{{ i }}</td>",
         "  </tr>",
         "{% endfor %}",
         "{% for i in range(15, 84, 15) %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['red', 'yellow'], (i * 3.5 - 50) / 250) })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
         "    <td>{{ i }}</td>",
         "  </tr>",
         "{% endfor %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': 'yellow' })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": \"85\" }))|raw }}</td>",
         "    <td>≥85</td>",
         "  </tr>",
         "</table>",

From b388e23cef4a2127a823aa5291c4bb7161bf9316 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 17 Dec 2018 07:39:58 +0100
Subject: [PATCH 071/108] buildings-type: unfin

---
 buildings-type.json | 42 +++++++++++++++++++++++++-----------------
 buildings.json      |  3 +++
 2 files changed, 28 insertions(+), 17 deletions(-)

diff --git a/buildings-type.json b/buildings-type.json
index 9c0fc4549..95af524b8 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -1,8 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "de": "Typ",
-        "en": "Type"
+        "de": "Gebäudearten",
+        "en": "Building types"
     },
     "query": {
         "16": [
@@ -14,17 +14,20 @@
     },
     "feature": {
         "pre": [
-            "{% if tags.building == 'yes' %}",
-            "{% set color = '#7f7f7f' %}",
-            "{% else %}",
-            "{% set color = '#7f0000' %}",
+            "{% set color = \"#7f7f7f\" %}",
+            "{% if tags.building in const %}",
+            "{% set color = const[tags.building] %}",
             "{% endif %}"
         ],
         "description": [
-            "{{ tagTrans('building', tags.building) }}"
+            "{% if tags.building == 'yes' %}",
+            "{{ keyTrans('building') }}",
+            "{% else %}",
+            "{{ tagTrans('building', tags.building) }}",
+            "{% endif %}"
         ],
         "markerSymbol": null,
-        "listMarkerSymbol": "{{ markerCircle({fillColor: color})|raw }}",
+        "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
         "priority": "{{ (approxHeight|default(0)) * -1 }}",
         "style": {
             "width": "1",
@@ -38,23 +41,23 @@
         "{{ tagTrans('height') }}",
         "<table>",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': '#7f7f7f' })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
         "    <td colspan>{{ trans('unknown') }}</td>",
         "  </tr>",
         "{% for i in range(0, 50, 10) %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['green', 'red'], i / 50) })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
         "    <td>{{ i }}m</td>",
         "  </tr>",
         "{% endfor %}",
         "{% for i in range(100, 250, 50) %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['red', 'yellow'], (i - 50) / 250) })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
         "    <td>{{ i }}m</td>",
         "  </tr>",
         "{% endfor %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': 'yellow' })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": \"300\" }))|raw }}</td>",
         "    <td>≥300m</td>",
         "  </tr>",
         "</table>",
@@ -64,27 +67,32 @@
         "{{ tagTrans('building:levels') }}",
         "<table>",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': '#7f7f7f' })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
         "    <td colspan>{{ trans('unknown') }}</td>",
         "  </tr>",
         "{% for i in range(0, 12, 3) %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['green', 'red'], (i * 3.5) / 50) })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
         "    <td>{{ i }}</td>",
         "  </tr>",
         "{% endfor %}",
         "{% for i in range(15, 84, 15) %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': colorInterpolate(['red', 'yellow'], (i * 3.5 - 50) / 250) })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
         "    <td>{{ i }}</td>",
         "  </tr>",
         "{% endfor %}",
         "  <tr>",
-        "    <td>{{ markerCircle({ 'fillColor': 'yellow' })|raw }}</td>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": \"85\" }))|raw }}</td>",
         "    <td>≥85</td>",
         "  </tr>",
         "</table>",
         "",
         "</div>"
-    ]
+    ],
+    "const": {
+        "yes": "#7f7f7f",
+        "apartments": "#ff0000",
+        "place_of_worship": "#af29cc"
+    }
 }
diff --git a/buildings.json b/buildings.json
index cae67fd37..ba4e1e0b4 100644
--- a/buildings.json
+++ b/buildings.json
@@ -7,6 +7,9 @@
         "pt-br": "Edificações"
     },
     "subCategories": [
+        {
+            "id": "buildings-type"
+        },
         {
             "id": "buildings-figure-ground"
         },

From b16498594461317ac1807ba22225aaca6783441a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 17 Dec 2018 19:37:26 +0100
Subject: [PATCH 072/108] buildings-type: add many types

---
 buildings-type.json | 133 +++++++++++++++++++++++++-------------------
 1 file changed, 76 insertions(+), 57 deletions(-)

diff --git a/buildings-type.json b/buildings-type.json
index 95af524b8..8ebe352fb 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -14,10 +14,12 @@
     },
     "feature": {
         "pre": [
-            "{% set color = \"#7f7f7f\" %}",
-            "{% if tags.building in const %}",
-            "{% set color = const[tags.building] %}",
-            "{% endif %}"
+            "{% set color = const.other.color %}",
+            "{% for cat, data in const %}",
+            "  {% if tags.building in data.types %}",
+            "    {% set color = data.color %}",
+            "  {% endif %}",
+            "{% endfor %}"
         ],
         "description": [
             "{% if tags.building == 'yes' %}",
@@ -26,73 +28,90 @@
             "{{ tagTrans('building', tags.building) }}",
             "{% endif %}"
         ],
+        "priority": [
+            "{% set p = 100 %}",
+            "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.culture %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.highway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.railway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
+            "{{ p }}"
+        ],
         "markerSymbol": null,
         "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
-        "priority": "{{ (approxHeight|default(0)) * -1 }}",
         "style": {
             "width": "1",
             "color": "#000000",
             "fillColor": "{{ color }}",
-            "fillOpacity": "1"
+            "fillOpacity": "0.8"
         }
     },
     "info": [
-        "<div style='display: inline-block'>",
-        "{{ tagTrans('height') }}",
         "<table>",
+        "{% for cat, data in const %}",
         "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
-        "    <td colspan>{{ trans('unknown') }}</td>",
-        "  </tr>",
-        "{% for i in range(0, 50, 10) %}",
-        "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
-        "    <td>{{ i }}m</td>",
+        "    <td>{{ markerPolygon({ \"fillColor\": data.color, \"fillOpacity\": \"0.8\", \"width\": 1, \"color\": \"#000000\" })|raw }}</td>",
+        "    <td>{{ cat }}</td>",
         "  </tr>",
         "{% endfor %}",
-        "{% for i in range(100, 250, 50) %}",
-        "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
-        "    <td>{{ i }}m</td>",
-        "  </tr>",
-        "{% endfor %}",
-        "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": \"300\" }))|raw }}</td>",
-        "    <td>≥300m</td>",
-        "  </tr>",
-        "</table>",
-        "</div>",
-        "",
-        "<div style='display: inline-block'>",
-        "{{ tagTrans('building:levels') }}",
-        "<table>",
-        "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
-        "    <td colspan>{{ trans('unknown') }}</td>",
-        "  </tr>",
-        "{% for i in range(0, 12, 3) %}",
-        "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
-        "    <td>{{ i }}</td>",
-        "  </tr>",
-        "{% endfor %}",
-        "{% for i in range(15, 84, 15) %}",
-        "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
-        "    <td>{{ i }}</td>",
-        "  </tr>",
-        "{% endfor %}",
-        "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": \"85\" }))|raw }}</td>",
-        "    <td>≥85</td>",
-        "  </tr>",
-        "</table>",
-        "",
-        "</div>"
+        "</table>"
     ],
     "const": {
-        "yes": "#7f7f7f",
-        "apartments": "#ff0000",
-        "place_of_worship": "#af29cc"
+        "residential": {
+            "color": "#25a000",
+            "types": [ "house", "apartments", "block", "flats", "farm", "detached", "dormitory", "terrace", "houseboat", "bungalow", "static_caravan", "cabin", "residential", "semidetached_house", "ger", "trullo" ]
+        },
+        "tourism": {
+            "color": "#814ce2",
+            "types": [ "hotel", "ruins", "conservatory" ]
+        },
+        "commercial": {
+            "color": "#ec5bcf",
+            "types": [ "commercial", "office", "industrial", "retail", "supermarket", "warehouse", "kiosk", "mall", "shop" ]
+        },
+        "religious": {
+            "color": "#af29cc",
+            "types": [ "religious", "cathedral", "chapel", "church", "mosque", "temple", "synagogue", "shrine", "monastery" ]
+        },
+        "amenity": {
+            "color": "#2935cc",
+            "types": [ "kindergarten", "civic", "government", "hospital", "school", "university", "grandstand", "public", "toilets", "college" ]
+        },
+        "farm": {
+            "color": "#92e934",
+            "types": [ "bakehouse", "barn", "cowshed", "farm_auxiliary", "greenhouse", "stable", "sty", "kitchen", "slurry_tank", "silo" ]
+        },
+        "industrial": {
+            "color": "#e2da1b",
+            "types": [ "construction", "garbage_shed", "transformer_tower", "service", "water_tower", "industrial", "warehouse", "storage_tank" ]
+        },
+        "transport": {
+            "color": "#1bb5e2",
+            "types": [ "carport", "garage", "garages", "bridge", "hangar", "parking", "train_station", "transportation" ]
+        },
+        "sport": {
+            "color": "#e21b66",
+            "types": [ "pavilion", "riding_hall", "stadium", "sports_hall" ]
+        },
+        "simple": {
+            "color": "#cc8725",
+            "types": [ "hut", "roof", "shed" ]
+        },
+        "military": {
+            "color": "#4a7300",
+            "types": [ "bunker", "riding_hall", "sports_hall" ]
+        },
+        "other": {
+            "color": "#ff0000",
+            "types": []
+        },
+        "unspecified": {
+            "color": "#7f7f7f",
+            "types": [ "yes" ]
+        }
     }
 }

From 36ca0e95fdb9d6a786687769f40be6e0916f4e30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 17 Dec 2018 21:56:11 +0100
Subject: [PATCH 073/108] buildings-type: support multi values; exclude
 building=no

---
 buildings-type.json | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/buildings-type.json b/buildings-type.json
index 8ebe352fb..9536d62f1 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -7,16 +7,17 @@
     "query": {
         "16": [
             "(",
-            "  way[building];",
-            "  relation[building];",
+            "  way[building][building!=no];",
+            "  relation[building][building!=no];",
             ")"
         ]
     },
     "feature": {
         "pre": [
+            "{% set type = tags.building|split(';')[0] %}",
             "{% set color = const.other.color %}",
             "{% for cat, data in const %}",
-            "  {% if tags.building in data.types %}",
+            "  {% if type in data.types %}",
             "    {% set color = data.color %}",
             "  {% endif %}",
             "{% endfor %}"
@@ -25,7 +26,7 @@
             "{% if tags.building == 'yes' %}",
             "{{ keyTrans('building') }}",
             "{% else %}",
-            "{{ tagTrans('building', tags.building) }}",
+            "{{ tagTransList('building', tags.building) }}",
             "{% endif %}"
         ],
         "priority": [

From 4fa537276b37057a84660458a036e7b75c5b3899 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 17 Dec 2018 22:01:40 +0100
Subject: [PATCH 074/108] buildings-type: support building=construction,
 construction=*

---
 buildings-type.json | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/buildings-type.json b/buildings-type.json
index 9536d62f1..f1eda471b 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -27,6 +27,9 @@
             "{{ keyTrans('building') }}",
             "{% else %}",
             "{{ tagTransList('building', tags.building) }}",
+            "{% endif %}",
+            "{% if tags.building == 'construction' and tags.construction %}",
+            "({{ tagTransList('building', tags.construction) }})",
             "{% endif %}"
         ],
         "priority": [

From 5b1b7206d68357c84c188b1e205f1b4209f454ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 31 Dec 2018 10:04:07 +0100
Subject: [PATCH 075/108] Popup/Details: include description, start_date,
 opening_date, (material)

---
 detailsBody.html | 32 ++++++++++++++++++++++++++++++++
 popupBody.html   | 24 ++++++++++++++++++++++++
 2 files changed, 56 insertions(+)

diff --git a/detailsBody.html b/detailsBody.html
index 6b8d1801d..bd5c84bd0 100644
--- a/detailsBody.html
+++ b/detailsBody.html
@@ -1,4 +1,12 @@
 <ul>
+{% set hasDescription = tagsPrefix(tags, 'description:') %}
+{% if tags.description or hasDescription %}
+<li class='hasSymbol'>
+  <i class="fa fa-info" aria-hidden="true"></i>
+  <span class='value'>{{ localizedTag(tags, 'description')|default(attribute(tags, 'description:' ~ hasDescription|keys[0])) }}</span>
+</li>
+{% endif %}
+
 {% set address = tagsPrefix(tags, 'addr:') %}
 {% if address %}
 <li class='hasSymbol'>
@@ -133,4 +141,28 @@
 </li>
 {% endif %}
 
+{% if tags.start_date %}
+  <li class='hasSymbol'>
+   <i class="fa fa-clock-o" aria-hidden="true"></i>
+   <span class='key'>{{ keyTrans('start_date') }}:</span>
+   <span class='value'>{{ enumerate(tags.start_date) }}</span>
+  </li>
+{% endif %}
+
+{% if tags.opening_date %}
+  <li class='hasSymbol'>
+   <i class="fa fa-clock-o" aria-hidden="true"></i>
+   <span class='key'>{{ keyTrans('opening_date') }}:</span>
+   <span class='value'>{{ enumerate(tags.opening_date) }}</span>
+  </li>
+{% endif %}
+
+{% if tags.material %}
+  <li class='hasSymbol'>
+   <img data-src="maki:warehouse">
+   <span class='key'>{{ keyTrans('material') }}:</span>
+   <span class='value'>{{ tagTransList('material', tags.material) }}</span>
+  </li>
+{% endif %}
+
 </ul>
diff --git a/popupBody.html b/popupBody.html
index 63b831792..d27884679 100644
--- a/popupBody.html
+++ b/popupBody.html
@@ -1,4 +1,12 @@
 <ul>
+{% set hasDescription = tagsPrefix(tags, 'description:') %}
+{% if tags.description or hasDescription %}
+<li class='hasSymbol'>
+  <i class="fa fa-info" aria-hidden="true"></i>
+  <span class='value'>{{ localizedTag(tags, 'description')|default(attribute(tags, 'description:' ~ hasDescription|keys[0])) }}</span>
+</li>
+{% endif %}
+
 {% set address = tagsPrefix(tags, 'addr:') %}
 {% if address %}
 <li class='hasSymbol'>
@@ -139,4 +147,20 @@
   <span class='value'><a href="https://{{ wikipedia[1] }}.wikipedia.org/wiki/{{ wikipedia[2]|replace({ ' ': '_' }) }}">{{ wikipedia[2] }}</a></span>
 {% endif %}
 
+{% if tags.start_date %}
+  <li class='hasSymbol'>
+   <i class="fa fa-clock-o" aria-hidden="true"></i>
+   <span class='key'>{{ keyTrans('start_date') }}:</span>
+   <span class='value'>{{ enumerate(tags.start_date) }}</span>
+  </li>
+{% endif %}
+
+{% if tags.opening_date %}
+  <li class='hasSymbol'>
+   <i class="fa fa-clock-o" aria-hidden="true"></i>
+   <span class='key'>{{ keyTrans('opening_date') }}:</span>
+   <span class='value'>{{ enumerate(tags.opening_date) }}</span>
+  </li>
+{% endif %}
+
 </ul>

From 994b79291b05562261adb132f07473dad1f0a4c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 31 Dec 2018 10:04:48 +0100
Subject: [PATCH 076/108] culture, historic, memorial: include additional info
 in popup body

---
 culture.json  | 24 ++++++++++++++++++++++++
 historic.json | 31 +++++++++++++++++++++++++++++++
 memorial.json | 40 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 95 insertions(+)

diff --git a/culture.json b/culture.json
index 9fd02fcf2..c2c91e4ad 100644
--- a/culture.json
+++ b/culture.json
@@ -44,6 +44,30 @@
             "{% endif %}"
         ],
         "description": "{{ tagTrans(key, value) }}",
+        "body": [
+            "<ul>",
+            "{% if tags.inscription %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('inscription') }}:</span>",
+            "   <span class='value'>{{ localizedTag(tags, 'inscription') }}</span>",
+            "  </li>",
+            "{% elseif attribute(tags, 'inscription:url') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'><a href=\"{{ attribute(tags, 'inscription:url') }}\">{{ keyTrans('inscription') }}</a></span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if tags.artist_name %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-palette\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('artist_name') }}:</span>",
+            "   <span class='value'>{{ enumerate(tags.artist_name) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "</ul>"
+        ],
         "markerSign": "{{ attribute(const, key ~ '=' ~ value) }}"
     },
     "const": {
diff --git a/historic.json b/historic.json
index f09cf10fc..b1be97728 100644
--- a/historic.json
+++ b/historic.json
@@ -37,6 +37,37 @@
     },
     "feature": {
         "description": "{{ tagTransList('historic', tags.historic) }}",
+        "body": [
+            "<ul>",
+            "{% if tags.inscription %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('inscription') }}:</span>",
+            "   <span class='value'>{{ localizedTag(tags, 'inscription') }}</span>",
+            "  </li>",
+            "{% elseif attribute(tags, 'inscription:url') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'><a href=\"{{ attribute(tags, 'inscription:url') }}\">{{ keyTrans('inscription') }}</a></span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'historic:civilization') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-users\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('historic:civilization') }}:</span>",
+            "   <span class='value'>{{ tagTrans('historic:civilization', attribute(tags, 'historic:civilization')) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'memorial:conflict') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-bolt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('memorial:conflict') }}:</span>",
+            "   <span class='value'>{{ tagTransList('memorial:conflict', attribute(tags, 'memorial:conflict')) }}</span>",
+            "  </li>",
+            "{% endif %}"
+        ],
         "markerSign": "{{ const[tags.historic].sign|raw }}"
     },
     "info": [
diff --git a/memorial.json b/memorial.json
index 4095a1378..82e349523 100644
--- a/memorial.json
+++ b/memorial.json
@@ -32,6 +32,46 @@
             "{% endif %}"
         ],
         "description": "{{ tagTransList('historic', value) }}",
+        "body": [
+            "<ul>",
+            "{% if tags.inscription %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('inscription') }}:</span>",
+            "   <span class='value'>{{ localizedTag(tags, 'inscription') }}</span>",
+            "  </li>",
+            "{% elseif attribute(tags, 'inscription:url') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'><a href=\"{{ attribute(tags, 'inscription:url') }}\">{{ keyTrans('inscription') }}</a></span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'historic:civilization') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-users\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('historic:civilization') }}:</span>",
+            "   <span class='value'>{{ tagTrans('historic:civilization', attribute(tags, 'historic:civilization')) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'memorial:conflict') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-bolt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('memorial:conflict') }}:</span>",
+            "   <span class='value'>{{ tagTransList('memorial:conflict', attribute(tags, 'memorial:conflict')) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if tags.artist_name %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-palette\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('artist_name') }}:</span>",
+            "   <span class='value'>{{ enumerate(tags.artist_name) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "</ul>"
+        ],
         "markerSign": "{{ const[value].sign|raw }}"
     },
     "info": [

From 313c608f1bee98510a843d5d2fcec487b1d0c2ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 2 Jan 2019 10:31:20 +0100
Subject: [PATCH 077/108] emergency: include highway=emergency_access_point

---
 emergency.json | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/emergency.json b/emergency.json
index 64ef840b3..7023b49dd 100644
--- a/emergency.json
+++ b/emergency.json
@@ -34,6 +34,7 @@
             "way[amenity~\"^(fire_station|hospital|police)$\"];",
             "relation[amenity~\"^(fire_station|hospital|police)$\"];",
             "node[emergency~\"^(phone)$\"];",
+            "node[highway=emergency_access_point];",
             ")"
         ]
     },
@@ -45,6 +46,9 @@
             "{% elseif tags.emergency %}",
             "{% set key = 'emergency' %}",
             "{% set value = tags.emergency %}",
+            "{% elseif tags.highway == 'emergency_access_point' %}",
+            "{% set key = 'highway' %}",
+            "{% set value = tags.highway %}",
             "{% endif %}",
             "{% set kv = key ~ \"=\" ~ value %}"
         ],
@@ -52,9 +56,11 @@
         "markerSign": [
             "{% set data = const[kv] %}",
             "{% if data %}",
-            "{{ data.sign }}",
+            "{{ data.sign|raw }}",
             "{% endif %}"
-        ]
+        ],
+        "markerSymbol": "{{ markerPointer({ fillColor: data.background|default('#f27f6a') })|raw }}",
+        "listMarkerSymbol": "{{ markerCircle({ fillColor: data.background|default('#f27f6a') })|raw }}"
     },
     "info": [
         "<table>",
@@ -84,6 +90,11 @@
         "emergency=phone": {
             "zoom": "13",
             "sign": "📞"
+        },
+        "highway=emergency_access_point": {
+            "zoom": "13",
+            "sign": "<img data-src='maki:hospital?fill=white'>",
+            "background": "#009262"
         }
     }
 }

From 778ef88445e85ccf767b60604209c2a2982c49d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 2 Jan 2019 10:38:18 +0100
Subject: [PATCH 078/108] emergency: fix info

---
 emergency.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/emergency.json b/emergency.json
index 7023b49dd..73b606d98 100644
--- a/emergency.json
+++ b/emergency.json
@@ -67,7 +67,7 @@
         "{% for value, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign }}</div></td>",
+        "    <td>{{ markerCircle({ fillColor: data.background|default('#f27f6a') })|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
         "    <td>{{ tagTrans(value|split('=')[0], value|split('=')[1]) }}</td>",
         "  </tr>",
         "{% endif %}",

From 4b941f294420f59de2e819f155762ca6db30de90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 4 Jan 2019 20:29:40 +0100
Subject: [PATCH 079/108] car_maxspeed: handle maxspeed:forward and
 maxspeed:backward

---
 car_maxspeed.json | 81 +++++++++++++++++++++++++++++++++++++----------
 1 file changed, 65 insertions(+), 16 deletions(-)

diff --git a/car_maxspeed.json b/car_maxspeed.json
index b2249f360..6c11f5a3f 100644
--- a/car_maxspeed.json
+++ b/car_maxspeed.json
@@ -16,36 +16,67 @@
     },
     "feature": {
         "pre": [
-            "{% if tags.maxspeed is not defined %}",
             "{% set maxspeedKmh = null %}",
             "{% set maxspeed = null %}",
             "{% set unit = null %}",
-            "{% else %}",
             "",
-            "{% if tags.maxspeed|matches(\"^[0-9]+$\") %}",
-            "{% set maxspeedKmh = tags.maxspeed %}",
-            "{% set maxspeed = tags.maxspeed %}",
-            "{% set unit = \"km/h\" %}",
+            "{% if tags.maxspeed is defined %}",
+            "  {% if tags.maxspeed|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedKmh = tags.maxspeed %}",
+            "    {% set maxspeed = tags.maxspeed %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif tags.maxspeed|matches( \"(^[0-9]+) mph$\") %}",
+            "    {% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeed = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
-            "",
-            "{% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}",
-            "{% if m %}",
-            "{% set maxspeedKmh = m[1] * 1.60934 %}",
-            "{% set maxspeed = m[1] %}",
-            "{% set unit = \"mph\" %}",
+            "{% if attribute(tags, 'maxspeed:forward') is defined %}",
+            "  {% if attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedFKmh = attribute(tags, 'maxspeed:forward') %}",
+            "    {% set maxspeedF = attribute(tags, 'maxspeed:forward') %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+ mph$\") %}",
+            "    {% set m = attribute(tags, 'maxspeed:forward')|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedFKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeedF = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
+            "{% if attribute(tags, 'maxspeed:backward') is defined %}",
+            "  {% if attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedBKmh = attribute(tags, 'maxspeed:backward') %}",
+            "    {% set maxspeedB = attribute(tags, 'maxspeed:backward') %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+ mph$\") %}",
+            "    {% set m = attribute(tags, 'maxspeed:backward')|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedBKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeedB = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
             "{% if not maxspeedKmh %}",
             "{% set color = \"#404040\" %}",
             "{% else %}",
             "{% set color = colorInterpolate(const.colorMap, (maxspeedKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}",
+            "",
+            "{% if maxspeedFKmh %}",
+            "{% set colorF = colorInterpolate(const.colorMap, (maxspeedFKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}",
+            "",
+            "{% if maxspeedBKmh %}",
+            "{% set colorB = colorInterpolate(const.colorMap, (maxspeedBKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
             "{% endif %}"
         ],
         "description": [
-            "{% if maxspeed %}",
+            "{% if maxspeedF or maxspeedB %}",
+            "<span style='color: {{ colorB }}'>{{ maxspeedB|default(trans('unknown')) }}</span> / <span style='color: {{ colorF }}'>{{ maxspeedF|default(trans('unknown')) }}</span> {{ unit }}",
+            "{% elseif maxspeed %}",
             "<span style='color: {{ color }}'>{{ maxspeed }} {{ unit }}</span>",
             "{% elseif tags.maxspeed %}",
             "{{ tags.maxspeed }}",
@@ -53,14 +84,32 @@
             "{{ trans('unknown') }}",
             "{% endif %}"
         ],
-        "markerSymbol": null,
+        "markerSymbol": "",
         "listMarkerSymbol": "line",
+        "styles": "{% if maxspeedB or maxspeedF %}left,right,default{% else %}default{% endif %}",
         "style": {
-            "width": "3",
+            "width": "{% if maxspeedB or maxspeedF %}0{% else %}4{% endif %}",
             "color": "{{ color }}",
-            "text": "{{ maxspeed }}           ",
+            "text": [
+                "{% if maxspeedB or maxspeedF %}",
+                "  {% if maxspeedB %}🡸 {{ maxspeedB }} {% endif %}|{% if maxspeedF %} {{ maxspeedF }} 🡺{% endif %}       ",
+                "{% else %}",
+                "  {{ maxspeed }}         ",
+                "{% endif %}"
+            ],
             "textRepeat": "1",
+            "textOffset": "4",
             "textFontWeight": "bold"
+        },
+        "style:left": {
+            "width": "2",
+            "color": "{{ colorB|default('#404040') }}",
+            "offset": "-1"
+        },
+        "style:right": {
+            "width": "2",
+            "color": "{{ colorF|default('#404040') }}",
+            "offset": "1"
         }
     },
     "const": {

From 41853b5bf5b1419d486c542e0f6e3b81935fcd5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 4 Jan 2019 20:43:00 +0100
Subject: [PATCH 080/108] railway-maxspeed: handle maxspeed:forward and
 maxspeed:backward

---
 railway-maxspeed.json | 79 +++++++++++++++++++++++++++++++++++--------
 1 file changed, 64 insertions(+), 15 deletions(-)

diff --git a/railway-maxspeed.json b/railway-maxspeed.json
index 10fb8a45f..1c756f218 100644
--- a/railway-maxspeed.json
+++ b/railway-maxspeed.json
@@ -14,36 +14,67 @@
     },
     "feature": {
         "pre": [
-            "{% if tags.maxspeed is not defined %}",
             "{% set maxspeedKmh = null %}",
             "{% set maxspeed = null %}",
             "{% set unit = null %}",
-            "{% else %}",
             "",
-            "{% if tags.maxspeed|matches(\"^[0-9]+$\") %}",
-            "{% set maxspeedKmh = tags.maxspeed %}",
-            "{% set maxspeed = tags.maxspeed %}",
-            "{% set unit = \"km/h\" %}",
+            "{% if tags.maxspeed is defined %}",
+            "  {% if tags.maxspeed|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedKmh = tags.maxspeed %}",
+            "    {% set maxspeed = tags.maxspeed %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif tags.maxspeed|matches( \"(^[0-9]+) mph$\") %}",
+            "    {% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeed = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
-            "",
-            "{% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}",
-            "{% if m %}",
-            "{% set maxspeedKmh = m[1] * 1.60934 %}",
-            "{% set maxspeed = m[1] %}",
-            "{% set unit = \"mph\" %}",
+            "{% if attribute(tags, 'maxspeed:forward') is defined %}",
+            "  {% if attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedFKmh = attribute(tags, 'maxspeed:forward') %}",
+            "    {% set maxspeedF = attribute(tags, 'maxspeed:forward') %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+ mph$\") %}",
+            "    {% set m = attribute(tags, 'maxspeed:forward')|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedFKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeedF = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
+            "{% if attribute(tags, 'maxspeed:backward') is defined %}",
+            "  {% if attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedBKmh = attribute(tags, 'maxspeed:backward') %}",
+            "    {% set maxspeedB = attribute(tags, 'maxspeed:backward') %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+ mph$\") %}",
+            "    {% set m = attribute(tags, 'maxspeed:backward')|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedBKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeedB = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
             "{% if not maxspeedKmh %}",
             "{% set color = \"#404040\" %}",
             "{% else %}",
             "{% set color = colorInterpolate(const.colorMap, (maxspeedKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}",
+            "",
+            "{% if maxspeedFKmh %}",
+            "{% set colorF = colorInterpolate(const.colorMap, (maxspeedFKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}",
+            "",
+            "{% if maxspeedBKmh %}",
+            "{% set colorB = colorInterpolate(const.colorMap, (maxspeedBKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
             "{% endif %}"
         ],
         "description": [
-            "{% if maxspeed %}",
+            "{% if maxspeedF or maxspeedB %}",
+            "<span style='color: {{ colorB }}'>{{ maxspeedB|default(trans('unknown')) }}</span> / <span style='color: {{ colorF }}'>{{ maxspeedF|default(trans('unknown')) }}</span> {{ unit }}",
+            "{% elseif maxspeed %}",
             "<span style='color: {{ color }}'>{{ maxspeed }} {{ unit }}</span>",
             "{% elseif tags.maxspeed %}",
             "{{ tags.maxspeed }}",
@@ -53,12 +84,30 @@
         ],
         "markerSymbol": null,
         "listMarkerSymbol": "line",
+        "styles": "{% if maxspeedB or maxspeedF %}left,right,default{% else %}default{% endif %}",
         "style": {
-            "width": "3",
+            "width": "{% if maxspeedB or maxspeedF %}0{% else %}4{% endif %}",
             "color": "{{ color }}",
-            "text": "{{ maxspeed }}          ",
+            "text": [
+                "{% if maxspeedB or maxspeedF %}",
+                "  {% if maxspeedB %}🡸 {{ maxspeedB }} {% endif %}|{% if maxspeedF %} {{ maxspeedF }} 🡺{% endif %}       ",
+                "{% else %}",
+                "  {{ maxspeed }}         ",
+                "{% endif %}"
+            ],
             "textRepeat": "1",
+            "textOffset": "4",
             "textFontWeight": "bold"
+        },
+        "style:left": {
+            "width": "2",
+            "color": "{{ colorB|default('#404040') }}",
+            "offset": "-1"
+        },
+        "style:right": {
+            "width": "2",
+            "color": "{{ colorF|default('#404040') }}",
+            "offset": "1"
         }
     },
     "const": {

From c7ab9b28203e78d0e182fdc92d3eca431f34768e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 5 Jan 2019 15:38:06 +0100
Subject: [PATCH 081/108] culture: show info about material

---
 culture.json     | 9 +++++++++
 detailsBody.html | 8 --------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/culture.json b/culture.json
index c2c91e4ad..4fbe618a4 100644
--- a/culture.json
+++ b/culture.json
@@ -66,6 +66,15 @@
             "   <span class='value'>{{ enumerate(tags.artist_name) }}</span>",
             "  </li>",
             "{% endif %}",
+            "",
+            "{% if tags.material %}",
+            "  <li class='hasSymbol'>",
+            "   <img data-src=\"maki:warehouse\">",
+            "   <span class='key'>{{ keyTrans('material') }}:</span>",
+            "   <span class='value'>{{ tagTransList('material', tags.material) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
             "</ul>"
         ],
         "markerSign": "{{ attribute(const, key ~ '=' ~ value) }}"
diff --git a/detailsBody.html b/detailsBody.html
index bd5c84bd0..3c5a74647 100644
--- a/detailsBody.html
+++ b/detailsBody.html
@@ -157,12 +157,4 @@
   </li>
 {% endif %}
 
-{% if tags.material %}
-  <li class='hasSymbol'>
-   <img data-src="maki:warehouse">
-   <span class='key'>{{ keyTrans('material') }}:</span>
-   <span class='value'>{{ tagTransList('material', tags.material) }}</span>
-  </li>
-{% endif %}
-
 </ul>

From 8fea2ae3d3860c043bf866c5adc1130e663283a0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 6 Jan 2019 08:17:53 +0100
Subject: [PATCH 082/108] Culture: show museum type (tag museum=*)

---
 culture.json | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/culture.json b/culture.json
index 4fbe618a4..a9bd6aba6 100644
--- a/culture.json
+++ b/culture.json
@@ -43,7 +43,13 @@
             "{% set value = tags.tourism %}",
             "{% endif %}"
         ],
-        "description": "{{ tagTrans(key, value) }}",
+        "description": [
+            "{{ tagTrans(key, value) }}",
+            "",
+            "{% if tags.tourism == 'museum' and tags.museum %}",
+            "({{ tagTrans('museum', tags.museum) }})",
+            "{% endif %}"
+        ],
         "body": [
             "<ul>",
             "{% if tags.inscription %}",

From 4bca710e001536418469b6c42e64116e9fc3f7d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 6 Jan 2019 08:42:34 +0100
Subject: [PATCH 083/108] culture: include shop=art

---
 culture.json | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/culture.json b/culture.json
index a9bd6aba6..e34c48fb3 100644
--- a/culture.json
+++ b/culture.json
@@ -30,6 +30,7 @@
             "node[tourism~\"^(artwork|gallery|museum|theme_park)$\"];",
             "way[tourism~\"^(artwork|gallery|museum|theme_park)$\"];",
             "relation[tourism~\"^(artwork|gallery|museum|theme_park)$\"];",
+            "nwr[shop~\"^(art)$\"];",
             ")"
         ]
     },
@@ -41,10 +42,17 @@
             "{% elseif tags.tourism %}",
             "{% set key = 'tourism' %}",
             "{% set value = tags.tourism %}",
+            "{% elseif tags.shop %}",
+            "{% set key = 'shop' %}",
+            "{% set value = tags.shop %}",
             "{% endif %}"
         ],
         "description": [
-            "{{ tagTrans(key, value) }}",
+            "{% if key == 'shop' %}",
+            "  {{ keyTrans(key) }} ({{ tagTrans(key, value) }})",
+            "{% else %}",
+            "  {{ tagTrans(key, value) }}",
+            "{% endif %}",
             "",
             "{% if tags.tourism == 'museum' and tags.museum %}",
             "({{ tagTrans('museum', tags.museum) }})",
@@ -83,7 +91,7 @@
             "",
             "</ul>"
         ],
-        "markerSign": "{{ attribute(const, key ~ '=' ~ value) }}"
+        "markerSign": "{{ attribute(const, key ~ '=' ~ value)|raw }}"
     },
     "const": {
         "amenity=arts_centre": "🎨",
@@ -95,13 +103,14 @@
         "tourism=artwork": "🎨 ",
         "tourism=gallery": "🖼",
         "tourism=museum": "🏛 ",
-        "tourism=theme_park": ""
+        "tourism=theme_park": "",
+        "shop=art": "<i class=\"fa fa-shopping-cart\"></i>"
     },
     "info": [
         "<table>",
         "{% for value, sign in const %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ sign }}</div></td>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ sign|raw }}</div></td>",
         "    <td>{{ tagTrans(value|split('=')[0], value|split('=')[1]) }}</td>",
         "  </tr>",
         "{% endfor %}",

From 92b4decbe27fb944a62a3c32c9066c9a164a4528 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 6 Jan 2019 09:07:13 +0100
Subject: [PATCH 084/108] culture: show theatre:genre=* resp.
 community_centre=*

---
 culture.json | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/culture.json b/culture.json
index e34c48fb3..25d0dc156 100644
--- a/culture.json
+++ b/culture.json
@@ -56,6 +56,12 @@
             "",
             "{% if tags.tourism == 'museum' and tags.museum %}",
             "({{ tagTrans('museum', tags.museum) }})",
+            "{% endif %}",
+            "{% if tags.amenity == 'theatre' and attribute(tags, 'theatre:genre') %}",
+            "({{ tagTrans('theatre:genre', attribute(tags, 'theatre:genre')) }})",
+            "{% endif %}",
+            "{% if tags.amenity == 'community_centre' and tags.community_centre %}",
+            "({{ tagTrans('community_centre', tags.community_centre) }})",
             "{% endif %}"
         ],
         "body": [

From 2294d17acd0b6a6b85fd3346665897005326f440 Mon Sep 17 00:00:00 2001
From: debyos <gabor.babos@gmail.com>
Date: Sun, 6 Jan 2019 22:57:59 +0100
Subject: [PATCH 085/108] Translation into Hungarian

---
 lang/hu.json | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/lang/hu.json b/lang/hu.json
index b188f7ac4..f4f5e7f04 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -9,7 +9,7 @@
     "category:car_maxspeed": "Sebességkorlátozás",
     "category:car_routes": "Főútvonalak",
     "category:children": "Gyermekek",
-    "category:coal": "",
+    "category:coal": "Kőszén",
     "category:communication": "Kommunikácó",
     "category:construction": "Építési terület",
     "category:craft": "Műhelyek",
@@ -20,7 +20,7 @@
     "category:education": "Oktatás",
     "category:electric_power": "Áramellátás",
     "category:emergency": "Vészhelyzet",
-    "category:energy": "",
+    "category:energy": "Energiaellátás",
     "category:financial": "Pénzügyek",
     "category:gastro": "Vendéglátás",
     "category:gastro-smoking": "Nem dohányzó vendéglátóhelyek",
@@ -32,12 +32,12 @@
     "category:internet": "Internetcsatlakozás",
     "category:leisure": "Szabadidő",
     "category:leisure_sport_shopping": "Szabadidő, sport és vásárlás",
-    "category:memorial": "",
+    "category:memorial": "Emlékművek",
     "category:military": "Katonai objektumok",
     "category:mtb-routes": "Hegyikerékpáros útvonalak",
     "category:natural": "Természeti képződmények",
-    "category:office": "",
-    "category:oil_gas": "",
+    "category:office": "Irodák, hivatalok",
+    "category:oil_gas": "Kőolaj, földgáz",
     "category:other": "Egyéb",
     "category:outdoor": "Szabadtéri tevékenységek",
     "category:phone": "Telefon",
@@ -45,7 +45,7 @@
     "category:places_geo": "Helyek",
     "category:playgrounds": "Játszóterek",
     "category:post": "Posta",
-    "category:power_routes": "",
+    "category:power_routes": "Távvezetékek",
     "category:pt": "Tömegközlekedési térkép",
     "category:pt:routes": "Útvonalak",
     "category:pt:stops": "Megállók és állomások",
@@ -57,16 +57,16 @@
     "category:railway-maxspeed": "Sebességkorlátozás",
     "category:railway-routes": "Vasútvonalak",
     "category:religion": "Vallás",
-    "category:renewables": "",
+    "category:renewables": "Megújuló energia",
     "category:residential": "Lakóövezetek",
     "category:resources": "Bányászat",
     "category:services": "Szolgáltatások",
     "category:shop": "Vásárlás",
     "category:special": "Speciális",
     "category:sport": "Sport",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Fürdőzés, úszás",
     "category:tourism_attractions": "Látnivalók",
-    "category:tourism_services": "Turisztikai szolgáltatások",
+    "category:tourism_services": "Szálláshelyek, turisztikai információk",
     "category:transport": "Közlekedés",
     "category:transport_alternative": "Alternatív (Kerékpár, Túra)",
     "category:transport_car": "Autós közlekedés",
@@ -78,5 +78,5 @@
     "category:water": "Vizek",
     "category:wikipedia": "Wikipédia",
     "category:works": "Üzemek",
-    "category:xmas": ""
+    "category:xmas": "Karácsony"
 }

From d9c0c788fcde09217f58359f4f1c4bc9deff47c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Mon, 7 Jan 2019 09:33:17 +0100
Subject: [PATCH 086/108] Import hungarian translations

---
 coal.json             | 1 +
 index.json            | 3 ++-
 memorial.json         | 1 +
 office.json           | 1 +
 oil_gas.json          | 1 +
 power_routes.json     | 1 +
 renewables.json       | 1 +
 swimming_bathing.json | 1 +
 tourism_services.json | 2 +-
 xmas.json             | 1 +
 10 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/coal.json b/coal.json
index d084cae29..3b044d00d 100644
--- a/coal.json
+++ b/coal.json
@@ -4,6 +4,7 @@
         "de": "Kohle",
         "en": "Coal",
         "fr": "Charbon",
+        "hu": "Kőszén",
         "pt-br": "Carvão"
     },
     "query": {
diff --git a/index.json b/index.json
index 77bd73e41..c2be5f10d 100644
--- a/index.json
+++ b/index.json
@@ -262,7 +262,8 @@
                         "en": "Energy",
                         "de": "Energie",
                         "pt-br": "Energia",
-                        "fr": "Énergie"
+                        "fr": "Énergie",
+                        "hu": "Energiaellátás"
                     },
                     "subCategories": [
                         {
diff --git a/memorial.json b/memorial.json
index 4095a1378..143b72e37 100644
--- a/memorial.json
+++ b/memorial.json
@@ -4,6 +4,7 @@
         "de": "Denkmäler",
         "en": "Memorials",
         "fr": "Mémoriaux",
+        "hu": "Emlékművek",
         "pt-br": "Memoriais"
     },
     "query": {
diff --git a/office.json b/office.json
index b0166cdd5..b92ba3451 100644
--- a/office.json
+++ b/office.json
@@ -4,6 +4,7 @@
         "de": "Ämter, Dienst- und Geschäftsstellen",
         "en": "Offices",
         "fr": "Bureaux",
+        "hu": "Irodák, hivatalok",
         "pt-br": "Escritórios e agências"
     },
     "query": {
diff --git a/oil_gas.json b/oil_gas.json
index d74a1dfcc..0f9acee07 100644
--- a/oil_gas.json
+++ b/oil_gas.json
@@ -4,6 +4,7 @@
         "de": "Erdöl und Erdgas",
         "en": "Petroleum and natural gas",
         "fr": "Pétrole et gaz naturel",
+        "hu": "Kőolaj, földgáz",
         "pt-br": "Petróleo e gás"
     },
     "query": {
diff --git a/power_routes.json b/power_routes.json
index 39122720a..61c088eee 100644
--- a/power_routes.json
+++ b/power_routes.json
@@ -3,6 +3,7 @@
     "name": {
         "en": "Power routes",
         "fr": "Réseaux électriques",
+        "hu": "Távvezetékek",
         "pt-br": "Rotas de energia"
     },
     "query": {
diff --git a/renewables.json b/renewables.json
index 6c32493df..19e9f4254 100644
--- a/renewables.json
+++ b/renewables.json
@@ -4,6 +4,7 @@
         "de": "Erneuerbare Energien",
         "en": "Renewables",
         "fr": "Énergies renouvelables",
+        "hu": "Megújuló energia",
         "pt-br": "Renováveis"
     },
     "query": {
diff --git a/swimming_bathing.json b/swimming_bathing.json
index 645b61366..f52571151 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -4,6 +4,7 @@
         "de": "Schwimmen und Baden",
         "en": "Swimming and bathing",
         "fr": "Natation/Baignade/Bains",
+        "hu": "Fürdőzés, úszás",
         "pt-br": "Natação e banho"
     },
     "query": {
diff --git a/tourism_services.json b/tourism_services.json
index 7a2182ffe..d48a47072 100644
--- a/tourism_services.json
+++ b/tourism_services.json
@@ -8,7 +8,7 @@
         "en": "Tourism",
         "et": "Turism",
         "fr": "Tourisme",
-        "hu": "Turisztikai szolgáltatások",
+        "hu": "Szálláshelyek, turisztikai információk",
         "it": "Turismo",
         "ja": "観光",
         "nl": "Toerisme",
diff --git a/xmas.json b/xmas.json
index d3ad2fdfa..2baa128d6 100644
--- a/xmas.json
+++ b/xmas.json
@@ -4,6 +4,7 @@
         "de": "Weihnachten",
         "en": "Christmas",
         "fr": "Noël",
+        "hu": "Karácsony",
         "pt-br": "Natal"
     },
     "query": {

From 4d59cc3e220dc4d710d4be8b9210b99bc2b56fe5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 6 Jan 2019 20:35:04 +0100
Subject: [PATCH 087/108] Entrances

---
 buildings-entrances.json | 24 ++++++++++++++++++++++++
 buildings.json           |  3 +++
 2 files changed, 27 insertions(+)
 create mode 100644 buildings-entrances.json

diff --git a/buildings-entrances.json b/buildings-entrances.json
new file mode 100644
index 000000000..583b2a817
--- /dev/null
+++ b/buildings-entrances.json
@@ -0,0 +1,24 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Eingänge",
+        "en": "Entrances"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  node[entrance];",
+            "  node[building=entrance];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": [
+            "{% if tags.entrance == 'yes' or (not tags.entrance and tags.building == 'entrance') %}",
+            "{{ keyTrans('entrance') }}",
+            "{% else %}",
+            "{{ tagTrans('entrance', tags.entrance) }}",
+            "{% endif %}"
+        ]
+    }
+}
diff --git a/buildings.json b/buildings.json
index ba4e1e0b4..fe3010af6 100644
--- a/buildings.json
+++ b/buildings.json
@@ -18,6 +18,9 @@
         },
         {
             "id": "buildings-start_date"
+        },
+        {
+            "id": "buildings-entrances"
         }
     ]
 }

From 388a86429dc6bc1f1bbb632f15a9615bb3f6cee7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 10 Jan 2019 09:44:39 +0100
Subject: [PATCH 088/108] buildings-type: improvements

---
 buildings-type.json | 162 ++++++++++++++++++++++++++++++++++++++------
 1 file changed, 140 insertions(+), 22 deletions(-)

diff --git a/buildings-type.json b/buildings-type.json
index f1eda471b..09bb904b7 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -32,6 +32,8 @@
             "({{ tagTransList('building', tags.construction) }})",
             "{% endif %}"
         ],
+        "markerSymbol": "",
+        "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
         "priority": [
             "{% set p = 100 %}",
             "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
@@ -45,8 +47,6 @@
             "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
             "{{ p }}"
         ],
-        "markerSymbol": null,
-        "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
         "style": {
             "width": "1",
             "color": "#000000",
@@ -58,64 +58,182 @@
         "<table>",
         "{% for cat, data in const %}",
         "  <tr>",
-        "    <td>{{ markerPolygon({ \"fillColor\": data.color, \"fillOpacity\": \"0.8\", \"width\": 1, \"color\": \"#000000\" })|raw }}</td>",
-        "    <td>{{ cat }}</td>",
+        "    <td valign='top'>{{ markerPolygon({ \"fillColor\": data.color, \"fillOpacity\": \"0.8\", \"width\": 1, \"color\": \"#000000\" })|raw }}</td>",
+        "    <td onclick='this.classList.toggle(\"infoShowDetails\")'><b>{{ trans(data.name) }}</b><span class='details'>:",
+        "      {% for i, type in data.types %}<span title='building={{ type }}'>{% if i > 0 %}, {% endif %}{{ tagTrans('building', type) }}</span>{% endfor %}",
+        "      </span>",
+        "<span class='summary'><i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i></span>",
+        "    </td>",
         "  </tr>",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
         "residential": {
+            "name": "tag:building=residential",
             "color": "#25a000",
-            "types": [ "house", "apartments", "block", "flats", "farm", "detached", "dormitory", "terrace", "houseboat", "bungalow", "static_caravan", "cabin", "residential", "semidetached_house", "ger", "trullo" ]
+            "types": [
+                "house",
+                "apartments",
+                "block",
+                "flats",
+                "farm",
+                "detached",
+                "dormitory",
+                "terrace",
+                "houseboat",
+                "bungalow",
+                "static_caravan",
+                "residential",
+                "semidetached_house",
+                "ger",
+                "trullo"
+            ]
         },
         "tourism": {
+            "name": "tag:tourism",
             "color": "#814ce2",
-            "types": [ "hotel", "ruins", "conservatory" ]
+            "types": [
+                "hotel",
+                "ruins",
+                "conservatory"
+            ]
         },
         "commercial": {
+            "name": "tag:building=commercial",
             "color": "#ec5bcf",
-            "types": [ "commercial", "office", "industrial", "retail", "supermarket", "warehouse", "kiosk", "mall", "shop" ]
+            "types": [
+                "commercial",
+                "office",
+                "industrial",
+                "retail",
+                "supermarket",
+                "warehouse",
+                "kiosk",
+                "mall",
+                "shop"
+            ]
         },
         "religious": {
+            "name": "tag:building=religious",
             "color": "#af29cc",
-            "types": [ "religious", "cathedral", "chapel", "church", "mosque", "temple", "synagogue", "shrine", "monastery" ]
+            "types": [
+                "religious",
+                "cathedral",
+                "chapel",
+                "church",
+                "mosque",
+                "temple",
+                "synagogue",
+                "shrine",
+                "monastery"
+            ]
         },
         "amenity": {
+            "name": "tag:amenity",
             "color": "#2935cc",
-            "types": [ "kindergarten", "civic", "government", "hospital", "school", "university", "grandstand", "public", "toilets", "college" ]
+            "types": [
+                "kindergarten",
+                "civic",
+                "government",
+                "hospital",
+                "school",
+                "university",
+                "grandstand",
+                "public",
+                "toilets",
+                "college"
+            ]
         },
-        "farm": {
+        "agriculture": {
+            "name": "tag:landuse=agriculture",
             "color": "#92e934",
-            "types": [ "bakehouse", "barn", "cowshed", "farm_auxiliary", "greenhouse", "stable", "sty", "kitchen", "slurry_tank", "silo" ]
+            "types": [
+                "bakehouse",
+                "barn",
+                "cowshed",
+                "farm_auxiliary",
+                "greenhouse",
+                "stable",
+                "sty",
+                "kitchen",
+                "slurry_tank",
+                "silo"
+            ]
         },
         "industrial": {
+            "name": "tag:landuse=industrial",
             "color": "#e2da1b",
-            "types": [ "construction", "garbage_shed", "transformer_tower", "service", "water_tower", "industrial", "warehouse", "storage_tank" ]
+            "types": [
+                "construction",
+                "garbage_shed",
+                "transformer_tower",
+                "service",
+                "water_tower",
+                "industrial",
+                "warehouse",
+                "storage_tank"
+            ]
         },
-        "transport": {
+        "transportation": {
+            "name": "tag:building=transportation",
             "color": "#1bb5e2",
-            "types": [ "carport", "garage", "garages", "bridge", "hangar", "parking", "train_station", "transportation" ]
+            "types": [
+                "carport",
+                "garage",
+                "garages",
+                "bridge",
+                "hangar",
+                "parking",
+                "train_station",
+                "transportation"
+            ]
         },
         "sport": {
+            "name": "tag:sport",
             "color": "#e21b66",
-            "types": [ "pavilion", "riding_hall", "stadium", "sports_hall" ]
+            "types": [
+                "pavilion",
+                "riding_hall",
+                "stadium",
+                "sports_hall"
+            ]
+        },
+        "roof": {
+            "name": "tag:building=roof",
+            "color": "#afafaf7f",
+            "types": [
+                "roof"
+            ]
         },
-        "simple": {
+        "shelter": {
+            "name": "tag:amenity=shelter",
             "color": "#cc8725",
-            "types": [ "hut", "roof", "shed" ]
+            "types": [
+                "cabin",
+                "hut",
+                "shed"
+            ]
         },
         "military": {
+            "name": "tag:military",
             "color": "#4a7300",
-            "types": [ "bunker", "riding_hall", "sports_hall" ]
+            "types": [
+                "bunker"
+            ]
+        },
+        "unspecified": {
+            "name": "tag:building=generic",
+            "color": "#7f7f7f",
+            "types": [
+                "yes",
+                "generic"
+            ]
         },
         "other": {
+            "name": "other",
             "color": "#ff0000",
             "types": []
-        },
-        "unspecified": {
-            "color": "#7f7f7f",
-            "types": [ "yes" ]
         }
     }
 }

From 195be128037f2bdacd96ae7b3ceb5229cf5b8ee6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 10 Jan 2019 09:57:40 +0100
Subject: [PATCH 089/108] buildings-entrances: show only markers, without blue
 circle

---
 buildings-entrances.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/buildings-entrances.json b/buildings-entrances.json
index 583b2a817..0950f11a3 100644
--- a/buildings-entrances.json
+++ b/buildings-entrances.json
@@ -19,6 +19,7 @@
             "{% else %}",
             "{{ tagTrans('entrance', tags.entrance) }}",
             "{% endif %}"
-        ]
+        ],
+        "styles": ""
     }
 }

From ac39920610b45ba0366f68f51897c7bf8a4780b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 10 Jan 2019 09:59:27 +0100
Subject: [PATCH 090/108] buildings-figure-ground: use black polygons as list
 markers

---
 buildings-figure-ground.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/buildings-figure-ground.json b/buildings-figure-ground.json
index 63d23c7e9..726fc2b84 100644
--- a/buildings-figure-ground.json
+++ b/buildings-figure-ground.json
@@ -13,7 +13,8 @@
         ]
     },
     "feature": {
-        "markerSymbol": null,
+        "markerSymbol": "",
+        "listMarkerSymbol": "{{ markerPolygon({fillColor: \"#000000\", fillOpacity: 1 })|raw }}",
         "priority": [
             "{% set p = 100 %}",
             "{% if tags.name %}{% set p = p - 10 %}{% endif %}",

From a4196720e0e2e34a159d165ffa1079de79a4141e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 10 Jan 2019 10:20:52 +0100
Subject: [PATCH 091/108] culture, historic, memorial, tourism_attractions:
 improve icons

---
 culture.json             |  6 +++---
 historic.json            | 16 ++++++++++++----
 memorial.json            |  2 +-
 tourism_attractions.json | 10 +++++-----
 4 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/culture.json b/culture.json
index 25d0dc156..630f3751b 100644
--- a/culture.json
+++ b/culture.json
@@ -102,14 +102,14 @@
     "const": {
         "amenity=arts_centre": "🎨",
         "amenity=cinema": "🎦",
-        "amenity=community_centre": "",
+        "amenity=community_centre": "<i class=\"fas fa-users\" aria-hidden=\"true\"></i>",
         "amenity=fountain": "⛲",
-        "amenity=studio": "",
+        "amenity=studio": "<i class=\"fas fa-microphone\"></i>",
         "amenity=theatre": "🎭",
         "tourism=artwork": "🎨 ",
         "tourism=gallery": "🖼",
         "tourism=museum": "🏛 ",
-        "tourism=theme_park": "",
+        "tourism=theme_park": "<img data-src='maki:amusement-park'>",
         "shop=art": "<i class=\"fa fa-shopping-cart\"></i>"
     },
     "info": [
diff --git a/historic.json b/historic.json
index b1be97728..0042fc19c 100644
--- a/historic.json
+++ b/historic.json
@@ -90,19 +90,27 @@
     ],
     "const": {
         "archaeological_site": {
-            "sign": "",
+            "sign": "<i class=\"fas fa-archway\"></i>",
             "zoom": 11
         },
         "battlefield": {
-            "sign": "",
+            "sign": "⚔️",
             "zoom": 11
         },
         "castle": {
-            "sign": "<img src='maki:castle'>",
+            "sign": "<img data-src='maki:castle'>",
             "zoom": 11
         },
+        "building": {
+            "sign": "<img data-src='maki:building'>",
+            "zoom": 14
+        },
         "aircraft": {
-            "sign": "<img src='maki:airport'>",
+            "sign": "<img data-src='maki:airport'>",
+            "zoom": 14
+        },
+        "ruins": {
+            "sign": "<img data-src='temaki:ruins'>",
             "zoom": 14
         }
     }
diff --git a/memorial.json b/memorial.json
index 82e349523..300f321e5 100644
--- a/memorial.json
+++ b/memorial.json
@@ -102,7 +102,7 @@
             "zoom": 14
         },
         "monument": {
-            "sign": "<img src='maki:monument?size=15'>",
+            "sign": "<img data-src='maki:monument?size=15'>",
             "zoom": 11
         }
     }
diff --git a/tourism_attractions.json b/tourism_attractions.json
index 7fdfea76c..d69b2b457 100644
--- a/tourism_attractions.json
+++ b/tourism_attractions.json
@@ -49,12 +49,12 @@
     "const": {
         "aquarium": "🐟",
         "artwork": "🎨 ",
-        "attraction": "<img src='maki:attraction'>",
+        "attraction": "<img data-src='maki:attraction'>",
         "gallery": "🖼",
-        "museum": "<img src='maki:museum'>",
-        "picnic_site": "<img src='maki:picnic-site'>",
-        "theme_park": "<img src='maki:amusement-park'>",
-        "viewpoint": "<i class='fa fa-eye' aria-hidden='true'></i>",
+        "museum": "<img data-src='maki:museum'>",
+        "picnic_site": "<img data-src='maki:picnic-site'>",
+        "theme_park": "<img data-src='maki:amusement-park'>",
+        "viewpoint": "<i class='fas fa-eye' aria-hidden='true'></i>",
         "zoo": "🦁"
     }
 }

From 34d03da4ab315d9e107eb021aa92d57a92c76843 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 10 Jan 2019 11:31:23 +0100
Subject: [PATCH 092/108] Include more office-tags (new category: law)

---
 communication.json    | 30 ++++++++++++++++--
 financial.json        | 56 ++++++++++++++++++++++++++++------
 index.json            |  3 ++
 law.json              | 59 +++++++++++++++++++++++++++++++++++
 organisations.json    |  5 +++
 public.json           | 13 ++++----
 tourism_services.json | 71 ++++++++++++++++++++++++++++++++++---------
 7 files changed, 203 insertions(+), 34 deletions(-)
 create mode 100644 law.json

diff --git a/communication.json b/communication.json
index dbdb66216..83a90d31e 100644
--- a/communication.json
+++ b/communication.json
@@ -25,14 +25,14 @@
             "node[amenity~'^(post_office|internet_cafe)$'];",
             "way[amenity~'^(post_office|internet_cafe)$'];",
             "relation[amenity~'^(post_office|internet_cafe)$'];",
-            "nwr[office~\"^(telecommunication|it)$\"];",
+            "nwr[office~\"^(telecommunication|it|newspaper|publisher|advertising_agency)$\"];",
             ");"
         ],
         "16": [
             "(node[amenity~'^(post_office|internet_cafe|post_box|telephone)$'];",
             "way[amenity~'^(post_office|internet_cafe)$'];",
             "relation[amenity~'^(post_office|internet_cafe)$'];",
-            "nwr[office~\"^(telecommunication|it)$\"];",
+            "nwr[office~\"^(telecommunication|it|newspaper|publisher|advertising_agency)$\"];",
             ");"
         ]
     },
@@ -95,13 +95,37 @@
             "zoom": 13
         },
         "office=telecommunication": {
-            "sign": "<img src='maki:building'>",
+            "sign": "<i class='fas fa-mobile-alt'></i>",
             "zoom": 13
         },
         "office=it": {
             "sign": "<i class='fas fa-desktop'></i>",
             "zoom": 13
         },
+        "office=newspaper": {
+            "sign": "<i class='fas fa-newspaper'></i>",
+            "zoom": 13
+        },
+        "office=publisher": {
+            "sign": "<i class='fas fa-book'></i>",
+            "zoom": 13
+        },
+        "office=advertising_agency": {
+            "sign": "<i class='fas fa-sign'></i>",
+            "zoom": 13
+        },
+        "office=public_relations": {
+            "sign": "<i class='fas fa-sign'></i>",
+            "zoom": 13
+        },
+        "office=audiovisual_production": {
+            "sign": "<i class='fas fa-film'></i>",
+            "zoom": 13
+        },
+        "office=film_production": {
+            "sign": "<i class='fas fa-film'></i>",
+            "zoom": 13
+        },
         "amenity=telephone": {
             "sign": "<img src='maki:telephone'>",
             "zoom": 16
diff --git a/financial.json b/financial.json
index b0ea37a4b..82b3bfbd5 100644
--- a/financial.json
+++ b/financial.json
@@ -31,37 +31,75 @@
             "node[amenity~\"^(bank|bureau_de_change|atm)$\"];",
             "way[amenity~\"^(bank|bureau_de_change|atm)$\"];",
             "relation[amenity~\"^(bank|bureau_de_change|atm)$\"];",
+            "node[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];",
+            "way[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];",
+            "relation[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];",
             ")"
         ]
     },
     "feature": {
-        "description": "{{ tagTrans('amenity', tags.amenity) }}",
-        "markerSign": "{{ const[tags.amenity].sign|raw }}"
+        "pre": [
+            "{% if tags.amenity %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = tags.amenity %}",
+            "{% else %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTrans(key, value) }}",
+        "markerSign": "{{ const[key ~ '=' ~ value].sign|raw }}"
     },
     "info": [
         "<table>",
-        "{% for value, data in const %}",
+        "{% for kv, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('amenity', value) }}</td>",
+        "    <td>",
+        "      {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
-        "atm": {
-            "sign": "<img src='maki:bank?size=11'>",
+        "amenity=atm": {
+            "sign": "<img data-src='maki:bank?size=11'>",
             "zoom": 15
         },
-        "bank": {
-            "sign": "<img src='maki:building'>",
+        "amenity=bank": {
+            "sign": "<img data-src='maki:building'>",
             "zoom": 14
         },
-        "bureau_de_change": {
+        "amenity=bureau_de_change": {
             "sign": "⇄",
             "zoom": 15
+        },
+        "office=financial": {
+            "sign": "<i class=\"fas fa-coins\"></i>",
+            "zoom": 15
+        },
+        "office=accountant": {
+            "sign": "<i class=\"fas fa-book\"></i>",
+            "zoom": 15
+        },
+        "office=insurance": {
+            "sign": "<i class=\"fas fa-file-signature\"></i>",
+            "zoom": 15
+        },
+        "office=tax": {
+            "sign": "%",
+            "zoom": 15
+        },
+        "office=tax_advisor": {
+            "sign": "<span style='color: green'>%</span>",
+            "zoom": 15
+        },
+        "office=cooperative": {
+            "sign": "<i class=\"fas fa-piggy-bank\"></i>",
+            "zoom": 15
         }
     }
 }
diff --git a/index.json b/index.json
index b2f33648e..cff222f20 100644
--- a/index.json
+++ b/index.json
@@ -95,6 +95,9 @@
                 {
                     "id": "financial"
                 },
+                {
+                    "id": "law"
+                },
                 {
                     "id": "public"
                 },
diff --git a/law.json b/law.json
new file mode 100644
index 000000000..02beff117
--- /dev/null
+++ b/law.json
@@ -0,0 +1,59 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Law"
+    },
+    "query": {
+        "14": [
+            "(",
+            "node[amenity~\"^(courthouse)$\"];",
+            "way[amenity~\"^(courthouse)$\"];",
+            "relation[amenity~\"^(courthouse)$\"];",
+            "node[office~\"^(lawyer|notary)$\"];",
+            "way[office~\"^(lawyer|notary)$\"];",
+            "relation[office~\"^(lawyer|notary)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% if tags.amenity %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = tags.amenity %}",
+            "{% else %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTrans(key, value) }}",
+        "markerSign": "{{ const[key ~ '=' ~ value].sign|raw }}"
+    },
+    "info": [
+        "<table>",
+        "{% for kv, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>",
+        "      {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "    </td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "</table>"
+    ],
+    "const": {
+        "amenity=courthouse": {
+            "sign": "<i class=\"fas fa-gavel\"></i>",
+            "zoom": 14
+        },
+        "office=lawyer": {
+            "sign": "⚖",
+            "zoom": 14
+        },
+        "office=notary": {
+            "sign": "<i class=\"fas fa-file-signature\"></i>",
+            "zoom": 14
+        }
+    }
+}
diff --git a/organisations.json b/organisations.json
index dcc1aa4bf..a6652b319 100644
--- a/organisations.json
+++ b/organisations.json
@@ -66,6 +66,11 @@
             "sign": "<i class='fas fa-people-carry'></i>",
             "zoom": 13
         },
+        "office=foundation": {
+            "priority": 0,
+            "sign": "<i class='fas fa-people-carry'></i>",
+            "zoom": 13
+        },
         "office=charity": {
             "priority": 0,
             "sign": "<i class='fas fa-hands-helping'></i>",
diff --git a/public.json b/public.json
index 63061c054..956e60a67 100644
--- a/public.json
+++ b/public.json
@@ -21,9 +21,9 @@
     "query": {
         "12": [
             "(",
-            "node[amenity~'^(courthouse|embassy|public_building|townhall)$'];",
-            "way[amenity~'^(courthouse|embassy|public_building|townhall)$'];",
-            "relation[amenity~'^(courthouse|embassy|public_building|townhall)$'];",
+            "node[amenity~'^(embassy|public_building|townhall)$'];",
+            "way[amenity~'^(embassy|public_building|townhall)$'];",
+            "relation[amenity~'^(embassy|public_building|townhall)$'];",
             "node[amenity=recycling][recyling_type=centre];",
             "way[amenity=recycling][recyling_type=centre];",
             "relation[amenity=recycling][recyling_type=centre];",
@@ -32,9 +32,9 @@
         ],
         "16": [
             "(",
-            "node[amenity~'^(courthouse|embassy|public_building|townhall|clock|drinking_water|recycling|toilets)$'];",
-            "way[amenity~'^(courthouse|embassy|public_building|townhall|recycling|toilets)$'];",
-            "relation[amenity~'^(courthouse|embassy|public_building|townhall|recycling|toilets)$'];",
+            "node[amenity~'^(embassy|public_building|townhall|clock|drinking_water|recycling|toilets)$'];",
+            "way[amenity~'^(embassy|public_building|townhall|recycling|toilets)$'];",
+            "relation[amenity~'^(embassy|public_building|townhall|recycling|toilets)$'];",
             "node[drinking_water];",
             "nwr[office~\"^(government|administration)$\"];",
             ");"
@@ -80,7 +80,6 @@
         "</table>"
     ],
     "const": {
-        "amenity=courthouse": "⚖",
         "amenity=clock": "<i class='fa fa-clock-o' aria-hidden='true'></i>",
         "amenity=drinking_water": "<img data-src='maki:drinking-water'>",
         "amenity=embassy": "<img data-src='maki:embassy'>",
diff --git a/tourism_services.json b/tourism_services.json
index 721916ed8..d6e5ad23b 100644
--- a/tourism_services.json
+++ b/tourism_services.json
@@ -25,6 +25,7 @@
             "node[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
             "way[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
             "relation[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
+            "nwr[office~\"^(guide|tourism|tourist_accommodation)$\"];",
             ")"
         ],
         "16": [
@@ -32,67 +33,107 @@
             "node[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
             "way[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
             "relation[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
+            "nwr[office~\"^(guide|tourism|tourist_accommodation)$\"];",
             ")"
         ]
     },
     "feature": {
-        "description": "{{ tagTrans('tourism', tags.tourism) }}",
-        "markerSign": "{{ const[tags.tourism].sign|raw }}"
+        "pre": [
+            "{% if tags.tourism %}",
+            "  {% set key = 'tourism' %}",
+            "  {% set value = tags.tourism %}",
+            "{% else %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if key == 'office' %}",
+            "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
+            "{% else %}",
+            "  {{ tagTrans(key, value) }}",
+            "{% endif %}"
+        ],
+        "markerSign": [
+            "{% set data = const[key ~ '=' ~ value] %}",
+            "{% if data %}",
+            "{{ data.sign|raw }}",
+            "{% endif %}"
+        ]
     },
     "info": [
         "<table>",
-        "{% for value, data in const %}",
+        "{% for kv, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('tourism', value) }}</td>",
+        "    <td>",
+        "      {% if kv|split('=')[0] == 'office' %}",
+        "        {{ keyTrans('office') }}",
+        "        ({{ tagTrans('office', kv|split('=')[1]) }})",
+        "      {% else %}",
+        "        {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "      {% endif %}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
-        "alpine_hut": {
+        "tourism=alpine_hut": {
             "sign": "🛌",
             "zoom": 13
         },
-        "apartment": {
+        "tourism=apartment": {
             "sign": "🛌",
             "zoom": 13
         },
-        "camp_site": {
+        "tourism=camp_site": {
             "sign": "⛺",
             "zoom": 13
         },
-        "caravan_site": {
+        "tourism=caravan_site": {
             "sign": "⛺",
             "zoom": 13
         },
-        "chalet": {
+        "tourism=chalet": {
             "sign": "🛌",
             "zoom": 13
         },
-        "guest_house": {
+        "tourism=guest_house": {
             "sign": "🛌",
             "zoom": 13
         },
-        "hostel": {
+        "tourism=hostel": {
             "sign": "🛌",
             "zoom": 13
         },
-        "hotel": {
+        "tourism=hotel": {
             "sign": "🛌",
             "zoom": 13
         },
-        "motel": {
+        "tourism=motel": {
             "sign": "🛌",
             "zoom": 13
         },
-        "wilderness_hut": {
+        "tourism=wilderness_hut": {
             "sign": "",
             "zoom": 13
         },
-        "information": {
+        "office=tourism": {
+            "sign": "<i class=\"fas fa-info-circle\"></i>",
+            "zoom": 13
+        },
+        "office=guide": {
+            "sign": "<i class=\"fas fa-flag\"></i>",
+            "zoom": 13
+        },
+        "office=tourist_accommodation": {
+            "sign": "🛌",
+            "zoom": 13
+        },
+        "tourism=information": {
             "sign": "ℹ️",
             "zoom": 16
         }

From 35806ea7e09bb6800eb6a3148faaaf9e49e00749 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 10 Jan 2019 11:31:56 +0100
Subject: [PATCH 093/108] religion: include some office tags

---
 religion.json | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/religion.json b/religion.json
index ebdc2b66d..b3e2c5ac4 100644
--- a/religion.json
+++ b/religion.json
@@ -38,6 +38,7 @@
             "node[historic~\"^wayside_(cross|shrine|chapel)$\"];",
             "way[historic~\"^wayside_(cross|shrine|chapel)$\"];",
             "relation[historic~\"^wayside_(cross|shrine|chapel)$\"];",
+            "nwr[office~\"^(parish|religion)$\"];",
             ")"
         ]
     },
@@ -49,6 +50,9 @@
             "{% elseif tags.historic in [ 'wayside_cross', 'wayside_shrine', 'wayside_chapel' ] %}",
             "{% set key = 'historic' %}",
             "{% set value = tags.historic %}",
+            "{% elseif tags.office %}",
+            "{% set key = 'office' %}",
+            "{% set value = tags.office %}",
             "{% else %}",
             "{% set key = 'amenity' %}",
             "{% set value = tags.amenity %}",

From 4030c5c91db4bdf0aa1d52905955bb304adcc1c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 10 Jan 2019 21:17:24 +0100
Subject: [PATCH 094/108] tourism_services: include office=camping

---
 tourism_services.json | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/tourism_services.json b/tourism_services.json
index 0247ae34d..4901f18a0 100644
--- a/tourism_services.json
+++ b/tourism_services.json
@@ -25,7 +25,7 @@
             "node[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
             "way[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
             "relation[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
-            "nwr[office~\"^(guide|tourism|tourist_accommodation)$\"];",
+            "nwr[office~\"^(guide|tourism|tourist_accommodation|camping)$\"];",
             ")"
         ],
         "16": [
@@ -33,7 +33,7 @@
             "node[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
             "way[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
             "relation[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
-            "nwr[office~\"^(guide|tourism|tourist_accommodation)$\"];",
+            "nwr[office~\"^(guide|tourism|tourist_accommodation|camping)$\"];",
             ")"
         ]
     },
@@ -133,6 +133,10 @@
             "sign": "🛌",
             "zoom": 13
         },
+        "office=camping": {
+            "sign": "⛺",
+            "zoom": 13
+        },
         "tourism=information": {
             "sign": "ℹ️",
             "zoom": 16

From c1acf788c687d669761c46fa2b84bb1413be46e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 10 Jan 2019 21:19:33 +0100
Subject: [PATCH 095/108] Make new categories translateable

---
 lang/ast.json      | 7 +++++++
 lang/ca.json       | 7 +++++++
 lang/cs.json       | 7 +++++++
 lang/de.json       | 9 ++++++++-
 lang/el.json       | 7 +++++++
 lang/en.json       | 7 +++++++
 lang/es.json       | 7 +++++++
 lang/et.json       | 7 +++++++
 lang/fr.json       | 7 +++++++
 lang/hu.json       | 7 +++++++
 lang/it.json       | 7 +++++++
 lang/ja.json       | 7 +++++++
 lang/nl.json       | 7 +++++++
 lang/pl.json       | 7 +++++++
 lang/pt-br.json    | 7 +++++++
 lang/pt.json       | 7 +++++++
 lang/ro.json       | 7 +++++++
 lang/ru.json       | 7 +++++++
 lang/template.json | 7 +++++++
 lang/uk.json       | 7 +++++++
 20 files changed, 141 insertions(+), 1 deletion(-)

diff --git a/lang/ast.json b/lang/ast.json
index 5439d69ff..f50bfdbed 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Infraestructures",
     "category:alternative_routes": "Rutes",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Infraestructures",
     "category:car_furniture": "Acondicionamientu urbanu",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Accesu a Internet",
+    "category:law": "",
     "category:leisure": "Recréu",
     "category:leisure_sport_shopping": "Recréu, deportes y compres",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "Formaciones naturales",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Otres",
     "category:outdoor": "",
     "category:phone": "Teléfonos",
diff --git a/lang/ca.json b/lang/ca.json
index 2b4a38dfe..8fc41283a 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Accés a Internet",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Oci, esport i compres",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
diff --git a/lang/cs.json b/lang/cs.json
index ac91fbc36..d55454571 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Občanská vybavenost",
     "category:alternative_routes": "Trasy cest",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Občasnká vybavenost",
     "category:car_furniture": "Pouliční přislušenství",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Přístup k internetu",
+    "category:law": "",
     "category:leisure": "Volný čas",
     "category:leisure_sport_shopping": "Volný čas, sporty a nákupy",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "Přírodní úkazy",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Jiné",
     "category:outdoor": "",
     "category:phone": "Telefony",
diff --git a/lang/de.json b/lang/de.json
index 8056518e1..e3e9e4060 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Einrichtungen",
     "category:alternative_routes": "(ausgeschilderte) Routen",
     "category:buildings": "Gebäude",
+    "category:buildings-entrances": "Eingänge",
+    "category:buildings-figure-ground": "Schwarzplan",
+    "category:buildings-height": "Gebäudehöhen",
+    "category:buildings-start_date": "Gebäudealter",
+    "category:buildings-type": "Gebäudearten",
     "category:car_amenities": "Einrichtungen",
     "category:car_furniture": "Straßenausstattung",
     "category:car_maxspeed": "Höchstgeschwindigkeiten",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "Infrastruktur",
     "category:internet": "Internetzugang",
+    "category:law": "",
     "category:leisure": "Freizeit",
     "category:leisure_sport_shopping": "Freizeit, Sport und Einkauf",
     "category:memorial": "Denkmäler",
@@ -38,6 +44,7 @@
     "category:natural": "Geographische Objekte",
     "category:office": "Ämter, Dienst- und Geschäftsstellen",
     "category:oil_gas": "Erdöl und Erdgas",
+    "category:organisations": "",
     "category:other": "Andere",
     "category:outdoor": "Freiluftaktivitäten",
     "category:phone": "Telekommunikation",
@@ -78,5 +85,5 @@
     "category:water": "Gewässer",
     "category:wikipedia": "Wikipedia",
     "category:works": "Fabriken",
-    "category:xmas": ""
+    "category:xmas": "Weihnachten"
 }
diff --git a/lang/el.json b/lang/el.json
index 6daf1ec03..ecceb29f9 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "Αναψυχή",
     "category:leisure_sport_shopping": "Αναψυχή, Αθλητισμός και Αγορές",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "Φυσικοί Σχηματισμοί",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
diff --git a/lang/en.json b/lang/en.json
index 8d7fa635c..c9a3519b7 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Amenities",
     "category:alternative_routes": "Routes",
     "category:buildings": "Buildings",
+    "category:buildings-entrances": "Entrances",
+    "category:buildings-figure-ground": "Figure-ground diagram",
+    "category:buildings-height": "Building height",
+    "category:buildings-start_date": "Building age",
+    "category:buildings-type": "Building types",
     "category:car_amenities": "Amenities",
     "category:car_furniture": "Street Furniture",
     "category:car_maxspeed": "Maxspeed",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "Infrastructure",
     "category:internet": "Internet access",
+    "category:law": "Law",
     "category:leisure": "Leisure",
     "category:leisure_sport_shopping": "Leisure, Sport and Shopping",
     "category:memorial": "Memorials",
@@ -38,6 +44,7 @@
     "category:natural": "Natural Formations",
     "category:office": "Offices",
     "category:oil_gas": "Petroleum and natural gas",
+    "category:organisations": "Organisations",
     "category:other": "Other",
     "category:outdoor": "Outdoor activities",
     "category:phone": "Phone",
diff --git a/lang/es.json b/lang/es.json
index 75245e17d..1e74bf066 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Acceso a Internet",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Ocio, deporte y compras",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
diff --git a/lang/et.json b/lang/et.json
index e8985de6b..d86c5c3ba 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Vaba aeg, sport ja ostmine",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Ülejäänud",
     "category:outdoor": "",
     "category:phone": "Telefon",
diff --git a/lang/fr.json b/lang/fr.json
index 59026796c..07468b688 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Équipement",
     "category:alternative_routes": "Routes",
     "category:buildings": "Bâtiments",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Équipements auto",
     "category:car_furniture": "Fournitures automobiles",
     "category:car_maxspeed": "Limites de vitesse",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "Infrastructures",
     "category:internet": "Internet",
+    "category:law": "",
     "category:leisure": "Loisirs",
     "category:leisure_sport_shopping": "Loisirs",
     "category:memorial": "Mémoriaux",
@@ -38,6 +44,7 @@
     "category:natural": "Éléments naturels",
     "category:office": "Bureaux",
     "category:oil_gas": "Pétrole et gaz naturel",
+    "category:organisations": "",
     "category:other": "Autres",
     "category:outdoor": "Activités de plein air",
     "category:phone": "Téléphone",
diff --git a/lang/hu.json b/lang/hu.json
index f4f5e7f04..bbacb7b74 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Létesítmények",
     "category:alternative_routes": "Útvonalak",
     "category:buildings": "Épületek",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Létesítmények",
     "category:car_furniture": "Jelzőtáblák",
     "category:car_maxspeed": "Sebességkorlátozás",
@@ -30,6 +35,7 @@
     "category:index": "Tartalom",
     "category:infrastructure": "Infrastruktúra",
     "category:internet": "Internetcsatlakozás",
+    "category:law": "",
     "category:leisure": "Szabadidő",
     "category:leisure_sport_shopping": "Szabadidő, sport és vásárlás",
     "category:memorial": "Emlékművek",
@@ -38,6 +44,7 @@
     "category:natural": "Természeti képződmények",
     "category:office": "Irodák, hivatalok",
     "category:oil_gas": "Kőolaj, földgáz",
+    "category:organisations": "",
     "category:other": "Egyéb",
     "category:outdoor": "Szabadtéri tevékenységek",
     "category:phone": "Telefon",
diff --git a/lang/it.json b/lang/it.json
index 75dff9682..7960f3a6c 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Infrastrutture",
     "category:alternative_routes": "Itinerari segnalati",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Infrastrutture",
     "category:car_furniture": "Dotazioni stradali",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "Tempo libero",
     "category:leisure_sport_shopping": "Tempo libero, sport e shopping",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "Natura",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Altri",
     "category:outdoor": "",
     "category:phone": "",
diff --git a/lang/ja.json b/lang/ja.json
index 01be5468d..32a1fe939 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "生活環境",
     "category:alternative_routes": "ルート",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "生活環境",
     "category:car_furniture": "街路設置公共物",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "インターネット接続",
+    "category:law": "",
     "category:leisure": "レジャー",
     "category:leisure_sport_shopping": "レジャー",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "自然地層",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "その他",
     "category:outdoor": "",
     "category:phone": "電話",
diff --git a/lang/nl.json b/lang/nl.json
index 39911ad2e..41e2d31ee 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Voorzieningen",
     "category:alternative_routes": "Alternatieve routes",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Voorzieningen",
     "category:car_furniture": "Straatmeubilair",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Internettoegang",
+    "category:law": "",
     "category:leisure": "Vrije tijd",
     "category:leisure_sport_shopping": "Vrije tijd, Sport en Winkelen",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "Natuurlijke Formaties",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Andere",
     "category:outdoor": "",
     "category:phone": "Telefonie",
diff --git a/lang/pl.json b/lang/pl.json
index b4709717f..1877ff04e 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "Elementy drogowe",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Wypoczynek, Sport i Zakupy",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index cbafd234d..ebc8d46dc 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Equipamentos",
     "category:alternative_routes": "Rotas",
     "category:buildings": "Edificações",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Equipamentos",
     "category:car_furniture": "Mobiliário urbano",
     "category:car_maxspeed": "Velocidade máxima",
@@ -30,6 +35,7 @@
     "category:index": "Índice",
     "category:infrastructure": "Infraestrutura",
     "category:internet": "Acesso à Internet",
+    "category:law": "",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, esportes e compras",
     "category:memorial": "Memoriais",
@@ -38,6 +44,7 @@
     "category:natural": "Formações naturais",
     "category:office": "Escritórios e agências",
     "category:oil_gas": "Petróleo e gás",
+    "category:organisations": "",
     "category:other": "Outros",
     "category:outdoor": "Atividades ao ar livre",
     "category:phone": "Telefone",
diff --git a/lang/pt.json b/lang/pt.json
index ac5a8aa7a..770d2ba77 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "Rotas",
     "category:buildings": "Edifícios",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "Mobiliário urbano",
     "category:car_maxspeed": "Velocidade máxima",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "Infraestrutura",
     "category:internet": "Acesso à Internet",
+    "category:law": "",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, desporto e compras",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "Formações naturais",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Outros",
     "category:outdoor": "",
     "category:phone": "Telefone",
diff --git a/lang/ro.json b/lang/ro.json
index 857f9e064..08ce2fe0d 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Acces internet",
+    "category:law": "",
     "category:leisure": "Timp liber",
     "category:leisure_sport_shopping": "Timp liber, Sport si Cumparaturi",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Altele",
     "category:outdoor": "",
     "category:phone": "Telefon",
diff --git a/lang/ru.json b/lang/ru.json
index 0d2c78d30..f321c0534 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Полезные места",
     "category:alternative_routes": "Маршруты",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Обслуживание транспорта",
     "category:car_furniture": "Элементы дороги",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "Досуг",
     "category:leisure_sport_shopping": "Досуг",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "Природные образования",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Прочее",
     "category:outdoor": "",
     "category:phone": "",
diff --git a/lang/template.json b/lang/template.json
index 135ff395f..b2231d569 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
diff --git a/lang/uk.json b/lang/uk.json
index cb3d073b3..6b01ebe47 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -4,6 +4,11 @@
     "category:alternative_amenities": "Amenities",
     "category:alternative_routes": "Маршрути",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Amenities",
     "category:car_furniture": "Street Furniture",
     "category:car_maxspeed": "",
@@ -30,6 +35,7 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "Дозвілля",
     "category:leisure_sport_shopping": "Дозвілля",
     "category:memorial": "",
@@ -38,6 +44,7 @@
     "category:natural": "Природне середовище",
     "category:office": "",
     "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Інше",
     "category:outdoor": "",
     "category:phone": "",

From 6690c4917bbb786d95913bda1b59627990e60b60 Mon Sep 17 00:00:00 2001
From: Igor Eliezer <IgorEliezer@users.noreply.github.com>
Date: Thu, 10 Jan 2019 23:38:20 -0200
Subject: [PATCH 096/108] Update

---
 lang/pt-br.json | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lang/pt-br.json b/lang/pt-br.json
index ebc8d46dc..7b57f8ab5 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -4,11 +4,11 @@
     "category:alternative_amenities": "Equipamentos",
     "category:alternative_routes": "Rotas",
     "category:buildings": "Edificações",
-    "category:buildings-entrances": "",
-    "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-entrances": "Acessos",
+    "category:buildings-figure-ground": "Cheios e vazios",
+    "category:buildings-height": "Altura",
+    "category:buildings-start_date": "Idade",
+    "category:buildings-type": "Tipologias",
     "category:car_amenities": "Equipamentos",
     "category:car_furniture": "Mobiliário urbano",
     "category:car_maxspeed": "Velocidade máxima",
@@ -35,7 +35,7 @@
     "category:index": "Índice",
     "category:infrastructure": "Infraestrutura",
     "category:internet": "Acesso à Internet",
-    "category:law": "",
+    "category:law": "Direito",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, esportes e compras",
     "category:memorial": "Memoriais",
@@ -44,7 +44,7 @@
     "category:natural": "Formações naturais",
     "category:office": "Escritórios e agências",
     "category:oil_gas": "Petróleo e gás",
-    "category:organisations": "",
+    "category:organisations": "Organizações",
     "category:other": "Outros",
     "category:outdoor": "Atividades ao ar livre",
     "category:phone": "Telefone",

From 38f022f8a1403ce5f3c7a28647b4274ebacf4a94 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Fri, 11 Jan 2019 10:07:29 +0100
Subject: [PATCH 097/108] Copy pt-br translations to categories

---
 buildings-entrances.json     | 3 ++-
 buildings-figure-ground.json | 3 ++-
 buildings-height.json        | 3 ++-
 buildings-start_date.json    | 3 ++-
 buildings-type.json          | 3 ++-
 law.json                     | 3 ++-
 organisations.json           | 3 ++-
 7 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/buildings-entrances.json b/buildings-entrances.json
index 0950f11a3..33130498b 100644
--- a/buildings-entrances.json
+++ b/buildings-entrances.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Eingänge",
-        "en": "Entrances"
+        "en": "Entrances",
+        "pt-br": "Acessos"
     },
     "query": {
         "16": [
diff --git a/buildings-figure-ground.json b/buildings-figure-ground.json
index 726fc2b84..808beac8a 100644
--- a/buildings-figure-ground.json
+++ b/buildings-figure-ground.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Schwarzplan",
-        "en": "Figure-ground diagram"
+        "en": "Figure-ground diagram",
+        "pt-br": "Cheios e vazios"
     },
     "query": {
         "16": [
diff --git a/buildings-height.json b/buildings-height.json
index 28c2e1490..5ac1c3b00 100644
--- a/buildings-height.json
+++ b/buildings-height.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Gebäudehöhen",
-        "en": "Building height"
+        "en": "Building height",
+        "pt-br": "Altura"
     },
     "query": {
         "16": [
diff --git a/buildings-start_date.json b/buildings-start_date.json
index fadac2069..704d87bcc 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -1,8 +1,9 @@
 {
     "type": "overpass",
     "name": {
+        "de": "Gebäudealter",
         "en": "Building age",
-        "de": "Gebäudealter"
+        "pt-br": "Idade"
     },
     "query": {
         "16": [
diff --git a/buildings-type.json b/buildings-type.json
index 09bb904b7..57045affe 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -2,7 +2,8 @@
     "type": "overpass",
     "name": {
         "de": "Gebäudearten",
-        "en": "Building types"
+        "en": "Building types",
+        "pt-br": "Tipologias"
     },
     "query": {
         "16": [
diff --git a/law.json b/law.json
index 02beff117..f472377f1 100644
--- a/law.json
+++ b/law.json
@@ -1,7 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "en": "Law"
+        "en": "Law",
+        "pt-br": "Direito"
     },
     "query": {
         "14": [
diff --git a/organisations.json b/organisations.json
index a6652b319..cfd77b912 100644
--- a/organisations.json
+++ b/organisations.json
@@ -1,7 +1,8 @@
 {
     "type": "overpass",
     "name": {
-        "en": "Organisations"
+        "en": "Organisations",
+        "pt-br": "Organizações"
     },
     "query": {
         "13": [

From bf6bdb29c32647b23c71476f15dd8de1ac449a2a Mon Sep 17 00:00:00 2001
From: Cybereric <Cybereric@users.noreply.github.com>
Date: Sun, 13 Jan 2019 18:44:35 +0100
Subject: [PATCH 098/108] Update fr.json

---
 lang/fr.json | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/lang/fr.json b/lang/fr.json
index 07468b688..3713ae89c 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -4,11 +4,11 @@
     "category:alternative_amenities": "Équipement",
     "category:alternative_routes": "Routes",
     "category:buildings": "Bâtiments",
-    "category:buildings-entrances": "",
-    "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-entrances": "Entrées",
+    "category:buildings-figure-ground": "Empreintes",
+    "category:buildings-height": "Hauteur",
+    "category:buildings-start_date": "Date de construction",
+    "category:buildings-type": "Type",
     "category:car_amenities": "Équipements auto",
     "category:car_furniture": "Fournitures automobiles",
     "category:car_maxspeed": "Limites de vitesse",
@@ -19,7 +19,7 @@
     "category:construction": "Constructions",
     "category:craft": "Artisanat",
     "category:culture": "Culture",
-    "category:culture_religion": "Culture et Religion",
+    "category:culture_religion": "Culture et religion",
     "category:cycle_amenities": "Équipements vélo",
     "category:cycle_routes": "Itinéraires vélo",
     "category:education": "Éducation",
@@ -35,16 +35,16 @@
     "category:index": "",
     "category:infrastructure": "Infrastructures",
     "category:internet": "Internet",
-    "category:law": "",
+    "category:law": "Services législatifs",
     "category:leisure": "Loisirs",
-    "category:leisure_sport_shopping": "Loisirs",
+    "category:leisure_sport_shopping": "Vie quotidienne, loisirs et sports",
     "category:memorial": "Mémoriaux",
-    "category:military": "Militaire",
+    "category:military": "Équipements et zones militaires",
     "category:mtb-routes": "Itinéraires de VTT",
     "category:natural": "Éléments naturels",
     "category:office": "Bureaux",
     "category:oil_gas": "Pétrole et gaz naturel",
-    "category:organisations": "",
+    "category:organisations": "Organisations",
     "category:other": "Autres",
     "category:outdoor": "Activités de plein air",
     "category:phone": "Téléphone",
@@ -57,7 +57,7 @@
     "category:pt:routes": "Lignes",
     "category:pt:stops": "Arrêts/Stops, Stations",
     "category:pt_amenities": "Équipements",
-    "category:public": "Services Publics",
+    "category:public": "Services et équipements publics",
     "category:railway": "Chemins de fer",
     "category:railway-electrification": "Puissance électrique ferroviaire",
     "category:railway-infrastructure": "Infrastructure ferroviaire",
@@ -71,11 +71,11 @@
     "category:shop": "Magasins/Boutiques",
     "category:special": "Catégories spéciales",
     "category:sport": "Sports",
-    "category:swimming_bathing": "Natation/Baignade/Bains",
+    "category:swimming_bathing": "Natation, baignade et bains",
     "category:tourism_attractions": "Tourisme",
     "category:tourism_services": "Tourisme",
     "category:transport": "Transports",
-    "category:transport_alternative": "Alternatif (Cyclisme, Randonnée, ...)",
+    "category:transport_alternative": "Alternatif (cyclisme, randonnée, ...)",
     "category:transport_car": "Transport automobile",
     "category:transport_cycle": "Cyclisme",
     "category:transport_pt": "Transports publics",

From b29eafd5adc1e772da58f3b630e0995f7585de61 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Mon, 14 Jan 2019 10:31:03 +0100
Subject: [PATCH 099/108] Copy fr translations to categories

---
 buildings-entrances.json     | 1 +
 buildings-figure-ground.json | 1 +
 buildings-height.json        | 1 +
 buildings-start_date.json    | 1 +
 buildings-type.json          | 1 +
 culture_religion.json        | 2 +-
 index.json                   | 2 +-
 law.json                     | 1 +
 military.json                | 2 +-
 organisations.json           | 1 +
 public.json                  | 2 +-
 swimming_bathing.json        | 2 +-
 transport_alternative.json   | 2 +-
 13 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/buildings-entrances.json b/buildings-entrances.json
index 33130498b..513cef0c5 100644
--- a/buildings-entrances.json
+++ b/buildings-entrances.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Eingänge",
         "en": "Entrances",
+        "fr": "Entrées",
         "pt-br": "Acessos"
     },
     "query": {
diff --git a/buildings-figure-ground.json b/buildings-figure-ground.json
index 808beac8a..72a3ae66c 100644
--- a/buildings-figure-ground.json
+++ b/buildings-figure-ground.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Schwarzplan",
         "en": "Figure-ground diagram",
+        "fr": "Empreintes",
         "pt-br": "Cheios e vazios"
     },
     "query": {
diff --git a/buildings-height.json b/buildings-height.json
index 5ac1c3b00..6e3851a95 100644
--- a/buildings-height.json
+++ b/buildings-height.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Gebäudehöhen",
         "en": "Building height",
+        "fr": "Hauteur",
         "pt-br": "Altura"
     },
     "query": {
diff --git a/buildings-start_date.json b/buildings-start_date.json
index 704d87bcc..a5b50559a 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Gebäudealter",
         "en": "Building age",
+        "fr": "Date de construction",
         "pt-br": "Idade"
     },
     "query": {
diff --git a/buildings-type.json b/buildings-type.json
index 57045affe..c7c2d85e9 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "Gebäudearten",
         "en": "Building types",
+        "fr": "Type",
         "pt-br": "Tipologias"
     },
     "query": {
diff --git a/culture_religion.json b/culture_religion.json
index 52cc1a5aa..17c8e1642 100644
--- a/culture_religion.json
+++ b/culture_religion.json
@@ -9,7 +9,7 @@
         "en": "Culture and Religion",
         "es": "Cultura y religión",
         "et": "Kultuur ja religioon",
-        "fr": "Culture et Religion",
+        "fr": "Culture et religion",
         "hu": "Kultúra és vallás",
         "it": "Cultura",
         "ja": "文化",
diff --git a/index.json b/index.json
index 126668ec3..ba5a57d19 100644
--- a/index.json
+++ b/index.json
@@ -13,7 +13,7 @@
                 "en": "Leisure, Sport and Shopping",
                 "es": "Ocio, deporte y compras",
                 "et": "Vaba aeg, sport ja ostmine",
-                "fr": "Loisirs",
+                "fr": "Vie quotidienne, loisirs et sports",
                 "hu": "Szabadidő, sport és vásárlás",
                 "it": "Tempo libero, sport e shopping",
                 "ja": "レジャー",
diff --git a/law.json b/law.json
index f472377f1..f670988c8 100644
--- a/law.json
+++ b/law.json
@@ -2,6 +2,7 @@
     "type": "overpass",
     "name": {
         "en": "Law",
+        "fr": "Services législatifs",
         "pt-br": "Direito"
     },
     "query": {
diff --git a/military.json b/military.json
index 4c4eade24..39b276a29 100644
--- a/military.json
+++ b/military.json
@@ -6,7 +6,7 @@
         "de": "Militär",
         "el": "Στρατιωτικό",
         "en": "Military",
-        "fr": "Militaire",
+        "fr": "Équipements et zones militaires",
         "hu": "Katonai objektumok",
         "it": "Militare",
         "ja": "軍事",
diff --git a/organisations.json b/organisations.json
index cfd77b912..1d73ea0c8 100644
--- a/organisations.json
+++ b/organisations.json
@@ -2,6 +2,7 @@
     "type": "overpass",
     "name": {
         "en": "Organisations",
+        "fr": "Organisations",
         "pt-br": "Organizações"
     },
     "query": {
diff --git a/public.json b/public.json
index 3adc7ff1a..448fb3102 100644
--- a/public.json
+++ b/public.json
@@ -7,7 +7,7 @@
         "el": "Δημόσιες Υπηρεσίες",
         "en": "Public Services",
         "et": "Kommunaalteenused",
-        "fr": "Services Publics",
+        "fr": "Services et équipements publics",
         "hu": "Közszolgáltatások",
         "it": "Servizi pubblici",
         "ja": "公共サービス",
diff --git a/swimming_bathing.json b/swimming_bathing.json
index f52571151..def3505f6 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -3,7 +3,7 @@
     "name": {
         "de": "Schwimmen und Baden",
         "en": "Swimming and bathing",
-        "fr": "Natation/Baignade/Bains",
+        "fr": "Natation, baignade et bains",
         "hu": "Fürdőzés, úszás",
         "pt-br": "Natação e banho"
     },
diff --git a/transport_alternative.json b/transport_alternative.json
index 32278c7c9..8736ab16e 100644
--- a/transport_alternative.json
+++ b/transport_alternative.json
@@ -4,7 +4,7 @@
         "cs": "Alternativní (Cyklistika, Pěší turistika, ...)",
         "el": "Εναλλακτικά (ποδηλασία, ορειβασία,...)",
         "et": "Alternatiivne (jalgrattasõit, matkamine, ...)",
-        "fr": "Alternatif (Cyclisme, Randonnée, ...)",
+        "fr": "Alternatif (cyclisme, randonnée, ...)",
         "hu": "Alternatív (Kerékpár, Túra)",
         "it": "Alternativi (bicicletta, camminate, ...)",
         "ja": "その他交通 (サイクリング、ハイキング、...)",

From 6a8680317ba2d73444a7aa96d15a7dea4c2d4c61 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 14 Jan 2019 16:33:44 +0100
Subject: [PATCH 100/108] buildings-start_date: show localized start_date

---
 buildings-start_date.json | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/buildings-start_date.json b/buildings-start_date.json
index 704d87bcc..e3b11bf5c 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -44,7 +44,12 @@
         ],
         "description": [
             "{% if tags.start_date %}",
-            "{{ tags.start_date }}",
+            "{{ tags.start_date|osmFormatDate({ format: 'short' }) }}",
+            "{% endif %}"
+        ],
+        "popupDescription": [
+            "{% if tags.start_date %}",
+            "{{ tags.start_date|osmFormatDate }}",
             "{% endif %}"
         ],
         "markerSymbol": null,

From d7e98c24d5c2c75952e8ef5a6654af304a2681d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 14 Jan 2019 16:35:32 +0100
Subject: [PATCH 101/108] buildings-start_date: show 'unknown' when no
 start_date set

---
 buildings-start_date.json | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/buildings-start_date.json b/buildings-start_date.json
index e3b11bf5c..bac2e3246 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -45,11 +45,15 @@
         "description": [
             "{% if tags.start_date %}",
             "{{ tags.start_date|osmFormatDate({ format: 'short' }) }}",
+            "{% else %}",
+            "{{ trans('unknown') }}",
             "{% endif %}"
         ],
         "popupDescription": [
             "{% if tags.start_date %}",
             "{{ tags.start_date|osmFormatDate }}",
+            "{% else %}",
+            "{{ trans('unknown') }}",
             "{% endif %}"
         ],
         "markerSymbol": null,

From 17a54810720201571c242a1da29f634c4062236c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 15 Jan 2019 15:13:35 +0100
Subject: [PATCH 102/108] detailsBody, popupBody: format start_date and
 opening_date

---
 detailsBody.html | 4 ++--
 popupBody.html   | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/detailsBody.html b/detailsBody.html
index 3c5a74647..ca0b27f5e 100644
--- a/detailsBody.html
+++ b/detailsBody.html
@@ -145,7 +145,7 @@
   <li class='hasSymbol'>
    <i class="fa fa-clock-o" aria-hidden="true"></i>
    <span class='key'>{{ keyTrans('start_date') }}:</span>
-   <span class='value'>{{ enumerate(tags.start_date) }}</span>
+   <span class='value'>{{ tags.start_date|osmFormatDate }}</span>
   </li>
 {% endif %}
 
@@ -153,7 +153,7 @@
   <li class='hasSymbol'>
    <i class="fa fa-clock-o" aria-hidden="true"></i>
    <span class='key'>{{ keyTrans('opening_date') }}:</span>
-   <span class='value'>{{ enumerate(tags.opening_date) }}</span>
+   <span class='value'>{{ tags.opening_date|osmFormatDate }}</span>
   </li>
 {% endif %}
 
diff --git a/popupBody.html b/popupBody.html
index d27884679..b3ead54f4 100644
--- a/popupBody.html
+++ b/popupBody.html
@@ -151,7 +151,7 @@
   <li class='hasSymbol'>
    <i class="fa fa-clock-o" aria-hidden="true"></i>
    <span class='key'>{{ keyTrans('start_date') }}:</span>
-   <span class='value'>{{ enumerate(tags.start_date) }}</span>
+   <span class='value'>{{ tags.start_date|osmFormatDate }}</span>
   </li>
 {% endif %}
 
@@ -159,7 +159,7 @@
   <li class='hasSymbol'>
    <i class="fa fa-clock-o" aria-hidden="true"></i>
    <span class='key'>{{ keyTrans('opening_date') }}:</span>
-   <span class='value'>{{ enumerate(tags.opening_date) }}</span>
+   <span class='value'>{{ tags.opening_date|osmFormatDate }}</span>
   </li>
 {% endif %}
 

From 2ced1489eba3004df087560b82521cf20631ac1f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 15 Jan 2019 15:38:17 +0100
Subject: [PATCH 103/108] xmas: fix isCurrent check

---
 xmas.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xmas.json b/xmas.json
index 2baa128d6..8da2b52c4 100644
--- a/xmas.json
+++ b/xmas.json
@@ -18,7 +18,7 @@
     },
     "feature": {
         "pre": [
-            "{% set isCurrent = meta.timestamp > now|date_modify('-1 month')|date('Y') %}",
+            "{% set isCurrent = meta.timestamp >= \"now\"|date_modify('-10 month')|date('Y') %}",
             "{% set bgColor = isCurrent ? '#f2756a' : 'red' %}"
         ],
         "title": "{{ attribute(tags, \"xmas:name\")|default(trans(\"unnamed\")) }}",

From 0fb9ab56300e21c4b3d548008fa1258cdcd946cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 15 Jan 2019 15:19:10 +0100
Subject: [PATCH 104/108] buildings-start_date: translate strings in map key

---
 buildings-start_date.json | 4 ++--
 lang/ast.json             | 3 ++-
 lang/ca.json              | 3 ++-
 lang/cs.json              | 3 ++-
 lang/de.json              | 3 ++-
 lang/el.json              | 3 ++-
 lang/en.json              | 3 ++-
 lang/es.json              | 3 ++-
 lang/et.json              | 3 ++-
 lang/fr.json              | 3 ++-
 lang/hu.json              | 3 ++-
 lang/it.json              | 3 ++-
 lang/ja.json              | 3 ++-
 lang/nl.json              | 3 ++-
 lang/pl.json              | 3 ++-
 lang/pt-br.json           | 3 ++-
 lang/pt.json              | 3 ++-
 lang/ro.json              | 3 ++-
 lang/ru.json              | 3 ++-
 lang/template.json        | 3 ++-
 lang/uk.json              | 3 ++-
 21 files changed, 42 insertions(+), 22 deletions(-)

diff --git a/buildings-start_date.json b/buildings-start_date.json
index a5b50559a..6b9bb5358 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -111,11 +111,11 @@
         "  </tr>",
         "  <tr>",
         "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"xxx\" }))|raw }}</td>",
-        "    <td>unparseable start_date</td>",
+        "    <td>{{ repoTrans('date format not understood') }}</td>",
         "  </tr>",
         "  <tr>",
         "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
-        "    <td>no start_date</td>",
+        "    <td>{{ trans('unknown') }}</td>",
         "  </tr>",
         "</table>"
     ]
diff --git a/lang/ast.json b/lang/ast.json
index f50bfdbed..716071e8b 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "Fábriques",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/ca.json b/lang/ca.json
index 8fc41283a..c3f136dec 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/cs.json b/lang/cs.json
index d55454571..f8ee143fb 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "Továrny",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/de.json b/lang/de.json
index e3e9e4060..100cd38fe 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -85,5 +85,6 @@
     "category:water": "Gewässer",
     "category:wikipedia": "Wikipedia",
     "category:works": "Fabriken",
-    "category:xmas": "Weihnachten"
+    "category:xmas": "Weihnachten",
+    "date format not understood": "Datumsformat nicht erkannt"
 }
diff --git a/lang/el.json b/lang/el.json
index ecceb29f9..f4ed8b1ba 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/en.json b/lang/en.json
index c9a3519b7..e719bc92b 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -85,5 +85,6 @@
     "category:water": "Waterbodies",
     "category:wikipedia": "Wikipedia",
     "category:works": "Works",
-    "category:xmas": "Christmas"
+    "category:xmas": "Christmas",
+    "date format not understood": ""
 }
diff --git a/lang/es.json b/lang/es.json
index 1e74bf066..48d6d0fdb 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/et.json b/lang/et.json
index d86c5c3ba..798a575f8 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/fr.json b/lang/fr.json
index 3713ae89c..3c535cb2f 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -85,5 +85,6 @@
     "category:water": "Hydrographie",
     "category:wikipedia": "Wikipédia",
     "category:works": "Zones industrielles",
-    "category:xmas": "Noël"
+    "category:xmas": "Noël",
+    "date format not understood": ""
 }
diff --git a/lang/hu.json b/lang/hu.json
index bbacb7b74..35b4d6019 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -85,5 +85,6 @@
     "category:water": "Vizek",
     "category:wikipedia": "Wikipédia",
     "category:works": "Üzemek",
-    "category:xmas": "Karácsony"
+    "category:xmas": "Karácsony",
+    "date format not understood": ""
 }
diff --git a/lang/it.json b/lang/it.json
index 7960f3a6c..245647c5c 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "Fabbriche",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/ja.json b/lang/ja.json
index 32a1fe939..f409ba757 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "工場",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/nl.json b/lang/nl.json
index 41e2d31ee..c4d8ad3cf 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "Fabrieken",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/pl.json b/lang/pl.json
index 1877ff04e..174566e25 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/pt-br.json b/lang/pt-br.json
index 7b57f8ab5..b6f1086e8 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -85,5 +85,6 @@
     "category:water": "Hidrografia",
     "category:wikipedia": "Wikipédia",
     "category:works": "Fábricas",
-    "category:xmas": "Natal"
+    "category:xmas": "Natal",
+    "date format not understood": ""
 }
diff --git a/lang/pt.json b/lang/pt.json
index 770d2ba77..7a6f77997 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -85,5 +85,6 @@
     "category:water": "Massas de água",
     "category:wikipedia": "Wikipédia",
     "category:works": "Fábricas",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/ro.json b/lang/ro.json
index 08ce2fe0d..a5572e43a 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/ru.json b/lang/ru.json
index f321c0534..073a42b0f 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "Промышленность",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/template.json b/lang/template.json
index b2231d569..29c5c658a 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }
diff --git a/lang/uk.json b/lang/uk.json
index 6b01ebe47..eb3ad0669 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -85,5 +85,6 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": ""
+    "category:xmas": "",
+    "date format not understood": ""
 }

From cab429ed835e2e4b69364005476ed0347332dd1e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 15 Jan 2019 15:38:49 +0100
Subject: [PATCH 105/108] xmas: translate outdated warnings

---
 lang/ast.json      | 4 +++-
 lang/ca.json       | 4 +++-
 lang/cs.json       | 4 +++-
 lang/de.json       | 4 +++-
 lang/el.json       | 4 +++-
 lang/en.json       | 4 +++-
 lang/es.json       | 4 +++-
 lang/et.json       | 4 +++-
 lang/fr.json       | 4 +++-
 lang/hu.json       | 4 +++-
 lang/it.json       | 4 +++-
 lang/ja.json       | 4 +++-
 lang/nl.json       | 4 +++-
 lang/pl.json       | 4 +++-
 lang/pt-br.json    | 4 +++-
 lang/pt.json       | 4 +++-
 lang/ro.json       | 4 +++-
 lang/ru.json       | 4 +++-
 lang/template.json | 4 +++-
 lang/uk.json       | 4 +++-
 xmas.json          | 4 ++--
 21 files changed, 62 insertions(+), 22 deletions(-)

diff --git a/lang/ast.json b/lang/ast.json
index 716071e8b..dd6c6ce23 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "Fábriques",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/ca.json b/lang/ca.json
index c3f136dec..ac2b799cb 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/cs.json b/lang/cs.json
index f8ee143fb..a6dd03c32 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "Továrny",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/de.json b/lang/de.json
index 100cd38fe..1771e3b5c 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "Wikipedia",
     "category:works": "Fabriken",
     "category:xmas": "Weihnachten",
-    "date format not understood": "Datumsformat nicht erkannt"
+    "date format not understood": "Datumsformat nicht erkannt",
+    "outdated feature": "Informationen nicht aktuell",
+    "xmas:outdated-warning": "Objekt wurde nicht für die aktuelle Saison aktualisiert. Bitte prüfen und das Tag 'xmas:lastcheck' auf das aktuelle Datum setzen."
 }
diff --git a/lang/el.json b/lang/el.json
index f4ed8b1ba..b631c5ab5 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/en.json b/lang/en.json
index e719bc92b..a804044da 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "Wikipedia",
     "category:works": "Works",
     "category:xmas": "Christmas",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": "Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date."
 }
diff --git a/lang/es.json b/lang/es.json
index 48d6d0fdb..f5f32dce6 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/et.json b/lang/et.json
index 798a575f8..e4fed49b2 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/fr.json b/lang/fr.json
index 3c535cb2f..088e64ea5 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "Wikipédia",
     "category:works": "Zones industrielles",
     "category:xmas": "Noël",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/hu.json b/lang/hu.json
index 35b4d6019..5fd5cb9a1 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "Wikipédia",
     "category:works": "Üzemek",
     "category:xmas": "Karácsony",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/it.json b/lang/it.json
index 245647c5c..0a02801e4 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "Fabbriche",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/ja.json b/lang/ja.json
index f409ba757..478c538d6 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "工場",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/nl.json b/lang/nl.json
index c4d8ad3cf..cad77cad2 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "Fabrieken",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/pl.json b/lang/pl.json
index 174566e25..77e00eb25 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/pt-br.json b/lang/pt-br.json
index b6f1086e8..e259d2921 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "Wikipédia",
     "category:works": "Fábricas",
     "category:xmas": "Natal",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/pt.json b/lang/pt.json
index 7a6f77997..e38e6a603 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "Wikipédia",
     "category:works": "Fábricas",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/ro.json b/lang/ro.json
index a5572e43a..1ac1b5bed 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/ru.json b/lang/ru.json
index 073a42b0f..30e885e3f 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "Промышленность",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/template.json b/lang/template.json
index 29c5c658a..c7952ee43 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/uk.json b/lang/uk.json
index eb3ad0669..4e36f3f42 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -86,5 +86,7 @@
     "category:wikipedia": "",
     "category:works": "",
     "category:xmas": "",
-    "date format not understood": ""
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/xmas.json b/xmas.json
index 8da2b52c4..ed0f023a9 100644
--- a/xmas.json
+++ b/xmas.json
@@ -25,7 +25,7 @@
         "description": "{{ tagTransList(\"xmas:feature\", attribute(tags, \"xmas:feature\")) }}",
         "body": [
             "{% if not isCurrent %}",
-            "<div style='border: 1px solid red; padding: 2px; margin-bottom: 2px;'>Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date.</div>",
+            "<div style='border: 1px solid red; padding: 2px; margin-bottom: 2px;'>{{ repoTrans('xmas:outdated-warning') }}</div>",
             "{% endif %}",
             "",
             "{% if attribute(tags, 'xmas:location') %}",
@@ -88,7 +88,7 @@
         "{% endfor %}",
         "  <tr>",
         "    <td>{{ markerCircle({\"fillColor\":\"red\"})|raw }}</td>",
-        "    <td>outdated feature</td>",
+        "    <td>{{ repoTrans('outdated feature') }}</td>",
         "  </tr>",
         "</table>"
     ]

From 426f258fbc715adb44ab831f47b77d947541cb90 Mon Sep 17 00:00:00 2001
From: Igor Eliezer <IgorEliezer@users.noreply.github.com>
Date: Wed, 16 Jan 2019 01:41:51 -0200
Subject: [PATCH 106/108] Fix "works"

---
 lang/pt-br.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/pt-br.json b/lang/pt-br.json
index 7b57f8ab5..5e3a6817b 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -84,6 +84,6 @@
     "category:waste": "Lixo",
     "category:water": "Hidrografia",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Fábricas",
+    "category:works": "Produção",
     "category:xmas": "Natal"
 }

From 57600789dbfc043131aebd4d45e06b14d3bfa830 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 17 Jan 2019 11:37:15 +0100
Subject: [PATCH 107/108] pt: translate headings

---
 pt.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pt.json b/pt.json
index 9c26bf2d2..fd517b592 100644
--- a/pt.json
+++ b/pt.json
@@ -58,7 +58,7 @@
         ],
         "description": "{{ tagTrans('route', tags.route) }}",
         "body": [
-            "<h4>Stops</h4><ul>",
+            "<h4>{{ repoTrans('category:pt:stops') }}</h4><ul>",
             "{% for member in members %}",
             "{% if member.tags.highway == 'bus_stop' or member.tags.amenity == 'bus_station' or member.tags.amenity == 'ferry_terminal' or member.tags.railway == 'tram_stop' or member.tags.railway == 'halt' or member.tags.railway == 'station' or member.tags.aerialway == 'station' or member.tags.public_transport == 'stop_position' or member.role|slice(-4) == 'stop' %}",
             "<li data-object='{{ member.id }}' data-sublayer='member'><b>{% if member.tags %}{{ member.tags.name|default(trans('unknown')) }}{% else %}<i>{{ trans('loading') }}</i>{% endif %}</li>",
@@ -123,7 +123,7 @@
         ],
         "title": "{% if isStop %}{{ tags.name|default(stopName)|default(id) }}{% endif %}",
         "body": [
-            "<h4>Routes</h4>",
+            "<h4>{{ repoTrans('category:pt:routes') }}</h4>",
             "<ul class='overpass-layer-list'>",
             "{% for master in masters %}",
             "  {% if master.tags.public_transport != 'stop_area' %}",

From 11d1b0afbb2536828f4cb80ff93f6742cc1dbf92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 17 Jan 2019 13:46:51 +0100
Subject: [PATCH 108/108] residential: include type of residential when
 available

---
 residential.json | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/residential.json b/residential.json
index 9bacc7d9c..d58ed9e1b 100644
--- a/residential.json
+++ b/residential.json
@@ -35,6 +35,12 @@
         ]
     },
     "feature": {
-        "description": "{{ tagTrans('landuse', tags.landuse) }}"
+        "description": [
+            "{{ tagTrans('landuse', tags.landuse) }}",
+            "",
+            "{% if tags.residential %}",
+            "({{ tagTransList('residential', tags.residential) }})",
+            "{% endif %}"
+        ]
     }
 }