diff --git a/.gitignore b/.gitignore
index db625dcb..3c3b4d05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,3 +73,4 @@ target/
#Ipython Notebook
.ipynb_checkpoints
+local_run/data
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 843ed52b..0596ac2d 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -15,32 +15,32 @@ ENV DEBIAN_FRONTEND noninteractive
RUN --mount=type=cache,target=/var/cache/apt,id=apt_$TARGETARCH --mount=type=tmpfs,target=/var/lib/apt/lists \
rm /etc/apt/apt.conf.d/docker-clean && \
apt-get update && apt-get install -y --no-install-recommends \
- python3.12=3.12.3-1ubuntu0.5 \
+ python3.12 \
# renovate: srcname=python3.12
- libpython3.12=3.12.3-1ubuntu0.5 \
+ libpython3.12 \
# renovate: srcname=python3.12
- python3.12-venv=3.12.3-1ubuntu0.5 \
+ python3.12-venv \
# renovate: srcname=python-pip
- python3-pip=24.0+dfsg-1ubuntu1.1 \
+ python3-pip \
# renovate: srcname=postgresql-16
- libpq5=16.8-0ubuntu0.24.04.1 \
+ libpq5 \
# renovate: srcname=postgresql-16
- postgresql-client-16=16.8-0ubuntu0.24.04.1 \
- curl=8.5.0-2ubuntu10.6 \
+ postgresql-client-16 \
+ curl \
# renovate: srcname=pcre3
- libpcre3=2:8.39-15build1 \
+ libpcre3 \
# renovate: srcname=librsvg
- librsvg2-2=2.58.0+dfsg-1build1 \
+ librsvg2-2 \
# renovate: srcname=librsvg
- gir1.2-rsvg-2.0=2.58.0+dfsg-1build1 \
+ gir1.2-rsvg-2.0 \
# renovate: srcname=cairo
- libcairo2=1.18.0-3build1 \
- libgirepository-1.0-1=1.80.1-1 \
+ libcairo2 \
+ libgirepository-1.0-1 \
# renovate: srcname=libmemcached
- libmemcached11t64=1.1.4-1.1build3 \
+ libmemcached11t64 \
gettext \
- tzdata=2025b-0ubuntu0.24.04 \
- ca-certificates=20240203 \
+ tzdata-legacy \
+ ca-certificates \
# renovate: srcname=libzstd
zstd=1.5.5+dfsg2-2build1.1
ENV PATH="/usr/lib/postgresql/16/bin/:$PATH"
@@ -49,17 +49,17 @@ ENV PATH="/usr/lib/postgresql/16/bin/:$PATH"
FROM base as builder
RUN --mount=type=cache,target=/var/cache/apt,id=apt_$TARGETARCH --mount=type=tmpfs,target=/var/lib/apt/lists \
apt-get update && apt-get install -y --no-install-recommends \
- build-essential=12.10ubuntu1 \
+ build-essential \
# renovate: srcname=python3.12
- python3.12-dev=3.12.3-1ubuntu0.5 \
- libpcre3-dev=2:8.39-15build1 \
+ python3.12-dev \
+ libpcre3-dev \
# renovate: srcname=postgresql-16
- libpq-dev=16.8-0ubuntu0.24.04.1 \
+ libpq-dev \
# renovate: srcname=cairo
- libcairo2-dev=1.18.0-3build1 \
- libgirepository1.0-dev=1.80.1-1 \
+ libcairo2-dev \
+ libgirepository1.0-dev \
# renovate: srcname=libmemcached
- libmemcached-dev=1.1.4-1.1build3
+ libmemcached-dev
RUN mkdir /app
diff --git a/local_run/.env b/local_run/.env
new file mode 100644
index 00000000..c1ed8d5b
--- /dev/null
+++ b/local_run/.env
@@ -0,0 +1,6 @@
+C3NAV_TAG=latest
+C3NAV_DOMAIN=c3nav.docker.localhost
+# to change the default database name
+#C3NAV_DATABASE_NAME=c3nav-37c3
+# if you want to change the default path to the data dir, which by default is a folder called data in this directory
+C3NAV_DOCKER_DATA_DIR=./data
\ No newline at end of file
diff --git a/local_run/SENSOR_README.md b/local_run/SENSOR_README.md
new file mode 100644
index 00000000..4b5db906
--- /dev/null
+++ b/local_run/SENSOR_README.md
@@ -0,0 +1,152 @@
+# NOI Sensor Management System
+
+This system allows you to manage environmental sensors from the NOI Open Data Hub in c3nav, displaying them as overlay features on different levels/floors.
+
+## Overview
+
+The system supports:
+- Multiple sensors on the same overlay but on different levels
+- Dynamic addition of new sensors through Django management commands
+- Automatic data scraping from NOI Open Data Hub APIs
+- Real-time display of CO2, temperature, humidity and other environmental data
+
+## Architecture
+
+- **Single Overlay**: All NOI environmental sensors are managed under one `DataOverlay`
+- **Multiple Levels**: Sensors can be placed on different floors (floor0, floor1, etc.)
+- **Flexible Configuration**: Sensor locations and properties are configurable via the overlay's `sensor_config` field
+- **Dynamic Discovery**: The system can automatically discover and display any sensor data from the NOI API
+
+## Setup
+
+The main setup is handled by the `up.sh` script, which:
+
+1. Creates a single "NOI Environmental Sensors" overlay
+2. Configures initial sensors with their coordinates and levels
+3. Scrapes initial data from the NOI Open Data Hub
+4. Applies necessary database migrations
+
+## Managing Sensors
+
+### 1. List All Sensors
+```bash
+# Using the helper script
+./manage_noi_sensors.sh list
+
+# Or directly
+docker compose exec -T c3nav-core python manage.py list_sensors --overlay-id 1
+```
+
+### 2. Add a New Sensor
+```bash
+# Using the helper script
+./manage_noi_sensors.sh add 'NOI:YourSensorID' 'Sensor Display Name' 300.0 250.0 floor1
+
+# Or directly
+docker compose exec -T c3nav-core python manage.py add_sensor \
+ --overlay-id 1 \
+ --sensor-id 'NOI:YourSensorID' \
+ --name 'Sensor Display Name' \
+ --x 300.0 \
+ --y 250.0 \
+ --level floor1
+```
+
+### 3. Scrape Data for All Sensors
+```bash
+# Using the helper script
+./manage_noi_sensors.sh scrape
+
+# Or directly
+docker compose exec -T c3nav-core python manage.py manage_sensors --scrape-data --overlay-id 1
+```
+
+## Configuration Structure
+
+The overlay's `sensor_config` field contains:
+
+```json
+{
+ "data_path": "data",
+ "mappings": {
+ "id_field": "scode",
+ "name_field": "sname",
+ "x_field": "scoordinate.x",
+ "y_field": "scoordinate.y"
+ },
+ "sensors": [
+ {
+ "id": "NOI:FreeSoftwareLab-Temperature",
+ "coordinates": {"x": 291.0, "y": 241.0},
+ "level": "floor1"
+ },
+ {
+ "id": "NOI:NOI-A1-Floor1-CO2",
+ "coordinates": {"x": 270.0, "y": 241.0},
+ "level": "floor1"
+ }
+ ]
+}
+```
+
+## Database Schema
+
+### DataOverlay fields:
+- `data_source_url`: URL to scrape sensor data from
+- `sensor_config`: JSON configuration for sensor mapping and processing
+
+### DataOverlayFeature fields:
+- `sensor_id`: Unique identifier for the sensor
+- `sensor_type`: Type of sensor (e.g., 'environmental')
+- `sensor_value`: Single sensor value (nullable for multi-measurement sensors)
+- `sensor_unit`: Unit of measurement (nullable for multi-measurement sensors)
+- `coordinates_x`, `coordinates_y`: Position in c3nav coordinate system
+- `last_updated`: Timestamp of last data update
+- `sensor_data`: Raw sensor data for debugging
+- `extra_data`: Processed sensor readings for display
+
+## Data Flow
+
+1. **Configuration**: Sensors are configured in the overlay's `sensor_config`
+2. **Scraping**: The `manage_sensors` command fetches data from NOI Open Data Hub
+3. **Processing**: Data is processed according to sensor configuration
+4. **Storage**: Sensor features are created/updated in the database
+5. **Display**: Sensors appear as interactive points on the map
+
+## Adding New Sensor Types
+
+To add a new sensor from the NOI Open Data Hub:
+
+1. Find the sensor ID in the NOI API (usually starts with "NOI:")
+2. Determine the coordinates where it should appear on the map
+3. Choose the appropriate level/floor
+4. Add it using the `add_sensor` command
+5. Run the scrape command to fetch initial data
+
+## Troubleshooting
+
+### Sensor not appearing on map
+- Check if the level exists: `docker compose exec -T c3nav-core python manage.py shell -c "from c3nav.mapdata.models import Level; print([l.short_label for l in Level.objects.all()])"`
+- Verify coordinates are within the map bounds
+- Check if the overlay is enabled and visible
+
+### No data being scraped
+- Verify the sensor ID exists in the NOI Open Data Hub API
+- Check the API URL is accessible: https://mobility.api.opendatahub.com/v2/flat/IndoorStation/*/latest
+- Review logs during scraping for errors
+
+### Data not updating
+- Check the `last_updated` field in the sensor feature
+- Verify the scraping command completed successfully
+- Consider running the scrape command more frequently
+
+## Files
+
+- `up.sh`: Main setup script
+- `manage_noi_sensors.sh`: Helper script for sensor management
+- `src/c3nav/mapdata/management/commands/manage_sensors.py`: Core sensor management command
+- `src/c3nav/mapdata/management/commands/add_sensor.py`: Command to add new sensors
+- `src/c3nav/mapdata/management/commands/list_sensors.py`: Command to list sensors
+- `src/c3nav/mapdata/models/overlay.py`: Database models
+- `src/c3nav/mapdata/migrations/0140_add_temperature_fields.py`: Migration for sensor fields
+- `src/c3nav/mapdata/migrations/0141_add_sensor_data_field.py`: Migration for sensor_data field
diff --git a/local_run/compose.yml b/local_run/compose.yml
new file mode 100644
index 00000000..6af7d37d
--- /dev/null
+++ b/local_run/compose.yml
@@ -0,0 +1,109 @@
+# SPDX-FileCopyrightText: 2024 NOI Techpark
+# SPDX-FileCopyrightText: 2024 https://github.com/c3nav/c3nav
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# Initially Copied from https://github.com/c3nav/c3nav/blob/034f8fe4633be3a982e94fd9e2f1fbc6d3dfafe1/deployment/docker/compose.yaml
+
+x-restart-policy: &restart-policy
+ restart: unless-stopped
+x-depends_on-default: &depends_on
+ condition: service_started
+x-depends_on-healthy: &depends_on-healthy
+ condition: service_healthy
+x-healthcheck_defaults: &healthcheck_defaults
+ interval: 10s
+ timeout: 2s
+ retries: 5
+ start_period: 10s
+x-c3nav-defaults: &c3nav-defaults
+ build:
+ context: ..
+ dockerfile: docker/Dockerfile
+ args:
+ - COMMIT=${COMMIT}
+ depends_on:
+ redis:
+ <<: *depends_on-healthy
+ postgres:
+ <<: *depends_on-healthy
+ volumes:
+ - type: bind
+ source: ${C3NAV_DOCKER_DATA_DIR:-./data}
+ target: /data
+ bind:
+ create_host_path: true
+x-c3nav-environment: &c3nav-environment
+ C3NAV_DEBUG: false
+ C3NAV_LOGLEVEL: info
+ C3NAV_CONFIG: /data/c3nav.cfg
+ C3NAV_DATA_DIR: /data
+ C3NAV_DJANGO_ALLOWED_HOSTS: localhost,127.0.0.1,c3nav-core,c3nav-tiles,${C3NAV_DJANGO_ALLOWED_HOSTS:-""},${C3NAV_DOMAIN}
+ C3NAV_DJANGO_REVERSE_PROXY: "true"
+ UWSGI_WORKERS: ${C3NAV_CORE_WORKERS:-2}
+ C3NAV_DATABASE_BACKEND: postgresql
+ C3NAV_DATABASE_NAME: ${C3NAV_DATABASE_NAME:-c3nav}
+ C3NAV_DATABASE_USER: ${C3NAV_DATABASE_USER:-postgres}
+ C3NAV_DATABASE_HOST: postgres
+ C3NAV_REDIS: "redis://redis:6379/0"
+ C3NAV_CELERY_BROKER: "redis://redis:6379/1"
+ C3NAV_CELERY_BACKEND: "redis://redis:6379/2"
+
+
+services:
+ c3nav-core:
+ <<: [*restart-policy, *c3nav-defaults]
+ command: webstatic
+ environment:
+ <<: *c3nav-environment
+ C3NAV_AUTOMIGRATE: yes
+ healthcheck:
+ <<: *healthcheck_defaults
+ test: curl -f http://localhost:8000/
+ ports:
+ - "${SERVER_PORT:-8000}:8000"
+
+ c3nav-workers:
+ <<: [*restart-policy, *c3nav-defaults]
+ command: worker
+ environment:
+ <<: *c3nav-environment
+ C3NAV_AUTOMIGRATE: no
+ healthcheck:
+ interval: 30s
+ timeout: 15s
+ retries: 2
+ start_period: 5s
+ test: entrypoint worker_healthcheck
+
+ postgres:
+ <<: *restart-policy
+ image: postgres:16
+ healthcheck:
+ <<: *healthcheck_defaults
+ test: pg_isready -U postgres && psql -U postgres -d ${C3NAV_DATABASE_NAME:-c3nav} -c "SELECT 1;"
+ environment:
+ POSTGRES_DB: ${C3NAV_DATABASE_NAME:-c3nav}
+ POSTGRES_HOST_AUTH_METHOD: "trust"
+ volumes:
+ - "c3nav-postgres:/var/lib/postgresql/data"
+
+ redis:
+ <<: *restart-policy
+ image: redis:7.2
+ command: redis-server --save 60 1 --loglevel warning
+ healthcheck:
+ <<: *healthcheck_defaults
+ test: redis-cli ping
+ volumes:
+ - "c3nav-redis:/data"
+ ulimits:
+ nofile:
+ soft: 10032
+ hard: 10032
+
+volumes:
+ c3nav-postgres:
+ external: true
+ c3nav-redis:
+ external: true
diff --git a/local_run/data-copy/c3nav.cfg b/local_run/data-copy/c3nav.cfg
new file mode 100644
index 00000000..db3e8c76
--- /dev/null
+++ b/local_run/data-copy/c3nav.cfg
@@ -0,0 +1,44 @@
+# SPDX-FileCopyrightText: 2024 NOI Techpark
+#
+# SPDX-License-Identifier: CC0-1.0
+
+[c3nav]
+svg_renderer=rsvg
+editor=False
+user_registration=false
+initial_level=2
+header_logo=/data/logo/sfscon.svg
+imprint_link=https://www.sfscon.it/impressum/
+branding=SFSCON map
+app_enabled=False
+
+[locale]
+languages=en
+
+[theme]
+#is_dark=False
+#randomize_primary_color=False
+map_background=#f7f8f8
+map_wall_fill=#e5e4e5
+map_wall_border=#c1bfbe
+#map_door_fill=#ffffff
+map_ground_fill=#f7f8f8
+#map_obstacles_default_fill=#b7b7b7
+#map_obstacles_default_border=#888888
+#css_primary=#9b4dca
+#css_initial=#ffffff
+#css_primary=#9b4dca
+#css_logo=None
+#css_secondary=#525862
+#css_tertiary=#f0f0f0
+#css_quaternary=#767676
+#css_quinary=#cccccc
+css_header_text=#000000
+#css_header_text_hover=#eeeeee
+css_header_background=#ffffff
+#css_shadow=#000000
+#css_overlay_background=#ffffff
+#css_grid=#000000
+#css_modal_backdrop=#000000
+#css_route_dots_shadow=#ffffff
+#map_background=#dcdcdc
diff --git a/local_run/data-copy/logo/sfscon.svg b/local_run/data-copy/logo/sfscon.svg
new file mode 100644
index 00000000..8480f30c
--- /dev/null
+++ b/local_run/data-copy/logo/sfscon.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/local_run/db/auth_user.sql b/local_run/db/auth_user.sql
new file mode 100644
index 00000000..13e4d770
--- /dev/null
+++ b/local_run/db/auth_user.sql
@@ -0,0 +1,85 @@
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 17.5 (Debian 17.5-1.pgdg120+1)
+-- Dumped by pg_dump version 17.5
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET idle_in_transaction_session_timeout = 0;
+SET transaction_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SELECT pg_catalog.set_config('search_path', '', false);
+SET check_function_bodies = false;
+SET xmloption = content;
+SET client_min_messages = warning;
+SET row_security = off;
+
+SET default_tablespace = '';
+
+SET default_table_access_method = heap;
+
+--
+-- Name: auth_user; Type: TABLE; Schema: public; Owner: mindshub
+--
+
+CREATE TABLE public.auth_user (
+ id integer NOT NULL,
+ password character varying(128) NOT NULL,
+ last_login timestamp with time zone,
+ is_superuser boolean NOT NULL,
+ username character varying(150) NOT NULL,
+ first_name character varying(150) NOT NULL,
+ last_name character varying(150) NOT NULL,
+ email character varying(254) NOT NULL,
+ is_staff boolean NOT NULL,
+ is_active boolean NOT NULL,
+ date_joined timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE public.auth_user OWNER TO mindshub;
+
+--
+-- Name: auth_user_id_seq; Type: SEQUENCE; Schema: public; Owner: mindshub
+--
+
+ALTER TABLE public.auth_user ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_user_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_user auth_user_pkey; Type: CONSTRAINT; Schema: public; Owner: mindshub
+--
+
+ALTER TABLE ONLY public.auth_user
+ ADD CONSTRAINT auth_user_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user auth_user_username_key; Type: CONSTRAINT; Schema: public; Owner: mindshub
+--
+
+ALTER TABLE ONLY public.auth_user
+ ADD CONSTRAINT auth_user_username_key UNIQUE (username);
+
+
+--
+-- Name: auth_user_username_6821ab7c_like; Type: INDEX; Schema: public; Owner: mindshub
+--
+
+CREATE INDEX auth_user_username_6821ab7c_like ON public.auth_user USING btree (username varchar_pattern_ops);
+
+
+--
+-- PostgreSQL database dump complete
+--
+
diff --git a/local_run/db/dump.sh b/local_run/db/dump.sh
new file mode 100644
index 00000000..55165cea
--- /dev/null
+++ b/local_run/db/dump.sh
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2024 NOI Techpark
+#
+# SPDX-License-Identifier: CC0-1.0
+
+#/bin/bash
+docker exec -i c3nav-postgres-1 su - postgres -c 'pg_dump --clean --if-exists --no-owner --exclude-table=public.auth_user c3nav' > dump.sql
\ No newline at end of file
diff --git a/local_run/db/dump.sql b/local_run/db/dump.sql
new file mode 100644
index 00000000..b7c71790
--- /dev/null
+++ b/local_run/db/dump.sql
@@ -0,0 +1,10780 @@
+-- SPDX-FileCopyrightText: 2024 NOI Techpark
+--
+-- SPDX-License-Identifier: CC0-1.0
+
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 15.6
+-- Dumped by pg_dump version 15.6
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET idle_in_transaction_session_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SELECT pg_catalog.set_config('search_path', '', false);
+SET check_function_bodies = false;
+SET xmloption = content;
+SET client_min_messages = warning;
+SET row_security = off;
+
+ALTER TABLE IF EXISTS ONLY public.site_announcement DROP CONSTRAINT IF EXISTS site_announcement_author_id_136858c5_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mesh_otaupdaterecipient DROP CONSTRAINT IF EXISTS mesh_otaupdaterecipient_update_id_95637e8a_fk_mesh_otaupdate_id;
+ALTER TABLE IF EXISTS ONLY public.mesh_otaupdaterecipient DROP CONSTRAINT IF EXISTS mesh_otaupdaterecipi_node_id_0fd5e307_fk_mesh_mesh;
+ALTER TABLE IF EXISTS ONLY public.mesh_otaupdate DROP CONSTRAINT IF EXISTS mesh_otaupdate_build_id_af114c77_fk_mesh_firmwarebuild_id;
+ALTER TABLE IF EXISTS ONLY public.mesh_nodemessage DROP CONSTRAINT IF EXISTS mesh_nodemessage_uplink_id_22f38887_fk_mesh_meshuplink_id;
+ALTER TABLE IF EXISTS ONLY public.mesh_nodemessage DROP CONSTRAINT IF EXISTS mesh_nodemessage_src_node_id_2754ac40_fk_mesh_meshnode_address;
+ALTER TABLE IF EXISTS ONLY public.mesh_meshuplink DROP CONSTRAINT IF EXISTS mesh_meshuplink_node_id_e0c94b45_fk_mesh_meshnode_address;
+ALTER TABLE IF EXISTS ONLY public.mesh_meshnode DROP CONSTRAINT IF EXISTS mesh_meshnode_upstream_id_c946622a_fk_mesh_meshnode_address;
+ALTER TABLE IF EXISTS ONLY public.mesh_meshnode DROP CONSTRAINT IF EXISTS mesh_meshnode_uplink_id_cf6b04db_fk_mesh_meshuplink_id;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwareversion DROP CONSTRAINT IF EXISTS mesh_firmwareversion_uploader_id_30c14fe3_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwarebuildboard DROP CONSTRAINT IF EXISTS mesh_firmwarebuildbo_build_id_902517a9_fk_mesh_firm;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwarebuild DROP CONSTRAINT IF EXISTS mesh_firmwarebuild_version_id_93e4b318_fk_mesh_firm;
+ALTER TABLE IF EXISTS ONLY public.mapdata_beaconmeasurement DROP CONSTRAINT IF EXISTS mapdata_wifimeasurement_author_id_e4b5352e_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_beaconmeasurement DROP CONSTRAINT IF EXISTS mapdata_wifimeasurem_space_id_1d127e47_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_themeobstaclegroupbackgroundcolor DROP CONSTRAINT IF EXISTS mapdata_themeobstacl_theme_id_629c5bc7_fk_mapdata_t;
+ALTER TABLE IF EXISTS ONLY public.mapdata_themeobstaclegroupbackgroundcolor DROP CONSTRAINT IF EXISTS mapdata_themeobstacl_obstacle_group_id_6a51b028_fk_mapdata_o;
+ALTER TABLE IF EXISTS ONLY public.mapdata_themelocationgroupbackgroundcolor DROP CONSTRAINT IF EXISTS mapdata_themelocatio_theme_id_9baff4da_fk_mapdata_t;
+ALTER TABLE IF EXISTS ONLY public.mapdata_themelocationgroupbackgroundcolor DROP CONSTRAINT IF EXISTS mapdata_themelocatio_location_group_id_2b664e23_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_stair DROP CONSTRAINT IF EXISTS mapdata_stair_space_id_6dd3ccb0_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space DROP CONSTRAINT IF EXISTS mapdata_space_locationslug_ptr_id_228ac56f_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space DROP CONSTRAINT IF EXISTS mapdata_space_level_id_b635bbeb_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space DROP CONSTRAINT IF EXISTS mapdata_space_label_settings_id_b26b4945_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space_groups DROP CONSTRAINT IF EXISTS mapdata_space_groups_space_id_d9bb3827_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space_groups DROP CONSTRAINT IF EXISTS mapdata_space_groups_locationgroup_id_352f0e89_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space DROP CONSTRAINT IF EXISTS mapdata_space_access_restriction_i_c295dd70_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_source DROP CONSTRAINT IF EXISTS mapdata_source_access_restriction_i_10e0a307_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_reportupdate DROP CONSTRAINT IF EXISTS mapdata_reportupdate_report_id_ac2b4e37_fk_mapdata_report_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_reportupdate DROP CONSTRAINT IF EXISTS mapdata_reportupdate_author_id_b0e6e04b_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_reportupdate DROP CONSTRAINT IF EXISTS mapdata_reportupdate_assigned_to_id_7af867b4_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_report DROP CONSTRAINT IF EXISTS mapdata_report_location_id_a1b9eef3_fk_mapdata_locationslug_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_report_created_groups DROP CONSTRAINT IF EXISTS mapdata_report_creat_report_id_e8da1176_fk_mapdata_r;
+ALTER TABLE IF EXISTS ONLY public.mapdata_report_created_groups DROP CONSTRAINT IF EXISTS mapdata_report_creat_locationgroup_id_07a66aea_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_report DROP CONSTRAINT IF EXISTS mapdata_report_author_id_1dd5fc14_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_report DROP CONSTRAINT IF EXISTS mapdata_report_assigned_to_id_fd3a8aab_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_rangingbeacon DROP CONSTRAINT IF EXISTS mapdata_rangingbeaco_space_id_2c6b1efe_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_ramp DROP CONSTRAINT IF EXISTS mapdata_ramp_space_id_e6f57e61_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_position DROP CONSTRAINT IF EXISTS mapdata_position_owner_id_8ad6b67c_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi DROP CONSTRAINT IF EXISTS mapdata_poi_space_id_dcb9f571_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi DROP CONSTRAINT IF EXISTS mapdata_poi_locationslug_ptr_id_22498ca8_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi DROP CONSTRAINT IF EXISTS mapdata_poi_label_settings_id_18a6c1cf_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi_groups DROP CONSTRAINT IF EXISTS mapdata_poi_groups_poi_id_a7128a8c_fk_mapdata_p;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi_groups DROP CONSTRAINT IF EXISTS mapdata_poi_groups_locationgroup_id_46758a1e_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi DROP CONSTRAINT IF EXISTS mapdata_poi_access_restriction_i_a6d0faf9_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_obstacle DROP CONSTRAINT IF EXISTS mapdata_obstacle_space_id_0aa1260c_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_obstacle DROP CONSTRAINT IF EXISTS mapdata_obstacle_group_id_a59d9b9b_fk_mapdata_obstaclegroup_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationredirect DROP CONSTRAINT IF EXISTS mapdata_locationredi_target_id_29d1b3d7_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationredirect DROP CONSTRAINT IF EXISTS mapdata_locationredi_locationslug_ptr_id_81cda0c9_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationgroup DROP CONSTRAINT IF EXISTS mapdata_locationgrou_locationslug_ptr_id_5f0e4ebb_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationgroup DROP CONSTRAINT IF EXISTS mapdata_locationgrou_label_settings_id_bc60e3cf_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationgroup DROP CONSTRAINT IF EXISTS mapdata_locationgrou_category_id_96775229_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationgroup DROP CONSTRAINT IF EXISTS mapdata_locationgrou_access_restriction_i_0f7d4828_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_lineobstacle DROP CONSTRAINT IF EXISTS mapdata_lineobstacle_space_id_b9ab6bf6_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_lineobstacle DROP CONSTRAINT IF EXISTS mapdata_lineobstacle_group_id_62d35458_fk_mapdata_o;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level DROP CONSTRAINT IF EXISTS mapdata_level_on_top_of_id_10a0cb32_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level DROP CONSTRAINT IF EXISTS mapdata_level_locationslug_ptr_id_ba5858ed_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level DROP CONSTRAINT IF EXISTS mapdata_level_label_settings_id_6617bb7b_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level_groups DROP CONSTRAINT IF EXISTS mapdata_level_groups_locationgroup_id_b712e10d_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level_groups DROP CONSTRAINT IF EXISTS mapdata_level_groups_level_id_e60fa7db_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level DROP CONSTRAINT IF EXISTS mapdata_level_access_restriction_i_22d67a77_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_leavedescription DROP CONSTRAINT IF EXISTS mapdata_leavedescrip_target_space_id_31053028_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_leavedescription DROP CONSTRAINT IF EXISTS mapdata_leavedescrip_space_id_33695534_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_hole DROP CONSTRAINT IF EXISTS mapdata_hole_space_id_20336b94_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_graphnode DROP CONSTRAINT IF EXISTS mapdata_graphnode_space_id_6c55bd00_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_graphedge DROP CONSTRAINT IF EXISTS mapdata_graphedge_waytype_id_2f0d449d_fk_mapdata_waytype_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_graphedge DROP CONSTRAINT IF EXISTS mapdata_graphedge_to_node_id_ba97ebb9_fk_mapdata_graphnode_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_graphedge DROP CONSTRAINT IF EXISTS mapdata_graphedge_from_node_id_98a76645_fk_mapdata_graphnode_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_graphedge DROP CONSTRAINT IF EXISTS mapdata_graphedge_access_restriction_i_cccddf9b_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_dynamiclocation DROP CONSTRAINT IF EXISTS mapdata_dynamiclocat_locationslug_ptr_id_d18ebf9f_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_dynamiclocation_groups DROP CONSTRAINT IF EXISTS mapdata_dynamiclocat_locationgroup_id_3212157f_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_dynamiclocation DROP CONSTRAINT IF EXISTS mapdata_dynamiclocat_label_settings_id_3ae9d026_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_dynamiclocation_groups DROP CONSTRAINT IF EXISTS mapdata_dynamiclocat_dynamiclocation_id_e7af76aa_fk_mapdata_d;
+ALTER TABLE IF EXISTS ONLY public.mapdata_dynamiclocation DROP CONSTRAINT IF EXISTS mapdata_dynamiclocat_access_restriction_i_aadb0fd6_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_door DROP CONSTRAINT IF EXISTS mapdata_door_level_id_f6d894b2_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_door DROP CONSTRAINT IF EXISTS mapdata_door_access_restriction_i_2bfd4081_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_crossdescription DROP CONSTRAINT IF EXISTS mapdata_crossdescrip_target_space_id_8f82991b_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_crossdescription DROP CONSTRAINT IF EXISTS mapdata_crossdescrip_space_id_5b117c2d_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_crossdescription DROP CONSTRAINT IF EXISTS mapdata_crossdescrip_origin_space_id_88f8ef46_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_column DROP CONSTRAINT IF EXISTS mapdata_column_space_id_4f64c0d4_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_column DROP CONSTRAINT IF EXISTS mapdata_column_access_restriction_i_e09dd08f_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_building DROP CONSTRAINT IF EXISTS mapdata_building_level_id_0e322f7a_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area DROP CONSTRAINT IF EXISTS mapdata_area_space_id_c0461a4c_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area DROP CONSTRAINT IF EXISTS mapdata_area_locationslug_ptr_id_41901eb8_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area DROP CONSTRAINT IF EXISTS mapdata_area_label_settings_id_7ccf6168_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area_groups DROP CONSTRAINT IF EXISTS mapdata_area_groups_locationgroup_id_8cc32166_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area_groups DROP CONSTRAINT IF EXISTS mapdata_area_groups_area_id_68ea7b48_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area DROP CONSTRAINT IF EXISTS mapdata_area_access_restriction_i_a549eda1_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_altitudemarker DROP CONSTRAINT IF EXISTS mapdata_altitudemark_space_id_cea7cf47_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.mapdata_altitudemarker DROP CONSTRAINT IF EXISTS mapdata_altitudemark_groundaltitude_id_13c52aa1_fk_mapdata_g;
+ALTER TABLE IF EXISTS ONLY public.mapdata_altitudearea DROP CONSTRAINT IF EXISTS mapdata_altitudearea_level_id_b1320e34_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accessrestriction_groups DROP CONSTRAINT IF EXISTS mapdata_accessrestri_accessrestrictiongro_fcb1eea5_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accessrestriction_groups DROP CONSTRAINT IF EXISTS mapdata_accessrestri_accessrestriction_id_c6318580_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermission DROP CONSTRAINT IF EXISTS mapdata_accesspermission_user_id_0160fe04_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermission DROP CONSTRAINT IF EXISTS mapdata_accesspermission_author_id_f42ef447_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermission DROP CONSTRAINT IF EXISTS mapdata_accesspermis_token_id_e3647d7b_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermission DROP CONSTRAINT IF EXISTS mapdata_accesspermis_sso_grant_id_425b2515_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermissiontoken DROP CONSTRAINT IF EXISTS mapdata_accesspermis_author_id_4ae5d792_fk_auth_user;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermissionssogrant DROP CONSTRAINT IF EXISTS mapdata_accesspermis_access_restriction_i_d94eb926_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermission DROP CONSTRAINT IF EXISTS mapdata_accesspermis_access_restriction_i_6cf436d8_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermissionssogrant DROP CONSTRAINT IF EXISTS mapdata_accesspermis_access_restriction_g_960b8494_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermission DROP CONSTRAINT IF EXISTS mapdata_accesspermis_access_restriction_g_194c451d_fk_mapdata_a;
+ALTER TABLE IF EXISTS ONLY public.editor_changesetupdate DROP CONSTRAINT IF EXISTS editor_changesetupdate_user_id_cd2202c2_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.editor_changesetupdate DROP CONSTRAINT IF EXISTS editor_changesetupdate_assigned_to_id_373deb2a_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.editor_changesetupdate DROP CONSTRAINT IF EXISTS editor_changesetupda_changeset_id_aedbc5fb_fk_editor_ch;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_map_update_id_aaecae3b_fk_mapdata_mapupdate_id;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_last_update_id_e0d77297_fk_editor_ch;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_last_state_update_id_292a8530_fk_editor_ch;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_last_cleaned_with_id_d5214743_fk_mapdata_m;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_last_change_id_5be51ccf_fk_editor_ch;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_author_id_f4bf3c7f_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_assigned_to_id_3afcfbb7_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.editor_changedobject DROP CONSTRAINT IF EXISTS editor_changedobject_content_type_id_aa981231_fk_django_co;
+ALTER TABLE IF EXISTS ONLY public.editor_changedobject DROP CONSTRAINT IF EXISTS editor_changedobject_changeset_id_0692bc40_fk_editor_ch;
+ALTER TABLE IF EXISTS ONLY public.django_admin_log DROP CONSTRAINT IF EXISTS django_admin_log_user_id_c564eba6_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.django_admin_log DROP CONSTRAINT IF EXISTS django_admin_log_content_type_id_c4bce8eb_fk_django_co;
+ALTER TABLE IF EXISTS ONLY public.control_userspaceaccess DROP CONSTRAINT IF EXISTS control_userspaceaccess_user_id_4ad6da16_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.control_userspaceaccess DROP CONSTRAINT IF EXISTS control_userspaceacc_space_id_c22914b2_fk_mapdata_s;
+ALTER TABLE IF EXISTS ONLY public.control_userpermissions DROP CONSTRAINT IF EXISTS control_userpermissions_user_id_6003ff4e_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.control_userpermissions_review_group_reports DROP CONSTRAINT IF EXISTS control_userpermissi_userpermissions_id_3d2fb35b_fk_control_u;
+ALTER TABLE IF EXISTS ONLY public.control_userpermissions_review_group_reports DROP CONSTRAINT IF EXISTS control_userpermissi_locationgroup_id_96a3102b_fk_mapdata_l;
+ALTER TABLE IF EXISTS ONLY public.auth_user_user_permissions DROP CONSTRAINT IF EXISTS auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.auth_user_user_permissions DROP CONSTRAINT IF EXISTS auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm;
+ALTER TABLE IF EXISTS ONLY public.auth_user_groups DROP CONSTRAINT IF EXISTS auth_user_groups_user_id_6a12ed8b_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.auth_user_groups DROP CONSTRAINT IF EXISTS auth_user_groups_group_id_97559544_fk_auth_group_id;
+ALTER TABLE IF EXISTS ONLY public.auth_permission DROP CONSTRAINT IF EXISTS auth_permission_content_type_id_2f476e4b_fk_django_co;
+ALTER TABLE IF EXISTS ONLY public.auth_group_permissions DROP CONSTRAINT IF EXISTS auth_group_permissions_group_id_b120cbf9_fk_auth_group_id;
+ALTER TABLE IF EXISTS ONLY public.auth_group_permissions DROP CONSTRAINT IF EXISTS auth_group_permissio_permission_id_84c5c92e_fk_auth_perm;
+ALTER TABLE IF EXISTS ONLY public.api_logintoken DROP CONSTRAINT IF EXISTS api_token_user_id_b646d2e7_fk_auth_user_id;
+ALTER TABLE IF EXISTS ONLY public.api_secret DROP CONSTRAINT IF EXISTS api_secret_user_id_74e5b7a6_fk_auth_user_id;
+DROP INDEX IF EXISTS public.site_announcement_author_id_136858c5;
+DROP INDEX IF EXISTS public.only_one_active_uplink;
+DROP INDEX IF EXISTS public.only_one_active_ota;
+DROP INDEX IF EXISTS public.mesh_otaupdaterecipient_update_id_95637e8a;
+DROP INDEX IF EXISTS public.mesh_otaupdaterecipient_node_id_0fd5e307_like;
+DROP INDEX IF EXISTS public.mesh_otaupdaterecipient_node_id_0fd5e307;
+DROP INDEX IF EXISTS public.mesh_otaupdate_build_id_af114c77;
+DROP INDEX IF EXISTS public.mesh_nodemessage_uplink_id_22f38887;
+DROP INDEX IF EXISTS public.mesh_nodemessage_src_node_id_2754ac40_like;
+DROP INDEX IF EXISTS public.mesh_nodemessage_src_node_id_2754ac40;
+DROP INDEX IF EXISTS public.mesh_nodemessage_message_type_17e37336_like;
+DROP INDEX IF EXISTS public.mesh_nodemessage_message_type_17e37336;
+DROP INDEX IF EXISTS public.mesh_nodemessage_datetime_5b8e7dce;
+DROP INDEX IF EXISTS public.mesh_meshuplink_node_id_e0c94b45_like;
+DROP INDEX IF EXISTS public.mesh_meshuplink_node_id_e0c94b45;
+DROP INDEX IF EXISTS public.mesh_meshnode_upstream_id_c946622a_like;
+DROP INDEX IF EXISTS public.mesh_meshnode_upstream_id_c946622a;
+DROP INDEX IF EXISTS public.mesh_meshnode_uplink_id_cf6b04db;
+DROP INDEX IF EXISTS public.mesh_meshnode_address_bbb2a884_like;
+DROP INDEX IF EXISTS public.mesh_firmwareversion_version_5d057b34_like;
+DROP INDEX IF EXISTS public.mesh_firmwareversion_uploader_id_30c14fe3;
+DROP INDEX IF EXISTS public.mesh_firmwarebuildboard_build_id_902517a9;
+DROP INDEX IF EXISTS public.mesh_firmwarebuildboard_board_711484ba_like;
+DROP INDEX IF EXISTS public.mesh_firmwarebuildboard_board_711484ba;
+DROP INDEX IF EXISTS public.mesh_firmwarebuild_version_id_93e4b318;
+DROP INDEX IF EXISTS public.mesh_firmwarebuild_sha256_hash_627d7144_like;
+DROP INDEX IF EXISTS public.mesh_firmwarebuild_chip_f56e2ddf;
+DROP INDEX IF EXISTS public.mapdata_wifimeasurement_space_id_1d127e47;
+DROP INDEX IF EXISTS public.mapdata_wifimeasurement_author_id_e4b5352e;
+DROP INDEX IF EXISTS public.mapdata_themeobstaclegroupbackgroundcolor_theme_id_629c5bc7;
+DROP INDEX IF EXISTS public.mapdata_themeobstaclegroup_obstacle_group_id_6a51b028;
+DROP INDEX IF EXISTS public.mapdata_themelocationgroupbackgroundcolor_theme_id_9baff4da;
+DROP INDEX IF EXISTS public.mapdata_themelocationgroup_location_group_id_2b664e23;
+DROP INDEX IF EXISTS public.mapdata_stair_space_id_6dd3ccb0;
+DROP INDEX IF EXISTS public.mapdata_space_level_id_b635bbeb;
+DROP INDEX IF EXISTS public.mapdata_space_label_settings_id_b26b4945;
+DROP INDEX IF EXISTS public.mapdata_space_groups_space_id_d9bb3827;
+DROP INDEX IF EXISTS public.mapdata_space_groups_locationgroup_id_352f0e89;
+DROP INDEX IF EXISTS public.mapdata_space_access_restriction_id_c295dd70;
+DROP INDEX IF EXISTS public.mapdata_source_name_626b3547_like;
+DROP INDEX IF EXISTS public.mapdata_source_access_restriction_id_10e0a307;
+DROP INDEX IF EXISTS public.mapdata_reportupdate_report_id_ac2b4e37;
+DROP INDEX IF EXISTS public.mapdata_reportupdate_author_id_b0e6e04b;
+DROP INDEX IF EXISTS public.mapdata_reportupdate_assigned_to_id_7af867b4;
+DROP INDEX IF EXISTS public.mapdata_report_location_id_a1b9eef3;
+DROP INDEX IF EXISTS public.mapdata_report_created_groups_report_id_e8da1176;
+DROP INDEX IF EXISTS public.mapdata_report_created_groups_locationgroup_id_07a66aea;
+DROP INDEX IF EXISTS public.mapdata_report_category_b3157148_like;
+DROP INDEX IF EXISTS public.mapdata_report_category_b3157148;
+DROP INDEX IF EXISTS public.mapdata_report_author_id_1dd5fc14;
+DROP INDEX IF EXISTS public.mapdata_report_assigned_to_id_fd3a8aab;
+DROP INDEX IF EXISTS public.mapdata_rangingbeacon_uwb_address_9d8771d7_like;
+DROP INDEX IF EXISTS public.mapdata_rangingbeacon_space_id_2c6b1efe;
+DROP INDEX IF EXISTS public.mapdata_rangingbeacon_bssid_e2cf3255_like;
+DROP INDEX IF EXISTS public.mapdata_rangingbeacon_bluetooth_address_20e06b93_like;
+DROP INDEX IF EXISTS public.mapdata_ramp_space_id_e6f57e61;
+DROP INDEX IF EXISTS public.mapdata_position_secret_fef1b916_like;
+DROP INDEX IF EXISTS public.mapdata_position_owner_id_8ad6b67c;
+DROP INDEX IF EXISTS public.mapdata_poi_space_id_dcb9f571;
+DROP INDEX IF EXISTS public.mapdata_poi_label_settings_id_18a6c1cf;
+DROP INDEX IF EXISTS public.mapdata_poi_groups_poi_id_a7128a8c;
+DROP INDEX IF EXISTS public.mapdata_poi_groups_locationgroup_id_46758a1e;
+DROP INDEX IF EXISTS public.mapdata_poi_access_restriction_id_a6d0faf9;
+DROP INDEX IF EXISTS public.mapdata_obstacle_space_id_0aa1260c;
+DROP INDEX IF EXISTS public.mapdata_obstacle_group_id_a59d9b9b;
+DROP INDEX IF EXISTS public.mapdata_mapupdate_user_id_faec6f5a;
+DROP INDEX IF EXISTS public.mapdata_mapupdate_datetime_750ec913;
+DROP INDEX IF EXISTS public.mapdata_locationslug_slug_1c195013_like;
+DROP INDEX IF EXISTS public.mapdata_locationredirect_target_id_29d1b3d7;
+DROP INDEX IF EXISTS public.mapdata_locationgroupcategory_priority_a21c67cd;
+DROP INDEX IF EXISTS public.mapdata_locationgroupcategory_name_5b0451cf_like;
+DROP INDEX IF EXISTS public.mapdata_locationgroupcategory_allow_spaces_1085c8dd;
+DROP INDEX IF EXISTS public.mapdata_locationgroupcategory_allow_pois_4efc5134;
+DROP INDEX IF EXISTS public.mapdata_locationgroupcategory_allow_levels_fcf0f4ee;
+DROP INDEX IF EXISTS public.mapdata_locationgroupcategory_allow_dynamic_locations_ced914d1;
+DROP INDEX IF EXISTS public.mapdata_locationgroupcategory_allow_areas_68afeb0a;
+DROP INDEX IF EXISTS public.mapdata_locationgroup_priority_44e13f62;
+DROP INDEX IF EXISTS public.mapdata_locationgroup_label_settings_id_bc60e3cf;
+DROP INDEX IF EXISTS public.mapdata_locationgroup_hub_import_type_4926843d_like;
+DROP INDEX IF EXISTS public.mapdata_locationgroup_hierarchy_accf714c;
+DROP INDEX IF EXISTS public.mapdata_locationgroup_category_id_96775229;
+DROP INDEX IF EXISTS public.mapdata_locationgroup_access_restriction_id_0f7d4828;
+DROP INDEX IF EXISTS public.mapdata_lineobstacle_space_id_b9ab6bf6;
+DROP INDEX IF EXISTS public.mapdata_lineobstacle_group_id_62d35458;
+DROP INDEX IF EXISTS public.mapdata_level_short_label_4b45d051_like;
+DROP INDEX IF EXISTS public.mapdata_level_on_top_of_id_10a0cb32;
+DROP INDEX IF EXISTS public.mapdata_level_label_settings_id_6617bb7b;
+DROP INDEX IF EXISTS public.mapdata_level_groups_locationgroup_id_b712e10d;
+DROP INDEX IF EXISTS public.mapdata_level_groups_level_id_e60fa7db;
+DROP INDEX IF EXISTS public.mapdata_level_access_restriction_id_22d67a77;
+DROP INDEX IF EXISTS public.mapdata_leavedescription_target_space_id_31053028;
+DROP INDEX IF EXISTS public.mapdata_leavedescription_space_id_33695534;
+DROP INDEX IF EXISTS public.mapdata_hole_space_id_20336b94;
+DROP INDEX IF EXISTS public.mapdata_groundaltitude_name_cf324830_like;
+DROP INDEX IF EXISTS public.mapdata_graphnode_space_id_6c55bd00;
+DROP INDEX IF EXISTS public.mapdata_graphedge_waytype_id_2f0d449d;
+DROP INDEX IF EXISTS public.mapdata_graphedge_to_node_id_ba97ebb9;
+DROP INDEX IF EXISTS public.mapdata_graphedge_from_node_id_98a76645;
+DROP INDEX IF EXISTS public.mapdata_graphedge_access_restriction_id_cccddf9b;
+DROP INDEX IF EXISTS public.mapdata_dynamiclocation_label_settings_id_3ae9d026;
+DROP INDEX IF EXISTS public.mapdata_dynamiclocation_groups_locationgroup_id_3212157f;
+DROP INDEX IF EXISTS public.mapdata_dynamiclocation_groups_dynamiclocation_id_e7af76aa;
+DROP INDEX IF EXISTS public.mapdata_dynamiclocation_access_restriction_id_aadb0fd6;
+DROP INDEX IF EXISTS public.mapdata_door_level_id_f6d894b2;
+DROP INDEX IF EXISTS public.mapdata_door_access_restriction_id_2bfd4081;
+DROP INDEX IF EXISTS public.mapdata_crossdescription_target_space_id_8f82991b;
+DROP INDEX IF EXISTS public.mapdata_crossdescription_space_id_5b117c2d;
+DROP INDEX IF EXISTS public.mapdata_crossdescription_origin_space_id_88f8ef46;
+DROP INDEX IF EXISTS public.mapdata_column_space_id_4f64c0d4;
+DROP INDEX IF EXISTS public.mapdata_column_access_restriction_id_e09dd08f;
+DROP INDEX IF EXISTS public.mapdata_building_level_id_0e322f7a;
+DROP INDEX IF EXISTS public.mapdata_area_space_id_c0461a4c;
+DROP INDEX IF EXISTS public.mapdata_area_label_settings_id_7ccf6168;
+DROP INDEX IF EXISTS public.mapdata_area_groups_locationgroup_id_8cc32166;
+DROP INDEX IF EXISTS public.mapdata_area_groups_area_id_68ea7b48;
+DROP INDEX IF EXISTS public.mapdata_area_access_restriction_id_a549eda1;
+DROP INDEX IF EXISTS public.mapdata_altitudemarker_space_id_cea7cf47;
+DROP INDEX IF EXISTS public.mapdata_altitudemarker_groundaltitude_id_13c52aa1;
+DROP INDEX IF EXISTS public.mapdata_altitudearea_level_id_b1320e34;
+DROP INDEX IF EXISTS public.mapdata_accessrestriction_groups_accessrestriction_id_c6318580;
+DROP INDEX IF EXISTS public.mapdata_accessrestriction__accessrestrictiongroup_id_fcb1eea5;
+DROP INDEX IF EXISTS public.mapdata_accesspermissiontoken_valid_until_beec34ec;
+DROP INDEX IF EXISTS public.mapdata_accesspermissiontoken_unlimited_2f438422;
+DROP INDEX IF EXISTS public.mapdata_accesspermissiontoken_redeemed_d5cc5d44;
+DROP INDEX IF EXISTS public.mapdata_accesspermissiontoken_can_grant_9d37516f;
+DROP INDEX IF EXISTS public.mapdata_accesspermissiontoken_author_id_4ae5d792;
+DROP INDEX IF EXISTS public.mapdata_accesspermissionssogrant_access_restriction_id_d94eb926;
+DROP INDEX IF EXISTS public.mapdata_accesspermissionss_access_restriction_group_i_960b8494;
+DROP INDEX IF EXISTS public.mapdata_accesspermission_user_id_0160fe04;
+DROP INDEX IF EXISTS public.mapdata_accesspermission_token_id_e3647d7b;
+DROP INDEX IF EXISTS public.mapdata_accesspermission_sso_grant_id_425b2515;
+DROP INDEX IF EXISTS public.mapdata_accesspermission_author_id_f42ef447;
+DROP INDEX IF EXISTS public.mapdata_accesspermission_access_restriction_id_6cf436d8;
+DROP INDEX IF EXISTS public.mapdata_accesspermission_access_restriction_group_id_194c451d;
+DROP INDEX IF EXISTS public.editor_changesetupdate_user_id_cd2202c2;
+DROP INDEX IF EXISTS public.editor_changesetupdate_state_ed535412_like;
+DROP INDEX IF EXISTS public.editor_changesetupdate_state_ed535412;
+DROP INDEX IF EXISTS public.editor_changesetupdate_changeset_id_aedbc5fb;
+DROP INDEX IF EXISTS public.editor_changesetupdate_assigned_to_id_373deb2a;
+DROP INDEX IF EXISTS public.editor_changeset_state_5a7a590f_like;
+DROP INDEX IF EXISTS public.editor_changeset_state_5a7a590f;
+DROP INDEX IF EXISTS public.editor_changeset_last_update_id_e0d77297;
+DROP INDEX IF EXISTS public.editor_changeset_last_state_update_id_292a8530;
+DROP INDEX IF EXISTS public.editor_changeset_last_cleaned_with_id_d5214743;
+DROP INDEX IF EXISTS public.editor_changeset_last_change_id_5be51ccf;
+DROP INDEX IF EXISTS public.editor_changeset_author_id_f4bf3c7f;
+DROP INDEX IF EXISTS public.editor_changeset_assigned_to_id_3afcfbb7;
+DROP INDEX IF EXISTS public.editor_changedobject_content_type_id_aa981231;
+DROP INDEX IF EXISTS public.editor_changedobject_changeset_id_0692bc40;
+DROP INDEX IF EXISTS public.django_session_session_key_c0390e0f_like;
+DROP INDEX IF EXISTS public.django_session_expire_date_a5c62663;
+DROP INDEX IF EXISTS public.django_admin_log_user_id_c564eba6;
+DROP INDEX IF EXISTS public.django_admin_log_content_type_id_c4bce8eb;
+DROP INDEX IF EXISTS public.control_userspaceaccess_user_id_4ad6da16;
+DROP INDEX IF EXISTS public.control_userspaceaccess_space_id_c22914b2;
+DROP INDEX IF EXISTS public.control_userpermissions_re_userpermissions_id_3d2fb35b;
+DROP INDEX IF EXISTS public.control_userpermissions_re_locationgroup_id_96a3102b;
+DROP INDEX IF EXISTS public.auth_user_user_permissions_user_id_a95ead1b;
+DROP INDEX IF EXISTS public.auth_user_user_permissions_permission_id_1fbb5f2c;
+DROP INDEX IF EXISTS public.auth_user_groups_user_id_6a12ed8b;
+DROP INDEX IF EXISTS public.auth_user_groups_group_id_97559544;
+DROP INDEX IF EXISTS public.auth_permission_content_type_id_2f476e4b;
+DROP INDEX IF EXISTS public.auth_group_permissions_permission_id_84c5c92e;
+DROP INDEX IF EXISTS public.auth_group_permissions_group_id_b120cbf9;
+DROP INDEX IF EXISTS public.auth_group_name_a6ea08ec_like;
+DROP INDEX IF EXISTS public.api_token_user_id_b646d2e7;
+DROP INDEX IF EXISTS public.api_secret_user_id_74e5b7a6;
+DROP INDEX IF EXISTS public.api_secret_api_secret_e655122c_like;
+ALTER TABLE IF EXISTS ONLY public.site_siteupdate DROP CONSTRAINT IF EXISTS site_siteupdate_pkey;
+ALTER TABLE IF EXISTS ONLY public.site_announcement DROP CONSTRAINT IF EXISTS site_announcement_pkey;
+ALTER TABLE IF EXISTS ONLY public.routing_routeoptions DROP CONSTRAINT IF EXISTS routing_routeoptions_pkey;
+ALTER TABLE IF EXISTS ONLY public.mesh_otaupdaterecipient DROP CONSTRAINT IF EXISTS mesh_otaupdaterecipient_pkey;
+ALTER TABLE IF EXISTS ONLY public.mesh_otaupdate DROP CONSTRAINT IF EXISTS mesh_otaupdate_pkey;
+ALTER TABLE IF EXISTS ONLY public.mesh_nodemessage DROP CONSTRAINT IF EXISTS mesh_nodemessage_pkey;
+ALTER TABLE IF EXISTS ONLY public.mesh_meshuplink DROP CONSTRAINT IF EXISTS mesh_meshuplink_pkey;
+ALTER TABLE IF EXISTS ONLY public.mesh_meshnode DROP CONSTRAINT IF EXISTS mesh_meshnode_pkey;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwareversion DROP CONSTRAINT IF EXISTS mesh_firmwareversion_version_key;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwareversion DROP CONSTRAINT IF EXISTS mesh_firmwareversion_pkey;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwarebuildboard DROP CONSTRAINT IF EXISTS mesh_firmwarebuildboard_pkey;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwarebuildboard DROP CONSTRAINT IF EXISTS mesh_firmwarebuildboard_build_id_board_e38ac95f_uniq;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwarebuild DROP CONSTRAINT IF EXISTS mesh_firmwarebuild_version_id_variant_0930ed52_uniq;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwarebuild DROP CONSTRAINT IF EXISTS mesh_firmwarebuild_sha256_hash_key;
+ALTER TABLE IF EXISTS ONLY public.mesh_firmwarebuild DROP CONSTRAINT IF EXISTS mesh_firmwarebuild_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_beaconmeasurement DROP CONSTRAINT IF EXISTS mapdata_wifimeasurement_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_waytype DROP CONSTRAINT IF EXISTS mapdata_waytype_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_themeobstaclegroupbackgroundcolor DROP CONSTRAINT IF EXISTS mapdata_themeobstaclegroupbackgroundcolor_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_themelocationgroupbackgroundcolor DROP CONSTRAINT IF EXISTS mapdata_themelocationgroupbackgroundcolor_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_theme DROP CONSTRAINT IF EXISTS mapdata_theme_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_stair DROP CONSTRAINT IF EXISTS mapdata_stair_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space DROP CONSTRAINT IF EXISTS mapdata_space_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space_groups DROP CONSTRAINT IF EXISTS mapdata_space_groups_space_id_locationgroup_id_170f4e14_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_space_groups DROP CONSTRAINT IF EXISTS mapdata_space_groups_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_source DROP CONSTRAINT IF EXISTS mapdata_source_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_source DROP CONSTRAINT IF EXISTS mapdata_source_name_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_reportupdate DROP CONSTRAINT IF EXISTS mapdata_reportupdate_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_report DROP CONSTRAINT IF EXISTS mapdata_report_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_report_created_groups DROP CONSTRAINT IF EXISTS mapdata_report_created_groups_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_report_created_groups DROP CONSTRAINT IF EXISTS mapdata_report_created_g_report_id_locationgroup__27469fb6_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_rangingbeacon DROP CONSTRAINT IF EXISTS mapdata_rangingbeacon_uwb_address_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_rangingbeacon DROP CONSTRAINT IF EXISTS mapdata_rangingbeacon_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_rangingbeacon DROP CONSTRAINT IF EXISTS mapdata_rangingbeacon_node_number_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_rangingbeacon DROP CONSTRAINT IF EXISTS mapdata_rangingbeacon_bssid_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_rangingbeacon DROP CONSTRAINT IF EXISTS mapdata_rangingbeacon_bluetooth_address_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_ramp DROP CONSTRAINT IF EXISTS mapdata_ramp_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_position DROP CONSTRAINT IF EXISTS mapdata_position_secret_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_position DROP CONSTRAINT IF EXISTS mapdata_position_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi DROP CONSTRAINT IF EXISTS mapdata_poi_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi_groups DROP CONSTRAINT IF EXISTS mapdata_poi_groups_poi_id_locationgroup_id_e97cd00b_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_poi_groups DROP CONSTRAINT IF EXISTS mapdata_poi_groups_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_obstaclegroup DROP CONSTRAINT IF EXISTS mapdata_obstaclegroup_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_obstacle DROP CONSTRAINT IF EXISTS mapdata_obstacle_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_mapupdate DROP CONSTRAINT IF EXISTS mapdata_mapupdate_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationslug DROP CONSTRAINT IF EXISTS mapdata_locationslug_slug_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationslug DROP CONSTRAINT IF EXISTS mapdata_locationslug_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationredirect DROP CONSTRAINT IF EXISTS mapdata_locationredirect_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationgroupcategory DROP CONSTRAINT IF EXISTS mapdata_locationgroupcategory_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationgroupcategory DROP CONSTRAINT IF EXISTS mapdata_locationgroupcategory_name_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationgroup DROP CONSTRAINT IF EXISTS mapdata_locationgroup_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_locationgroup DROP CONSTRAINT IF EXISTS mapdata_locationgroup_hub_import_type_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_lineobstacle DROP CONSTRAINT IF EXISTS mapdata_lineobstacle_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level DROP CONSTRAINT IF EXISTS mapdata_level_short_label_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level DROP CONSTRAINT IF EXISTS mapdata_level_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level_groups DROP CONSTRAINT IF EXISTS mapdata_level_groups_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level_groups DROP CONSTRAINT IF EXISTS mapdata_level_groups_level_id_locationgroup_id_a6e17493_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_level DROP CONSTRAINT IF EXISTS mapdata_level_base_altitude_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_leavedescription DROP CONSTRAINT IF EXISTS mapdata_leavedescription_space_id_target_space_id_91b3fce3_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_leavedescription DROP CONSTRAINT IF EXISTS mapdata_leavedescription_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_labelsettings DROP CONSTRAINT IF EXISTS mapdata_labelsettings_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_hole DROP CONSTRAINT IF EXISTS mapdata_hole_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_groundaltitude DROP CONSTRAINT IF EXISTS mapdata_groundaltitude_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_groundaltitude DROP CONSTRAINT IF EXISTS mapdata_groundaltitude_name_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_graphnode DROP CONSTRAINT IF EXISTS mapdata_graphnode_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_graphedge DROP CONSTRAINT IF EXISTS mapdata_graphedge_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_graphedge DROP CONSTRAINT IF EXISTS mapdata_graphedge_from_node_id_to_node_id_69dfc18a_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_dynamiclocation DROP CONSTRAINT IF EXISTS mapdata_dynamiclocation_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_dynamiclocation_groups DROP CONSTRAINT IF EXISTS mapdata_dynamiclocation_groups_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_dynamiclocation_groups DROP CONSTRAINT IF EXISTS mapdata_dynamiclocation__dynamiclocation_id_locat_d1a2f283_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_door DROP CONSTRAINT IF EXISTS mapdata_door_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_crossdescription DROP CONSTRAINT IF EXISTS mapdata_crossdescription_space_id_origin_space_id_0efa52a4_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_crossdescription DROP CONSTRAINT IF EXISTS mapdata_crossdescription_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_column DROP CONSTRAINT IF EXISTS mapdata_column_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_building DROP CONSTRAINT IF EXISTS mapdata_building_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area DROP CONSTRAINT IF EXISTS mapdata_area_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area_groups DROP CONSTRAINT IF EXISTS mapdata_area_groups_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_area_groups DROP CONSTRAINT IF EXISTS mapdata_area_groups_area_id_locationgroup_id_573c1a07_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_altitudemarker DROP CONSTRAINT IF EXISTS mapdata_altitudemarker_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_altitudearea DROP CONSTRAINT IF EXISTS mapdata_altitudearea_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accessrestrictiongroup DROP CONSTRAINT IF EXISTS mapdata_accessrestrictiongroup_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accessrestriction DROP CONSTRAINT IF EXISTS mapdata_accessrestriction_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accessrestriction_groups DROP CONSTRAINT IF EXISTS mapdata_accessrestriction_groups_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accessrestriction_groups DROP CONSTRAINT IF EXISTS mapdata_accessrestrictio_accessrestriction_id_acc_1dbcda69_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermissiontoken DROP CONSTRAINT IF EXISTS mapdata_accesspermissiontoken_token_key;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermissiontoken DROP CONSTRAINT IF EXISTS mapdata_accesspermissiontoken_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermissionssogrant DROP CONSTRAINT IF EXISTS mapdata_accesspermissionssogrant_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermissionssogrant DROP CONSTRAINT IF EXISTS mapdata_accesspermission_provider_group_access_re_bf15c068_uniq;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermission DROP CONSTRAINT IF EXISTS mapdata_accesspermission_pkey;
+ALTER TABLE IF EXISTS ONLY public.mapdata_accesspermission DROP CONSTRAINT IF EXISTS mapdata_accesspermission_author_id_unique_key_0644d161_uniq;
+ALTER TABLE IF EXISTS ONLY public.editor_changesetupdate DROP CONSTRAINT IF EXISTS editor_changesetupdate_pkey;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_pkey;
+ALTER TABLE IF EXISTS ONLY public.editor_changeset DROP CONSTRAINT IF EXISTS editor_changeset_map_update_id_key;
+ALTER TABLE IF EXISTS ONLY public.editor_changedobject DROP CONSTRAINT IF EXISTS editor_changedobject_pkey;
+ALTER TABLE IF EXISTS ONLY public.editor_changedobject DROP CONSTRAINT IF EXISTS editor_changedobject_changeset_id_content_typ_30a7cdb1_uniq;
+ALTER TABLE IF EXISTS ONLY public.django_session DROP CONSTRAINT IF EXISTS django_session_pkey;
+ALTER TABLE IF EXISTS ONLY public.django_migrations DROP CONSTRAINT IF EXISTS django_migrations_pkey;
+ALTER TABLE IF EXISTS ONLY public.django_content_type DROP CONSTRAINT IF EXISTS django_content_type_pkey;
+ALTER TABLE IF EXISTS ONLY public.django_content_type DROP CONSTRAINT IF EXISTS django_content_type_app_label_model_76bd3d3b_uniq;
+ALTER TABLE IF EXISTS ONLY public.django_admin_log DROP CONSTRAINT IF EXISTS django_admin_log_pkey;
+ALTER TABLE IF EXISTS ONLY public.control_userspaceaccess DROP CONSTRAINT IF EXISTS control_userspaceaccess_user_id_space_id_224c3409_uniq;
+ALTER TABLE IF EXISTS ONLY public.control_userspaceaccess DROP CONSTRAINT IF EXISTS control_userspaceaccess_pkey;
+ALTER TABLE IF EXISTS ONLY public.control_userpermissions_review_group_reports DROP CONSTRAINT IF EXISTS control_userpermissions_review_group_reports_pkey;
+ALTER TABLE IF EXISTS ONLY public.control_userpermissions DROP CONSTRAINT IF EXISTS control_userpermissions_pkey;
+ALTER TABLE IF EXISTS ONLY public.control_userpermissions_review_group_reports DROP CONSTRAINT IF EXISTS control_userpermissions__userpermissions_id_locat_17cbbd3d_uniq;
+ALTER TABLE IF EXISTS ONLY public.auth_user_user_permissions DROP CONSTRAINT IF EXISTS auth_user_user_permissions_user_id_permission_id_14a6b632_uniq;
+ALTER TABLE IF EXISTS ONLY public.auth_user_user_permissions DROP CONSTRAINT IF EXISTS auth_user_user_permissions_pkey;
+ALTER TABLE IF EXISTS ONLY public.auth_user_groups DROP CONSTRAINT IF EXISTS auth_user_groups_user_id_group_id_94350c0c_uniq;
+ALTER TABLE IF EXISTS ONLY public.auth_user_groups DROP CONSTRAINT IF EXISTS auth_user_groups_pkey;
+ALTER TABLE IF EXISTS ONLY public.auth_permission DROP CONSTRAINT IF EXISTS auth_permission_pkey;
+ALTER TABLE IF EXISTS ONLY public.auth_permission DROP CONSTRAINT IF EXISTS auth_permission_content_type_id_codename_01ab375a_uniq;
+ALTER TABLE IF EXISTS ONLY public.auth_group DROP CONSTRAINT IF EXISTS auth_group_pkey;
+ALTER TABLE IF EXISTS ONLY public.auth_group_permissions DROP CONSTRAINT IF EXISTS auth_group_permissions_pkey;
+ALTER TABLE IF EXISTS ONLY public.auth_group_permissions DROP CONSTRAINT IF EXISTS auth_group_permissions_group_id_permission_id_0cd325b0_uniq;
+ALTER TABLE IF EXISTS ONLY public.auth_group DROP CONSTRAINT IF EXISTS auth_group_name_key;
+ALTER TABLE IF EXISTS ONLY public.api_logintoken DROP CONSTRAINT IF EXISTS api_token_pkey;
+ALTER TABLE IF EXISTS ONLY public.api_secret DROP CONSTRAINT IF EXISTS api_secret_user_id_name_21b4a70e_uniq;
+ALTER TABLE IF EXISTS ONLY public.api_secret DROP CONSTRAINT IF EXISTS api_secret_pkey;
+ALTER TABLE IF EXISTS ONLY public.api_secret DROP CONSTRAINT IF EXISTS api_secret_api_secret_key;
+DROP TABLE IF EXISTS public.site_siteupdate;
+DROP TABLE IF EXISTS public.site_announcement;
+DROP TABLE IF EXISTS public.routing_routeoptions;
+DROP TABLE IF EXISTS public.mesh_otaupdaterecipient;
+DROP TABLE IF EXISTS public.mesh_otaupdate;
+DROP TABLE IF EXISTS public.mesh_nodemessage;
+DROP TABLE IF EXISTS public.mesh_meshuplink;
+DROP TABLE IF EXISTS public.mesh_meshnode;
+DROP TABLE IF EXISTS public.mesh_firmwareversion;
+DROP TABLE IF EXISTS public.mesh_firmwarebuildboard;
+DROP TABLE IF EXISTS public.mesh_firmwarebuild;
+DROP TABLE IF EXISTS public.mapdata_waytype;
+DROP TABLE IF EXISTS public.mapdata_themeobstaclegroupbackgroundcolor;
+DROP TABLE IF EXISTS public.mapdata_themelocationgroupbackgroundcolor;
+DROP TABLE IF EXISTS public.mapdata_theme;
+DROP TABLE IF EXISTS public.mapdata_stair;
+DROP TABLE IF EXISTS public.mapdata_space_groups;
+DROP TABLE IF EXISTS public.mapdata_space;
+DROP TABLE IF EXISTS public.mapdata_source;
+DROP TABLE IF EXISTS public.mapdata_reportupdate;
+DROP TABLE IF EXISTS public.mapdata_report_created_groups;
+DROP TABLE IF EXISTS public.mapdata_report;
+DROP TABLE IF EXISTS public.mapdata_rangingbeacon;
+DROP TABLE IF EXISTS public.mapdata_ramp;
+DROP TABLE IF EXISTS public.mapdata_position;
+DROP TABLE IF EXISTS public.mapdata_poi_groups;
+DROP TABLE IF EXISTS public.mapdata_poi;
+DROP TABLE IF EXISTS public.mapdata_obstaclegroup;
+DROP TABLE IF EXISTS public.mapdata_obstacle;
+DROP TABLE IF EXISTS public.mapdata_mapupdate;
+DROP TABLE IF EXISTS public.mapdata_locationslug;
+DROP TABLE IF EXISTS public.mapdata_locationredirect;
+DROP TABLE IF EXISTS public.mapdata_locationgroupcategory;
+DROP TABLE IF EXISTS public.mapdata_locationgroup;
+DROP TABLE IF EXISTS public.mapdata_lineobstacle;
+DROP TABLE IF EXISTS public.mapdata_level_groups;
+DROP TABLE IF EXISTS public.mapdata_level;
+DROP TABLE IF EXISTS public.mapdata_leavedescription;
+DROP TABLE IF EXISTS public.mapdata_labelsettings;
+DROP TABLE IF EXISTS public.mapdata_hole;
+DROP TABLE IF EXISTS public.mapdata_groundaltitude;
+DROP TABLE IF EXISTS public.mapdata_graphnode;
+DROP TABLE IF EXISTS public.mapdata_graphedge;
+DROP TABLE IF EXISTS public.mapdata_dynamiclocation_groups;
+DROP TABLE IF EXISTS public.mapdata_dynamiclocation;
+DROP TABLE IF EXISTS public.mapdata_door;
+DROP TABLE IF EXISTS public.mapdata_crossdescription;
+DROP TABLE IF EXISTS public.mapdata_column;
+DROP TABLE IF EXISTS public.mapdata_building;
+DROP TABLE IF EXISTS public.mapdata_beaconmeasurement;
+DROP TABLE IF EXISTS public.mapdata_area_groups;
+DROP TABLE IF EXISTS public.mapdata_area;
+DROP TABLE IF EXISTS public.mapdata_altitudemarker;
+DROP TABLE IF EXISTS public.mapdata_altitudearea;
+DROP TABLE IF EXISTS public.mapdata_accessrestrictiongroup;
+DROP TABLE IF EXISTS public.mapdata_accessrestriction_groups;
+DROP TABLE IF EXISTS public.mapdata_accessrestriction;
+DROP TABLE IF EXISTS public.mapdata_accesspermissiontoken;
+DROP TABLE IF EXISTS public.mapdata_accesspermissionssogrant;
+DROP TABLE IF EXISTS public.mapdata_accesspermission;
+DROP TABLE IF EXISTS public.editor_changesetupdate;
+DROP TABLE IF EXISTS public.editor_changeset;
+DROP TABLE IF EXISTS public.editor_changedobject;
+DROP TABLE IF EXISTS public.django_session;
+DROP TABLE IF EXISTS public.django_migrations;
+DROP TABLE IF EXISTS public.django_content_type;
+DROP TABLE IF EXISTS public.django_admin_log;
+DROP TABLE IF EXISTS public.control_userspaceaccess;
+DROP TABLE IF EXISTS public.control_userpermissions_review_group_reports;
+DROP TABLE IF EXISTS public.control_userpermissions;
+DROP TABLE IF EXISTS public.auth_user_user_permissions;
+DROP TABLE IF EXISTS public.auth_user_groups;
+DROP TABLE IF EXISTS public.auth_permission;
+DROP TABLE IF EXISTS public.auth_group_permissions;
+DROP TABLE IF EXISTS public.auth_group;
+DROP TABLE IF EXISTS public.api_secret;
+DROP TABLE IF EXISTS public.api_logintoken;
+
+SET default_tablespace = '';
+
+SET default_table_access_method = heap;
+
+--
+-- Name: api_logintoken; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.api_logintoken (
+ id integer NOT NULL,
+ secret character varying(64) NOT NULL,
+ session_auth_hash character varying(128) NOT NULL,
+ user_id integer NOT NULL
+);
+
+
+--
+-- Name: api_secret; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.api_secret (
+ id integer NOT NULL,
+ name character varying(32) NOT NULL,
+ created timestamp with time zone NOT NULL,
+ api_secret character varying(64) NOT NULL,
+ readonly boolean NOT NULL,
+ scope_grant_permissions boolean NOT NULL,
+ scope_editor boolean NOT NULL,
+ scope_mesh boolean NOT NULL,
+ valid_until timestamp with time zone,
+ user_id integer NOT NULL
+);
+
+
+--
+-- Name: api_secret_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.api_secret ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.api_secret_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: api_token_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.api_logintoken ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.api_token_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_group; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.auth_group (
+ id integer NOT NULL,
+ name character varying(150) NOT NULL
+);
+
+
+--
+-- Name: auth_group_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.auth_group ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_group_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_group_permissions; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.auth_group_permissions (
+ id integer NOT NULL,
+ group_id integer NOT NULL,
+ permission_id integer NOT NULL
+);
+
+
+--
+-- Name: auth_group_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.auth_group_permissions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_group_permissions_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_permission; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.auth_permission (
+ id integer NOT NULL,
+ name character varying(255) NOT NULL,
+ content_type_id integer NOT NULL,
+ codename character varying(100) NOT NULL
+);
+
+
+--
+-- Name: auth_permission_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.auth_permission ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_permission_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_user_groups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.auth_user_groups (
+ id integer NOT NULL,
+ user_id integer NOT NULL,
+ group_id integer NOT NULL
+);
+
+
+--
+-- Name: auth_user_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.auth_user_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_user_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: auth_user_user_permissions; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.auth_user_user_permissions (
+ id integer NOT NULL,
+ user_id integer NOT NULL,
+ permission_id integer NOT NULL
+);
+
+
+--
+-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.auth_user_user_permissions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.auth_user_user_permissions_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: control_userpermissions; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.control_userpermissions (
+ user_id integer NOT NULL,
+ review_changesets boolean NOT NULL,
+ direct_edit boolean NOT NULL,
+ control_panel boolean NOT NULL,
+ grant_permissions boolean NOT NULL,
+ manage_announcements boolean NOT NULL,
+ grant_all_access boolean NOT NULL,
+ max_changeset_changes smallint NOT NULL,
+ base_mapdata_access boolean NOT NULL,
+ editor_access boolean NOT NULL,
+ grant_space_access boolean NOT NULL,
+ manage_map_updates boolean NOT NULL,
+ review_all_reports boolean NOT NULL,
+ mesh_control boolean NOT NULL,
+ grant_unlimited_access boolean NOT NULL,
+ nonpublic_themes boolean NOT NULL,
+ sources_access boolean NOT NULL,
+ CONSTRAINT control_userpermissions_max_changeset_changes_check CHECK ((max_changeset_changes >= 0))
+);
+
+
+--
+-- Name: control_userpermissions_review_group_reports; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.control_userpermissions_review_group_reports (
+ id integer NOT NULL,
+ userpermissions_id integer NOT NULL,
+ locationgroup_id integer NOT NULL
+);
+
+
+--
+-- Name: control_userpermissions_review_group_reports_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.control_userpermissions_review_group_reports ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.control_userpermissions_review_group_reports_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: control_userspaceaccess; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.control_userspaceaccess (
+ id integer NOT NULL,
+ can_edit boolean NOT NULL,
+ space_id integer NOT NULL,
+ user_id integer NOT NULL
+);
+
+
+--
+-- Name: control_userspaceaccess_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.control_userspaceaccess ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.control_userspaceaccess_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_admin_log; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.django_admin_log (
+ id integer NOT NULL,
+ action_time timestamp with time zone NOT NULL,
+ object_id text,
+ object_repr character varying(200) NOT NULL,
+ action_flag smallint NOT NULL,
+ change_message text NOT NULL,
+ content_type_id integer,
+ user_id integer NOT NULL,
+ CONSTRAINT django_admin_log_action_flag_check CHECK ((action_flag >= 0))
+);
+
+
+--
+-- Name: django_admin_log_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.django_admin_log ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_admin_log_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_content_type; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.django_content_type (
+ id integer NOT NULL,
+ app_label character varying(100) NOT NULL,
+ model character varying(100) NOT NULL
+);
+
+
+--
+-- Name: django_content_type_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.django_content_type ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_content_type_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_migrations; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.django_migrations (
+ id integer NOT NULL,
+ app character varying(255) NOT NULL,
+ name character varying(255) NOT NULL,
+ applied timestamp with time zone NOT NULL
+);
+
+
+--
+-- Name: django_migrations_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.django_migrations ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.django_migrations_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: django_session; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.django_session (
+ session_key character varying(40) NOT NULL,
+ session_data text NOT NULL,
+ expire_date timestamp with time zone NOT NULL
+);
+
+
+--
+-- Name: editor_changedobject; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.editor_changedobject (
+ id integer NOT NULL,
+ created timestamp with time zone NOT NULL,
+ existing_object_pk integer,
+ updated_fields jsonb NOT NULL,
+ m2m_added jsonb NOT NULL,
+ m2m_removed jsonb NOT NULL,
+ deleted boolean NOT NULL,
+ changeset_id integer NOT NULL,
+ content_type_id integer NOT NULL,
+ CONSTRAINT editor_changedobject_existing_object_pk_check CHECK ((existing_object_pk >= 0))
+);
+
+
+--
+-- Name: editor_changedobject_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.editor_changedobject ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.editor_changedobject_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: editor_changeset; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.editor_changeset (
+ id integer NOT NULL,
+ created timestamp with time zone NOT NULL,
+ state character varying(20) NOT NULL,
+ title character varying(100) NOT NULL,
+ description text NOT NULL,
+ assigned_to_id integer,
+ author_id integer,
+ last_change_id integer,
+ last_cleaned_with_id integer,
+ last_state_update_id integer,
+ last_update_id integer,
+ map_update_id integer
+);
+
+
+--
+-- Name: editor_changeset_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.editor_changeset ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.editor_changeset_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: editor_changesetupdate; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.editor_changesetupdate (
+ id integer NOT NULL,
+ datetime timestamp with time zone NOT NULL,
+ comment text,
+ state character varying(20) NOT NULL,
+ title character varying(100),
+ description text,
+ objects_changed boolean NOT NULL,
+ assigned_to_id integer,
+ changeset_id integer NOT NULL,
+ user_id integer
+);
+
+
+--
+-- Name: editor_changesetupdate_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.editor_changesetupdate ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.editor_changesetupdate_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_accesspermission; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_accesspermission (
+ id integer NOT NULL,
+ expire_date timestamp with time zone,
+ can_grant boolean NOT NULL,
+ unique_key character varying(32),
+ access_restriction_id integer,
+ author_id integer,
+ token_id integer,
+ user_id integer,
+ access_restriction_group_id integer,
+ session_token uuid,
+ sso_grant_id integer,
+ CONSTRAINT permission_needs_restriction_or_restriction_group CHECK (((NOT ((access_restriction_id IS NULL) AND (access_restriction_group_id IS NULL))) AND (NOT ((access_restriction_id IS NOT NULL) AND (access_restriction_group_id IS NOT NULL))))),
+ CONSTRAINT permission_needs_user_or_session CHECK (((NOT ((session_token IS NULL) AND (user_id IS NULL))) AND (NOT ((session_token IS NOT NULL) AND (user_id IS NOT NULL)))))
+);
+
+
+--
+-- Name: mapdata_accesspermission_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_accesspermission ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_accesspermission_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_accesspermissionssogrant; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_accesspermissionssogrant (
+ id integer NOT NULL,
+ provider character varying(32) NOT NULL,
+ "group" character varying(64) NOT NULL,
+ access_restriction_id integer,
+ access_restriction_group_id integer,
+ CONSTRAINT sso_permission_grant_needs_restriction_or_restriction_group CHECK (((NOT ((access_restriction_id IS NULL) AND (access_restriction_group_id IS NULL))) AND (NOT ((access_restriction_id IS NOT NULL) AND (access_restriction_group_id IS NOT NULL)))))
+);
+
+
+--
+-- Name: mapdata_accesspermissionssogrant_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_accesspermissionssogrant ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_accesspermissionssogrant_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_accesspermissiontoken; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_accesspermissiontoken (
+ id integer NOT NULL,
+ token uuid NOT NULL,
+ valid_until timestamp with time zone NOT NULL,
+ unlimited boolean NOT NULL,
+ redeemed boolean NOT NULL,
+ can_grant boolean NOT NULL,
+ unique_key character varying(32),
+ data bytea NOT NULL,
+ author_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_accesspermissiontoken_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_accesspermissiontoken ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_accesspermissiontoken_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_accessrestriction; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_accessrestriction (
+ id integer NOT NULL,
+ titles jsonb NOT NULL,
+ public boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_accessrestriction_groups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_accessrestriction_groups (
+ id integer NOT NULL,
+ accessrestriction_id integer NOT NULL,
+ accessrestrictiongroup_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_accessrestriction_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_accessrestriction_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_accessrestriction_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_accessrestriction_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_accessrestriction ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_accessrestriction_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_accessrestrictiongroup; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_accessrestrictiongroup (
+ id integer NOT NULL,
+ titles jsonb NOT NULL
+);
+
+
+--
+-- Name: mapdata_accessrestrictiongroup_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_accessrestrictiongroup ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_accessrestrictiongroup_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_altitudearea; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_altitudearea (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ altitude numeric(6,2),
+ level_id integer NOT NULL,
+ import_tag character varying(64),
+ points jsonb
+);
+
+
+--
+-- Name: mapdata_altitudearea_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_altitudearea ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_altitudearea_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_altitudemarker; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_altitudemarker (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ space_id integer NOT NULL,
+ import_tag character varying(64),
+ groundaltitude_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_altitudemarker_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_altitudemarker ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_altitudemarker_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_area; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_area (
+ locationslug_ptr_id integer NOT NULL,
+ titles jsonb NOT NULL,
+ can_search boolean NOT NULL,
+ can_describe boolean NOT NULL,
+ geometry jsonb NOT NULL,
+ slow_down_factor numeric(6,2) NOT NULL,
+ access_restriction_id integer,
+ space_id integer NOT NULL,
+ import_tag character varying(64),
+ icon character varying(32),
+ label_overrides jsonb NOT NULL,
+ label_settings_id integer,
+ main_point jsonb,
+ external_url character varying(200),
+ import_block_data boolean NOT NULL,
+ import_block_geom boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_area_groups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_area_groups (
+ id integer NOT NULL,
+ area_id integer NOT NULL,
+ locationgroup_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_area_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_area_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_area_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_beaconmeasurement; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_beaconmeasurement (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ comment text,
+ data jsonb NOT NULL,
+ author_id integer,
+ space_id integer NOT NULL,
+ import_tag character varying(64)
+);
+
+
+--
+-- Name: mapdata_building; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_building (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ level_id integer NOT NULL,
+ import_tag character varying(64)
+);
+
+
+--
+-- Name: mapdata_building_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_building ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_building_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_column; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_column (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ space_id integer NOT NULL,
+ access_restriction_id integer,
+ import_tag character varying(64)
+);
+
+
+--
+-- Name: mapdata_column_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_column ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_column_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_crossdescription; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_crossdescription (
+ id integer NOT NULL,
+ description_i18n jsonb NOT NULL,
+ origin_space_id integer NOT NULL,
+ space_id integer NOT NULL,
+ target_space_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_crossdescription_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_crossdescription ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_crossdescription_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_door; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_door (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ access_restriction_id integer,
+ level_id integer NOT NULL,
+ import_tag character varying(64)
+);
+
+
+--
+-- Name: mapdata_door_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_door ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_door_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_dynamiclocation; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_dynamiclocation (
+ locationslug_ptr_id integer NOT NULL,
+ titles jsonb NOT NULL,
+ can_search boolean NOT NULL,
+ can_describe boolean NOT NULL,
+ icon character varying(32),
+ label_overrides jsonb NOT NULL,
+ position_secret character varying(32),
+ access_restriction_id integer,
+ label_settings_id integer,
+ external_url character varying(200),
+ import_block_data boolean NOT NULL,
+ import_block_geom boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_dynamiclocation_groups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_dynamiclocation_groups (
+ id integer NOT NULL,
+ dynamiclocation_id integer NOT NULL,
+ locationgroup_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_dynamiclocation_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_dynamiclocation_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_dynamiclocation_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_graphedge; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_graphedge (
+ id integer NOT NULL,
+ access_restriction_id integer,
+ from_node_id integer NOT NULL,
+ to_node_id integer NOT NULL,
+ waytype_id integer
+);
+
+
+--
+-- Name: mapdata_graphedge_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_graphedge ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_graphedge_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_graphnode; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_graphnode (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ space_id integer NOT NULL,
+ import_tag character varying(64)
+);
+
+
+--
+-- Name: mapdata_graphnode_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_graphnode ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_graphnode_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_groundaltitude; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_groundaltitude (
+ id integer NOT NULL,
+ name character varying(70) NOT NULL,
+ altitude numeric(6,2) NOT NULL
+);
+
+
+--
+-- Name: mapdata_groundaltitude_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_groundaltitude ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_groundaltitude_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_hole; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_hole (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ space_id integer NOT NULL,
+ import_tag character varying(64)
+);
+
+
+--
+-- Name: mapdata_hole_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_hole ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_hole_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_labelsettings; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_labelsettings (
+ id integer NOT NULL,
+ titles jsonb NOT NULL,
+ min_zoom numeric(3,1) NOT NULL,
+ max_zoom numeric(3,1) NOT NULL,
+ font_size integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_labelsettings_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_labelsettings ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_labelsettings_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_leavedescription; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_leavedescription (
+ id integer NOT NULL,
+ description_i18n jsonb NOT NULL,
+ space_id integer NOT NULL,
+ target_space_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_leavedescription_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_leavedescription ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_leavedescription_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_level; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_level (
+ locationslug_ptr_id integer NOT NULL,
+ titles jsonb NOT NULL,
+ can_search boolean NOT NULL,
+ can_describe boolean NOT NULL,
+ base_altitude numeric(6,2) NOT NULL,
+ default_height numeric(6,2) NOT NULL,
+ door_height numeric(6,2) NOT NULL,
+ short_label character varying(20) NOT NULL,
+ access_restriction_id integer,
+ on_top_of_id integer,
+ icon character varying(32),
+ label_overrides jsonb NOT NULL,
+ label_settings_id integer,
+ external_url character varying(200),
+ import_block_data boolean NOT NULL,
+ import_block_geom boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_level_groups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_level_groups (
+ id integer NOT NULL,
+ level_id integer NOT NULL,
+ locationgroup_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_level_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_level_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_level_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_lineobstacle; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_lineobstacle (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ width numeric(4,2) NOT NULL,
+ height numeric(6,2) NOT NULL,
+ space_id integer NOT NULL,
+ import_tag character varying(64),
+ altitude numeric(6,2) NOT NULL,
+ group_id integer
+);
+
+
+--
+-- Name: mapdata_lineobstacle_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_lineobstacle ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_lineobstacle_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_locationgroup; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_locationgroup (
+ locationslug_ptr_id integer NOT NULL,
+ titles jsonb NOT NULL,
+ can_search boolean NOT NULL,
+ can_describe boolean NOT NULL,
+ priority integer NOT NULL,
+ color character varying(32),
+ access_restriction_id integer,
+ category_id integer NOT NULL,
+ icon character varying(32),
+ hierarchy integer NOT NULL,
+ label_settings_id integer,
+ hub_import_type character varying(100),
+ descriptions jsonb NOT NULL,
+ can_report_missing character varying(16) NOT NULL,
+ report_help_texts jsonb NOT NULL,
+ in_legend boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_locationgroupcategory; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_locationgroupcategory (
+ id integer NOT NULL,
+ name character varying(50) NOT NULL,
+ single boolean NOT NULL,
+ titles jsonb NOT NULL,
+ titles_plural jsonb NOT NULL,
+ allow_levels boolean NOT NULL,
+ allow_spaces boolean NOT NULL,
+ allow_areas boolean NOT NULL,
+ allow_pois boolean NOT NULL,
+ priority integer NOT NULL,
+ help_texts jsonb NOT NULL,
+ allow_dynamic_locations boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_locationgroupcategory_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_locationgroupcategory ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_locationgroupcategory_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_locationredirect; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_locationredirect (
+ locationslug_ptr_id integer NOT NULL,
+ target_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_locationslug; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_locationslug (
+ id integer NOT NULL,
+ slug character varying(50)
+);
+
+
+--
+-- Name: mapdata_locationslug_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_locationslug ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_locationslug_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_mapupdate; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_mapupdate (
+ id integer NOT NULL,
+ datetime timestamp with time zone NOT NULL,
+ type character varying(32) NOT NULL,
+ processed boolean NOT NULL,
+ geometries_changed boolean NOT NULL,
+ user_id integer
+);
+
+
+--
+-- Name: mapdata_mapupdate_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_mapupdate ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_mapupdate_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_obstacle; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_obstacle (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ height numeric(6,2) NOT NULL,
+ space_id integer NOT NULL,
+ import_tag character varying(64),
+ altitude numeric(6,2) NOT NULL,
+ group_id integer
+);
+
+
+--
+-- Name: mapdata_obstacle_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_obstacle ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_obstacle_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_obstaclegroup; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_obstaclegroup (
+ id integer NOT NULL,
+ titles jsonb NOT NULL,
+ color character varying(32),
+ in_legend boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_obstaclegroup_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_obstaclegroup ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_obstaclegroup_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_poi; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_poi (
+ locationslug_ptr_id integer NOT NULL,
+ titles jsonb NOT NULL,
+ can_search boolean NOT NULL,
+ can_describe boolean NOT NULL,
+ geometry jsonb NOT NULL,
+ access_restriction_id integer,
+ space_id integer NOT NULL,
+ import_tag character varying(64),
+ icon character varying(32),
+ label_overrides jsonb NOT NULL,
+ label_settings_id integer,
+ external_url character varying(200),
+ import_block_data boolean NOT NULL,
+ import_block_geom boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_poi_groups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_poi_groups (
+ id integer NOT NULL,
+ poi_id integer NOT NULL,
+ locationgroup_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_poi_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_poi_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_poi_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_position; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_position (
+ id integer NOT NULL,
+ name character varying(32) NOT NULL,
+ secret character varying(32) NOT NULL,
+ owner_id integer NOT NULL,
+ coordinates_id character varying(48),
+ last_coordinates_update timestamp with time zone,
+ timeout smallint NOT NULL,
+ CONSTRAINT mapdata_position_timeout_check CHECK ((timeout >= 0))
+);
+
+
+--
+-- Name: mapdata_position_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_position ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_position_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_ramp; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_ramp (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ space_id integer NOT NULL,
+ import_tag character varying(64)
+);
+
+
+--
+-- Name: mapdata_ramp_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_ramp ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_ramp_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_rangingbeacon; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_rangingbeacon (
+ id integer NOT NULL,
+ import_tag character varying(64),
+ geometry jsonb NOT NULL,
+ wifi_bssid character varying(17),
+ altitude numeric(6,2) NOT NULL,
+ comment text,
+ space_id integer NOT NULL,
+ bluetooth_address character varying(17),
+ ibeacon_major integer,
+ ibeacon_minor integer,
+ ibeacon_uuid uuid,
+ node_number smallint,
+ uwb_address character varying(23),
+ CONSTRAINT mapdata_rangingbeacon_ibeacon_major_check CHECK ((ibeacon_major >= 0)),
+ CONSTRAINT mapdata_rangingbeacon_ibeacon_minor_check CHECK ((ibeacon_minor >= 0)),
+ CONSTRAINT mapdata_rangingbeacon_node_number_check CHECK ((node_number >= 0))
+);
+
+
+--
+-- Name: mapdata_rangingbeacon_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_rangingbeacon ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_rangingbeacon_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_report; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_report (
+ id integer NOT NULL,
+ created timestamp with time zone NOT NULL,
+ category character varying(20) NOT NULL,
+ open boolean NOT NULL,
+ last_update timestamp with time zone NOT NULL,
+ title character varying(100) NOT NULL,
+ description text NOT NULL,
+ coordinates_id character varying(48),
+ origin_id character varying(48),
+ destination_id character varying(48),
+ route_options character varying(128),
+ titles jsonb NOT NULL,
+ secret character varying(32) NOT NULL,
+ assigned_to_id integer,
+ author_id integer,
+ location_id integer,
+ import_tag character varying(256)
+);
+
+
+--
+-- Name: mapdata_report_created_groups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_report_created_groups (
+ id integer NOT NULL,
+ report_id integer NOT NULL,
+ locationgroup_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_report_created_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_report_created_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_report_created_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_report_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_report ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_report_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_reportupdate; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_reportupdate (
+ id integer NOT NULL,
+ datetime timestamp with time zone NOT NULL,
+ open boolean,
+ comment text NOT NULL,
+ public boolean NOT NULL,
+ assigned_to_id integer,
+ author_id integer,
+ report_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_reportupdate_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_reportupdate ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_reportupdate_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_source; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_source (
+ id integer NOT NULL,
+ bottom numeric(6,2) NOT NULL,
+ "left" numeric(6,2) NOT NULL,
+ top numeric(6,2) NOT NULL,
+ "right" numeric(6,2) NOT NULL,
+ name character varying(50) NOT NULL,
+ access_restriction_id integer
+);
+
+
+--
+-- Name: mapdata_source_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_source ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_source_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_space; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_space (
+ locationslug_ptr_id integer NOT NULL,
+ titles jsonb NOT NULL,
+ can_search boolean NOT NULL,
+ can_describe boolean NOT NULL,
+ geometry jsonb NOT NULL,
+ height numeric(6,2),
+ outside boolean NOT NULL,
+ enter_description_i18n jsonb NOT NULL,
+ base_mapdata_accessible boolean NOT NULL,
+ access_restriction_id integer,
+ level_id integer NOT NULL,
+ import_tag character varying(64),
+ icon character varying(32),
+ label_overrides jsonb NOT NULL,
+ label_settings_id integer,
+ external_url character varying(200),
+ import_block_data boolean NOT NULL,
+ import_block_geom boolean NOT NULL
+);
+
+
+--
+-- Name: mapdata_space_groups; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_space_groups (
+ id integer NOT NULL,
+ space_id integer NOT NULL,
+ locationgroup_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_space_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_space_groups ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_space_groups_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_stair; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_stair (
+ id integer NOT NULL,
+ geometry jsonb NOT NULL,
+ space_id integer NOT NULL,
+ import_tag character varying(64)
+);
+
+
+--
+-- Name: mapdata_stair_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_stair ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_stair_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_theme; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_theme (
+ id integer NOT NULL,
+ titles jsonb NOT NULL,
+ description text NOT NULL,
+ public boolean NOT NULL,
+ color_background character varying(32) NOT NULL,
+ color_wall_fill character varying(32) NOT NULL,
+ color_wall_border character varying(32) NOT NULL,
+ color_door_fill character varying(32) NOT NULL,
+ color_ground_fill character varying(32) NOT NULL,
+ color_obstacles_default_fill character varying(32) NOT NULL,
+ color_obstacles_default_border character varying(32) NOT NULL,
+ last_updated timestamp with time zone NOT NULL,
+ color_css_grid character varying(32) NOT NULL,
+ color_css_header_background character varying(32) NOT NULL,
+ color_css_header_text character varying(32) NOT NULL,
+ color_css_header_text_hover character varying(32) NOT NULL,
+ color_css_initial character varying(32) NOT NULL,
+ color_css_modal_backdrop character varying(32) NOT NULL,
+ color_css_overlay_background character varying(32) NOT NULL,
+ color_css_primary character varying(32) NOT NULL,
+ color_css_quaternary character varying(32) NOT NULL,
+ color_css_quinary character varying(32) NOT NULL,
+ color_css_route_dots_shadow character varying(32) NOT NULL,
+ color_css_secondary character varying(32) NOT NULL,
+ color_css_shadow character varying(32) NOT NULL,
+ color_css_tertiary character varying(32) NOT NULL,
+ color_logo text NOT NULL,
+ dark boolean NOT NULL,
+ "default" boolean NOT NULL,
+ extra_css text NOT NULL,
+ funky boolean NOT NULL,
+ high_contrast boolean NOT NULL,
+ randomize_primary_color boolean NOT NULL,
+ icon_path character varying(255) NOT NULL,
+ leaflet_marker_config text NOT NULL
+);
+
+
+--
+-- Name: mapdata_theme_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_theme ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_theme_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_themelocationgroupbackgroundcolor; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_themelocationgroupbackgroundcolor (
+ id integer NOT NULL,
+ fill_color character varying(32),
+ border_color character varying(32),
+ location_group_id integer,
+ theme_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_themelocationgroupbackgroundcolor_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_themelocationgroupbackgroundcolor ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_themelocationgroupbackgroundcolor_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_themeobstaclegroupbackgroundcolor; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_themeobstaclegroupbackgroundcolor (
+ id integer NOT NULL,
+ fill_color character varying(32),
+ border_color character varying(32),
+ obstacle_group_id integer,
+ theme_id integer NOT NULL
+);
+
+
+--
+-- Name: mapdata_themeobstaclegroupbackgroundcolor_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_themeobstaclegroupbackgroundcolor ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_themeobstaclegroupbackgroundcolor_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_waytype; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mapdata_waytype (
+ id integer NOT NULL,
+ titles jsonb NOT NULL,
+ titles_plural jsonb NOT NULL,
+ join_edges boolean NOT NULL,
+ up_separate boolean NOT NULL,
+ walk boolean NOT NULL,
+ color character varying(32) NOT NULL,
+ icon_name character varying(32),
+ extra_seconds smallint NOT NULL,
+ speed numeric(3,1) NOT NULL,
+ description_i18n jsonb NOT NULL,
+ speed_up numeric(3,1) NOT NULL,
+ description_up_i18n jsonb NOT NULL,
+ level_change_description_i18n jsonb NOT NULL,
+ CONSTRAINT mapdata_waytype_extra_seconds_check CHECK ((extra_seconds >= 0))
+);
+
+
+--
+-- Name: mapdata_waytype_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_waytype ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_waytype_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mapdata_wifimeasurement_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mapdata_beaconmeasurement ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mapdata_wifimeasurement_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mesh_firmwarebuild; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mesh_firmwarebuild (
+ id integer NOT NULL,
+ variant character varying(64) NOT NULL,
+ chip smallint NOT NULL,
+ sha256_hash character varying(64) NOT NULL,
+ project_description jsonb NOT NULL,
+ "binary" character varying(100),
+ version_id integer NOT NULL
+);
+
+
+--
+-- Name: mesh_firmwarebuild_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mesh_firmwarebuild ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mesh_firmwarebuild_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mesh_firmwarebuildboard; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mesh_firmwarebuildboard (
+ id integer NOT NULL,
+ board character varying(32) NOT NULL,
+ build_id integer NOT NULL
+);
+
+
+--
+-- Name: mesh_firmwarebuildboard_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mesh_firmwarebuildboard ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mesh_firmwarebuildboard_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mesh_firmwareversion; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mesh_firmwareversion (
+ id integer NOT NULL,
+ project_name character varying(32) NOT NULL,
+ version character varying(32) NOT NULL,
+ idf_version character varying(32) NOT NULL,
+ created timestamp with time zone NOT NULL,
+ uploader_id integer
+);
+
+
+--
+-- Name: mesh_firmwareversion_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mesh_firmwareversion ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mesh_firmwareversion_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mesh_meshnode; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mesh_meshnode (
+ address character varying(17) NOT NULL,
+ first_seen timestamp with time zone NOT NULL,
+ last_signin timestamp with time zone,
+ uplink_id integer,
+ upstream_id character varying(17)
+);
+
+
+--
+-- Name: mesh_meshuplink; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mesh_meshuplink (
+ id integer NOT NULL,
+ name character varying(128) NOT NULL,
+ started timestamp with time zone NOT NULL,
+ last_ping timestamp with time zone NOT NULL,
+ end_reason character varying(16),
+ node_id character varying(17) NOT NULL
+);
+
+
+--
+-- Name: mesh_meshuplink_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mesh_meshuplink ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mesh_meshuplink_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mesh_nodemessage; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mesh_nodemessage (
+ id integer NOT NULL,
+ datetime timestamp with time zone NOT NULL,
+ data jsonb NOT NULL,
+ src_node_id character varying(17) NOT NULL,
+ message_type character varying(24) NOT NULL,
+ uplink_id integer NOT NULL
+);
+
+
+--
+-- Name: mesh_nodemessage_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mesh_nodemessage ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mesh_nodemessage_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mesh_otaupdate; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mesh_otaupdate (
+ id integer NOT NULL,
+ created timestamp with time zone NOT NULL,
+ build_id integer NOT NULL
+);
+
+
+--
+-- Name: mesh_otaupdate_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mesh_otaupdate ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mesh_otaupdate_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: mesh_otaupdaterecipient; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.mesh_otaupdaterecipient (
+ id integer NOT NULL,
+ node_id character varying(17) NOT NULL,
+ update_id integer NOT NULL,
+ status character varying(10) NOT NULL
+);
+
+
+--
+-- Name: mesh_otaupdaterecipient_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.mesh_otaupdaterecipient ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.mesh_otaupdaterecipient_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: routing_routeoptions; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.routing_routeoptions (
+ user_id integer NOT NULL,
+ data jsonb NOT NULL
+);
+
+
+--
+-- Name: site_announcement; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.site_announcement (
+ id integer NOT NULL,
+ created timestamp with time zone NOT NULL,
+ active_until timestamp with time zone,
+ active boolean NOT NULL,
+ author_id integer,
+ text_i18n jsonb NOT NULL
+);
+
+
+--
+-- Name: site_announcement_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.site_announcement ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.site_announcement_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Name: site_siteupdate; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.site_siteupdate (
+ id integer NOT NULL,
+ created timestamp with time zone NOT NULL
+);
+
+
+--
+-- Name: site_siteupdate_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+ALTER TABLE public.site_siteupdate ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
+ SEQUENCE NAME public.site_siteupdate_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1
+);
+
+
+--
+-- Data for Name: api_logintoken; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.api_logintoken (id, secret, session_auth_hash, user_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: api_secret; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.api_secret (id, name, created, api_secret, readonly, scope_grant_permissions, scope_editor, scope_mesh, valid_until, user_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: auth_group; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.auth_group (id, name) FROM stdin;
+\.
+
+
+--
+-- Data for Name: auth_group_permissions; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.auth_group_permissions (id, group_id, permission_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: auth_permission; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.auth_permission (id, name, content_type_id, codename) FROM stdin;
+1 Can add log entry 1 add_logentry
+2 Can change log entry 1 change_logentry
+3 Can delete log entry 1 delete_logentry
+4 Can view log entry 1 view_logentry
+5 Can add permission 2 add_permission
+6 Can change permission 2 change_permission
+7 Can delete permission 2 delete_permission
+8 Can view permission 2 view_permission
+9 Can add group 3 add_group
+10 Can change group 3 change_group
+11 Can delete group 3 delete_group
+12 Can view group 3 view_group
+13 Can add user 4 add_user
+14 Can change user 4 change_user
+15 Can delete user 4 delete_user
+16 Can view user 4 view_user
+17 Can add content type 5 add_contenttype
+18 Can change content type 5 change_contenttype
+19 Can delete content type 5 delete_contenttype
+20 Can view content type 5 view_contenttype
+21 Can add session 6 add_session
+22 Can change session 6 change_session
+23 Can delete session 6 delete_session
+24 Can view session 6 view_session
+25 Can add login tokens 7 add_logintoken
+26 Can change login tokens 7 change_logintoken
+27 Can delete login tokens 7 delete_logintoken
+28 Can view login tokens 7 view_logintoken
+29 Can add API secret 8 add_secret
+30 Can change API secret 8 change_secret
+31 Can delete API secret 8 delete_secret
+32 Can view API secret 8 view_secret
+33 Can add Access Permission 9 add_accesspermission
+34 Can change Access Permission 9 change_accesspermission
+35 Can delete Access Permission 9 delete_accesspermission
+36 Can view Access Permission 9 view_accesspermission
+37 Can add Access Permission Token 10 add_accesspermissiontoken
+38 Can change Access Permission Token 10 change_accesspermissiontoken
+39 Can delete Access Permission Token 10 delete_accesspermissiontoken
+40 Can view Access Permission Token 10 view_accesspermissiontoken
+41 Can add Access Restriction 11 add_accessrestriction
+42 Can change Access Restriction 11 change_accessrestriction
+43 Can delete Access Restriction 11 delete_accessrestriction
+44 Can view Access Restriction 11 view_accessrestriction
+45 Can add Access Restriction Group 12 add_accessrestrictiongroup
+46 Can change Access Restriction Group 12 change_accessrestrictiongroup
+47 Can delete Access Restriction Group 12 delete_accessrestrictiongroup
+48 Can view Access Restriction Group 12 view_accessrestrictiongroup
+49 Can add Altitude Area 13 add_altitudearea
+50 Can change Altitude Area 13 change_altitudearea
+51 Can delete Altitude Area 13 delete_altitudearea
+52 Can view Altitude Area 13 view_altitudearea
+53 Can add Altitude Marker 14 add_altitudemarker
+54 Can change Altitude Marker 14 change_altitudemarker
+55 Can delete Altitude Marker 14 delete_altitudemarker
+56 Can view Altitude Marker 14 view_altitudemarker
+57 Can add Building 15 add_building
+58 Can change Building 15 change_building
+59 Can delete Building 15 delete_building
+60 Can view Building 15 view_building
+61 Can add Column 16 add_column
+62 Can change Column 16 change_column
+63 Can delete Column 16 delete_column
+64 Can view Column 16 view_column
+65 Can add Cross description 17 add_crossdescription
+66 Can change Cross description 17 change_crossdescription
+67 Can delete Cross description 17 delete_crossdescription
+68 Can view Cross description 17 view_crossdescription
+69 Can add Door 18 add_door
+70 Can change Door 18 change_door
+71 Can delete Door 18 delete_door
+72 Can view Door 18 view_door
+73 Can add Graph Edge 19 add_graphedge
+74 Can change Graph Edge 19 change_graphedge
+75 Can delete Graph Edge 19 delete_graphedge
+76 Can view Graph Edge 19 view_graphedge
+77 Can add Graph Node 20 add_graphnode
+78 Can change Graph Node 20 change_graphnode
+79 Can delete Graph Node 20 delete_graphnode
+80 Can view Graph Node 20 view_graphnode
+81 Can add Hole 21 add_hole
+82 Can change Hole 21 change_hole
+83 Can delete Hole 21 delete_hole
+84 Can view Hole 21 view_hole
+85 Can add Leave description 22 add_leavedescription
+86 Can change Leave description 22 change_leavedescription
+87 Can delete Leave description 22 delete_leavedescription
+88 Can view Leave description 22 view_leavedescription
+89 Can add Line Obstacle 23 add_lineobstacle
+90 Can change Line Obstacle 23 change_lineobstacle
+91 Can delete Line Obstacle 23 delete_lineobstacle
+92 Can view Line Obstacle 23 view_lineobstacle
+93 Can add Location Group Category 24 add_locationgroupcategory
+94 Can change Location Group Category 24 change_locationgroupcategory
+95 Can delete Location Group Category 24 delete_locationgroupcategory
+96 Can view Location Group Category 24 view_locationgroupcategory
+97 Can add Location with Slug 25 add_locationslug
+98 Can change Location with Slug 25 change_locationslug
+99 Can delete Location with Slug 25 delete_locationslug
+100 Can view Location with Slug 25 view_locationslug
+101 Can add Map update 26 add_mapupdate
+102 Can change Map update 26 change_mapupdate
+103 Can delete Map update 26 delete_mapupdate
+104 Can view Map update 26 view_mapupdate
+105 Can add Obstacle 27 add_obstacle
+106 Can change Obstacle 27 change_obstacle
+107 Can delete Obstacle 27 delete_obstacle
+108 Can view Obstacle 27 view_obstacle
+109 Can add Ramp 28 add_ramp
+110 Can change Ramp 28 change_ramp
+111 Can delete Ramp 28 delete_ramp
+112 Can view Ramp 28 view_ramp
+113 Can add Source 29 add_source
+114 Can change Source 29 change_source
+115 Can delete Source 29 delete_source
+116 Can view Source 29 view_source
+117 Can add Stair 30 add_stair
+118 Can change Stair 30 change_stair
+119 Can delete Stair 30 delete_stair
+120 Can view Stair 30 view_stair
+121 Can add Way Type 31 add_waytype
+122 Can change Way Type 31 change_waytype
+123 Can delete Way Type 31 delete_waytype
+124 Can view Way Type 31 view_waytype
+125 Can add Area 32 add_area
+126 Can change Area 32 change_area
+127 Can delete Area 32 delete_area
+128 Can view Area 32 view_area
+129 Can add Level 33 add_level
+130 Can change Level 33 change_level
+131 Can delete Level 33 delete_level
+132 Can view Level 33 view_level
+133 Can add Location Group 34 add_locationgroup
+134 Can change Location Group 34 change_locationgroup
+135 Can delete Location Group 34 delete_locationgroup
+136 Can view Location Group 34 view_locationgroup
+137 Can add location redirect 35 add_locationredirect
+138 Can change location redirect 35 change_locationredirect
+139 Can delete location redirect 35 delete_locationredirect
+140 Can view location redirect 35 view_locationredirect
+141 Can add Point of Interest 36 add_poi
+142 Can change Point of Interest 36 change_poi
+143 Can delete Point of Interest 36 delete_poi
+144 Can view Point of Interest 36 view_poi
+145 Can add Space 37 add_space
+146 Can change Space 37 change_space
+147 Can delete Space 37 delete_space
+148 Can view Space 37 view_space
+149 Can add Label Settings 38 add_labelsettings
+150 Can change Label Settings 38 change_labelsettings
+151 Can delete Label Settings 38 delete_labelsettings
+152 Can view Label Settings 38 view_labelsettings
+153 Can add Report 39 add_report
+154 Can change Report 39 change_report
+155 Can delete Report 39 delete_report
+156 Can view Report 39 view_report
+157 Can add Report update 40 add_reportupdate
+158 Can change Report update 40 change_reportupdate
+159 Can delete Report update 40 delete_reportupdate
+160 Can view Report update 40 view_reportupdate
+161 Can add Dynamic position 41 add_position
+162 Can change Dynamic position 41 change_position
+163 Can delete Dynamic position 41 delete_position
+164 Can view Dynamic position 41 view_position
+165 Can add Dynamic location 42 add_dynamiclocation
+166 Can change Dynamic location 42 change_dynamiclocation
+167 Can delete Dynamic location 42 delete_dynamiclocation
+168 Can view Dynamic location 42 view_dynamiclocation
+169 Can add Ranging beacon 43 add_rangingbeacon
+170 Can change Ranging beacon 43 change_rangingbeacon
+171 Can delete Ranging beacon 43 delete_rangingbeacon
+172 Can view Ranging beacon 43 view_rangingbeacon
+173 Can add Ground Altitude 44 add_groundaltitude
+174 Can change Ground Altitude 44 change_groundaltitude
+175 Can delete Ground Altitude 44 delete_groundaltitude
+176 Can view Ground Altitude 44 view_groundaltitude
+177 Can add Obstacle Group 45 add_obstaclegroup
+178 Can change Obstacle Group 45 change_obstaclegroup
+179 Can delete Obstacle Group 45 delete_obstaclegroup
+180 Can view Obstacle Group 45 view_obstaclegroup
+181 Can add Theme 46 add_theme
+182 Can change Theme 46 change_theme
+183 Can delete Theme 46 delete_theme
+184 Can view Theme 46 view_theme
+185 Can add theme obstacle group background color 47 add_themeobstaclegroupbackgroundcolor
+186 Can change theme obstacle group background color 47 change_themeobstaclegroupbackgroundcolor
+187 Can delete theme obstacle group background color 47 delete_themeobstaclegroupbackgroundcolor
+188 Can view theme obstacle group background color 47 view_themeobstaclegroupbackgroundcolor
+189 Can add theme location group background color 48 add_themelocationgroupbackgroundcolor
+190 Can change theme location group background color 48 change_themelocationgroupbackgroundcolor
+191 Can delete theme location group background color 48 delete_themelocationgroupbackgroundcolor
+192 Can view theme location group background color 48 view_themelocationgroupbackgroundcolor
+193 Can add Beacon Measurement 49 add_beaconmeasurement
+194 Can change Beacon Measurement 49 change_beaconmeasurement
+195 Can delete Beacon Measurement 49 delete_beaconmeasurement
+196 Can view Beacon Measurement 49 view_beaconmeasurement
+197 Can add Route options 50 add_routeoptions
+198 Can change Route options 50 change_routeoptions
+199 Can delete Route options 50 delete_routeoptions
+200 Can view Route options 50 view_routeoptions
+201 Can add Announcement 51 add_announcement
+202 Can change Announcement 51 change_announcement
+203 Can delete Announcement 51 delete_announcement
+204 Can view Announcement 51 view_announcement
+205 Can add Site update 52 add_siteupdate
+206 Can change Site update 52 change_siteupdate
+207 Can delete Site update 52 delete_siteupdate
+208 Can view Site update 52 view_siteupdate
+209 Can add User Permissions 53 add_userpermissions
+210 Can change User Permissions 53 change_userpermissions
+211 Can delete User Permissions 53 delete_userpermissions
+212 Can view User Permissions 53 view_userpermissions
+213 Can add user space access 54 add_userspaceaccess
+214 Can change user space access 54 change_userspaceaccess
+215 Can delete user space access 54 delete_userspaceaccess
+216 Can view user space access 54 view_userspaceaccess
+217 Can add mesh node 55 add_meshnode
+218 Can change mesh node 55 change_meshnode
+219 Can delete mesh node 55 delete_meshnode
+220 Can view mesh node 55 view_meshnode
+221 Can add node message 56 add_nodemessage
+222 Can change node message 56 change_nodemessage
+223 Can delete node message 56 delete_nodemessage
+224 Can view node message 56 view_nodemessage
+225 Can add firmware build 57 add_firmwarebuild
+226 Can change firmware build 57 change_firmwarebuild
+227 Can delete firmware build 57 delete_firmwarebuild
+228 Can view firmware build 57 view_firmwarebuild
+229 Can add firmware build board 58 add_firmwarebuildboard
+230 Can change firmware build board 58 change_firmwarebuildboard
+231 Can delete firmware build board 58 delete_firmwarebuildboard
+232 Can view firmware build board 58 view_firmwarebuildboard
+233 Can add firmware version 59 add_firmwareversion
+234 Can change firmware version 59 change_firmwareversion
+235 Can delete firmware version 59 delete_firmwareversion
+236 Can view firmware version 59 view_firmwareversion
+237 Can add mesh uplink 60 add_meshuplink
+238 Can change mesh uplink 60 change_meshuplink
+239 Can delete mesh uplink 60 delete_meshuplink
+240 Can view mesh uplink 60 view_meshuplink
+241 Can add ota update 61 add_otaupdate
+242 Can change ota update 61 change_otaupdate
+243 Can delete ota update 61 delete_otaupdate
+244 Can view ota update 61 view_otaupdate
+245 Can add ota update recipient 62 add_otaupdaterecipient
+246 Can change ota update recipient 62 change_otaupdaterecipient
+247 Can delete ota update recipient 62 delete_otaupdaterecipient
+248 Can view ota update recipient 62 view_otaupdaterecipient
+249 Can add Changed object 63 add_changedobject
+250 Can change Changed object 63 change_changedobject
+251 Can delete Changed object 63 delete_changedobject
+252 Can view Changed object 63 view_changedobject
+253 Can add Change Set 64 add_changeset
+254 Can change Change Set 64 change_changeset
+255 Can delete Change Set 64 delete_changeset
+256 Can view Change Set 64 view_changeset
+257 Can add Change set update 65 add_changesetupdate
+258 Can change Change set update 65 change_changesetupdate
+259 Can delete Change set update 65 delete_changesetupdate
+260 Can view Change set update 65 view_changesetupdate
+261 Can add Access Permission SSO Grant 66 add_accesspermissionssogrant
+262 Can change Access Permission SSO Grant 66 change_accesspermissionssogrant
+263 Can delete Access Permission SSO Grant 66 delete_accesspermissionssogrant
+264 Can view Access Permission SSO Grant 66 view_accesspermissionssogrant
+\.
+
+
+--
+-- Data for Name: auth_user_groups; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.auth_user_groups (id, user_id, group_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: auth_user_user_permissions; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.auth_user_user_permissions (id, user_id, permission_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: control_userpermissions; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.control_userpermissions (user_id, review_changesets, direct_edit, control_panel, grant_permissions, manage_announcements, grant_all_access, max_changeset_changes, base_mapdata_access, editor_access, grant_space_access, manage_map_updates, review_all_reports, mesh_control, grant_unlimited_access, nonpublic_themes, sources_access) FROM stdin;
+\.
+
+
+--
+-- Data for Name: control_userpermissions_review_group_reports; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.control_userpermissions_review_group_reports (id, userpermissions_id, locationgroup_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: control_userspaceaccess; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.control_userspaceaccess (id, can_edit, space_id, user_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: django_admin_log; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: django_content_type; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.django_content_type (id, app_label, model) FROM stdin;
+1 admin logentry
+2 auth permission
+3 auth group
+4 auth user
+5 contenttypes contenttype
+6 sessions session
+7 api logintoken
+8 api secret
+9 mapdata accesspermission
+10 mapdata accesspermissiontoken
+11 mapdata accessrestriction
+12 mapdata accessrestrictiongroup
+13 mapdata altitudearea
+14 mapdata altitudemarker
+15 mapdata building
+16 mapdata column
+17 mapdata crossdescription
+18 mapdata door
+19 mapdata graphedge
+20 mapdata graphnode
+21 mapdata hole
+22 mapdata leavedescription
+23 mapdata lineobstacle
+24 mapdata locationgroupcategory
+25 mapdata locationslug
+26 mapdata mapupdate
+27 mapdata obstacle
+28 mapdata ramp
+29 mapdata source
+30 mapdata stair
+31 mapdata waytype
+32 mapdata area
+33 mapdata level
+34 mapdata locationgroup
+35 mapdata locationredirect
+36 mapdata poi
+37 mapdata space
+38 mapdata labelsettings
+39 mapdata report
+40 mapdata reportupdate
+41 mapdata position
+42 mapdata dynamiclocation
+43 mapdata rangingbeacon
+44 mapdata groundaltitude
+45 mapdata obstaclegroup
+46 mapdata theme
+47 mapdata themeobstaclegroupbackgroundcolor
+48 mapdata themelocationgroupbackgroundcolor
+49 mapdata beaconmeasurement
+50 routing routeoptions
+51 site announcement
+52 site siteupdate
+53 control userpermissions
+54 control userspaceaccess
+55 mesh meshnode
+56 mesh nodemessage
+57 mesh firmwarebuild
+58 mesh firmwarebuildboard
+59 mesh firmwareversion
+60 mesh meshuplink
+61 mesh otaupdate
+62 mesh otaupdaterecipient
+63 editor changedobject
+64 editor changeset
+65 editor changesetupdate
+66 mapdata accesspermissionssogrant
+\.
+
+
+--
+-- Data for Name: django_migrations; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.django_migrations (id, app, name, applied) FROM stdin;
+1 contenttypes 0001_initial 2024-08-27 09:57:42.723509+00
+2 auth 0001_initial 2024-08-27 09:57:42.885499+00
+3 admin 0001_initial 2024-08-27 09:57:42.927278+00
+4 admin 0002_logentry_remove_auto_add 2024-08-27 09:57:42.939178+00
+5 admin 0003_logentry_add_action_flag_choices 2024-08-27 09:57:42.951548+00
+6 mapdata 0001_squashed_refactor_2017 2024-08-27 09:57:45.7437+00
+7 mapdata 0002_locationredirect 2024-08-27 09:57:45.754826+00
+8 mapdata 0003_space_outside 2024-08-27 09:57:45.758164+00
+9 mapdata 0004_space_level_category_name 2024-08-27 09:57:45.761399+00
+10 mapdata 0005_auto_20170527_1556 2024-08-27 09:57:45.764762+00
+11 mapdata 0006_remove_section_name 2024-08-27 09:57:45.768032+00
+12 mapdata 0007_assign_hole_space 2024-08-27 09:57:45.771276+00
+13 mapdata 0008_auto_20170608_1317 2024-08-27 09:57:45.774513+00
+14 mapdata 0009_column 2024-08-27 09:57:45.777869+00
+15 mapdata 0010_on_top_of 2024-08-27 09:57:45.782128+00
+16 mapdata 0011_outside_only_outside 2024-08-27 09:57:45.78627+00
+17 mapdata 0012_rename_section_to_level 2024-08-27 09:57:45.79037+00
+18 mapdata 0013_auto_20170618_1934 2024-08-27 09:57:45.794617+00
+19 mapdata 0014_mapupdate 2024-08-27 09:57:45.798823+00
+20 mapdata 0015_auto_20170706_1334 2024-08-27 09:57:45.803036+00
+21 mapdata 0016_remove_source_image 2024-08-27 09:57:45.807201+00
+22 mapdata 0017_point_to_poi 2024-08-27 09:57:45.811312+00
+23 mapdata 0018_auto_20170708_1752 2024-08-27 09:57:45.814525+00
+24 mapdata 0019_location_group_category 2024-08-27 09:57:45.817789+00
+25 mapdata 0020_auto_20170710_1848 2024-08-27 09:57:45.821055+00
+26 mapdata 0021_auto_20170710_1916 2024-08-27 09:57:45.824314+00
+27 mapdata 0022_remove_space_category 2024-08-27 09:57:45.827552+00
+28 mapdata 0023_auto_20170711_1741 2024-08-27 09:57:45.830785+00
+29 mapdata 0024_remove_compiled_room_area 2024-08-27 09:57:45.834138+00
+30 mapdata 0025_remove_area_stuffed 2024-08-27 09:57:45.838237+00
+31 mapdata 0026_remove_specificlocation_color 2024-08-27 09:57:45.84236+00
+32 mapdata 0027_access_restriction 2024-08-27 09:57:45.84653+00
+33 mapdata 0028_door_access_restriction 2024-08-27 09:57:45.850662+00
+34 mapdata 0029_auto_20170714_1519 2024-08-27 09:57:45.854964+00
+35 mapdata 0030_altitudes 2024-08-27 09:57:45.859161+00
+36 mapdata 0031_auto_20170805_1647 2024-08-27 09:57:45.863259+00
+37 mapdata 0032_remove_graphnode_space_transfer 2024-08-27 09:57:45.86736+00
+38 mapdata 0033_auto_20170807_1423 2024-08-27 09:57:45.870573+00
+39 mapdata 0034_auto_20170807_1523 2024-08-27 09:57:45.873837+00
+40 mapdata 0035_auto_20170916_1216 2024-08-27 09:57:45.877044+00
+41 mapdata 0036_geometry_bounds 2024-08-27 09:57:45.880205+00
+42 mapdata 0037_level_geoms_cache 2024-08-27 09:57:45.883408+00
+43 mapdata 0038_level_render_data 2024-08-27 09:57:45.886609+00
+44 mapdata 0039_auto_20171024_2011 2024-08-27 09:57:45.889873+00
+45 mapdata 0040_access_permissions 2024-08-27 09:57:45.893103+00
+46 mapdata 0041_level_short_label 2024-08-27 09:57:45.897411+00
+47 mapdata 0042_auto_20171031_1507 2024-08-27 09:57:45.901581+00
+48 mapdata 0043_auto_20171110_1451 2024-08-27 09:57:45.90589+00
+49 mapdata 0044_mapupdate_processed 2024-08-27 09:57:45.910066+00
+50 mapdata 0045_level_door_height 2024-08-27 09:57:45.914284+00
+51 mapdata 0046_remove_level_render_data 2024-08-27 09:57:45.918428+00
+52 mapdata 0047_remove_mapupdate_changed_geometries 2024-08-27 09:57:45.922651+00
+53 mapdata 0048_ramp 2024-08-27 09:57:45.926913+00
+54 mapdata 0049_altitude_area_ramp 2024-08-27 09:57:45.930145+00
+55 mapdata 0050_remove_geometry_bounds 2024-08-27 09:57:45.93336+00
+56 mapdata 0051_auto_20171125_1241 2024-08-27 09:57:45.936629+00
+57 mapdata 0052_auto_20171125_1335 2024-08-27 09:57:45.939862+00
+58 mapdata 0053_i18nfield 2024-08-27 09:57:45.943067+00
+59 mapdata 0054_title_plural 2024-08-27 09:57:45.94637+00
+60 mapdata 0055_grant_access_permissions 2024-08-27 09:57:45.94959+00
+61 mapdata 0056_accesspermissiontoken 2024-08-27 09:57:45.952916+00
+62 mapdata 0057_waytype_fields 2024-08-27 09:57:45.957066+00
+63 mapdata 0058_wifimeasurement 2024-08-27 09:57:45.961135+00
+64 mapdata 0059_multiple_accesspermissions 2024-08-27 09:57:45.965397+00
+65 mapdata 0060_access_permission_id 2024-08-27 09:57:45.969543+00
+66 mapdata 0061_space_based_route_descriptions 2024-08-27 09:57:45.973869+00
+67 mapdata 0062_typos 2024-08-27 09:57:45.978108+00
+68 mapdata 0063_descriptions_unique_together 2024-08-27 09:57:45.982313+00
+69 mapdata 0064_access_permission_unique_key 2024-08-27 09:57:45.986325+00
+70 mapdata 0065_access_restriction_group 2024-08-27 09:57:45.989467+00
+71 mapdata 0066_area_slow_down_factor 2024-08-27 09:57:45.992632+00
+72 mapdata 0067_space_enter_description 2024-08-27 09:57:45.995857+00
+73 mapdata 0068_waytype_level_change_description 2024-08-27 09:57:45.998946+00
+74 mapdata 0069_mapupdate_geometries_changed 2024-08-27 09:57:46.002113+00
+75 mapdata 0070_auto_20180918_1736 2024-08-27 09:57:46.005299+00
+76 mapdata 0071_space_base_mapdata_accessible 2024-08-27 09:57:46.008532+00
+77 mapdata 0002_fix_broken_spaces 2024-08-27 09:57:46.063211+00
+78 mapdata 0003_column_access_restriction 2024-08-27 09:57:46.126575+00
+79 mapdata 0004_mapupdate_types 2024-08-27 09:57:46.143054+00
+80 mapdata 0005_geometry_import_tag 2024-08-27 09:57:46.575212+00
+81 mapdata 0006_location_icon 2024-08-27 09:57:46.733351+00
+82 mapdata 0007_location_group_help_text 2024-08-27 09:57:46.897828+00
+83 mapdata 0008_validate_slug 2024-08-27 09:57:46.920409+00
+84 mapdata 0072_make_wifi_measurement_author_nullable 2024-08-27 09:57:46.997022+00
+85 mapdata 0073_locationgroup_hierarchy 2024-08-27 09:57:47.034252+00
+86 mapdata 0074_show_labels 2024-08-27 09:57:47.20163+00
+87 mapdata 0075_label_settings 2024-08-27 09:57:47.806179+00
+88 mapdata 0076_obstacle_color 2024-08-27 09:57:48.251462+00
+89 mapdata 0077_obstacle_altitude 2024-08-27 09:57:48.319484+00
+90 mapdata 0078_reports 2024-08-27 09:57:48.733881+00
+91 mapdata 0079_auto_20191224_1858 2024-08-27 09:57:48.879595+00
+92 mapdata 0080_auto_20191224_2203 2024-08-27 09:57:48.942036+00
+93 mapdata 0081_auto_20191225_1015 2024-08-27 09:57:49.233043+00
+94 mapdata 0082_dynamiclocation_position 2024-08-27 09:57:49.454565+00
+95 mapdata 0083_auto_20191227_1642 2024-08-27 09:57:49.53827+00
+96 mapdata 0084_position_timeout 2024-08-27 09:57:49.562811+00
+97 mapdata 0085_locationgroupcategory_allow_dynamic_locations 2024-08-27 09:57:49.581141+00
+98 mapdata 0086_django_4_0 2024-08-27 09:57:53.433557+00
+99 contenttypes 0002_remove_content_type_name 2024-08-27 09:57:53.5103+00
+100 auth 0002_alter_permission_name_max_length 2024-08-27 09:57:53.575171+00
+101 auth 0003_alter_user_email_max_length 2024-08-27 09:57:53.599379+00
+102 auth 0004_alter_user_username_opts 2024-08-27 09:57:53.623728+00
+103 auth 0005_alter_user_last_login_null 2024-08-27 09:57:53.647635+00
+104 auth 0006_require_contenttypes_0002 2024-08-27 09:57:53.651058+00
+105 auth 0007_alter_validators_add_error_messages 2024-08-27 09:57:53.672943+00
+106 auth 0008_alter_user_username_max_length 2024-08-27 09:57:53.703935+00
+107 control 0001_initial 2024-08-27 09:57:53.777867+00
+108 control 0002_userpermissions_access_all 2024-08-27 09:57:53.802912+00
+109 control 0003_auto_20171210_1452 2024-08-27 09:57:53.827703+00
+110 control 0004_more_user_permissions 2024-08-27 09:57:53.893158+00
+111 control 0005_editor_mapdata_permissions 2024-08-27 09:57:53.942208+00
+112 control 0006_user_space_access 2024-08-27 09:57:54.104337+00
+113 control 0007_userpermissions_manage_map_updates 2024-08-27 09:57:54.242443+00
+114 control 0008_userpermissions_reports 2024-08-27 09:57:54.36221+00
+115 control 0009_django_4_0 2024-08-27 09:57:54.607086+00
+116 control 0010_userpermissions_mesh_control 2024-08-27 09:57:54.658528+00
+117 api 0001_initial 2024-08-27 09:57:54.737125+00
+118 api 0002_django_4_0 2024-08-27 09:57:54.802191+00
+119 api 0003_rename_token_logintoken_secret 2024-08-27 09:57:55.102916+00
+120 api 0004_alter_secret_name 2024-08-27 09:57:55.132302+00
+121 auth 0009_alter_user_last_name_max_length 2024-08-27 09:57:55.16147+00
+122 auth 0010_alter_group_name_max_length 2024-08-27 09:57:55.350028+00
+123 auth 0011_update_proxy_permissions 2024-08-27 09:57:55.41671+00
+124 auth 0012_alter_user_first_name_max_length 2024-08-27 09:57:55.444353+00
+125 control 0011_remove_userpermissions_api_secret 2024-08-27 09:57:55.492785+00
+126 control 0012_userpermissions_grant_unlimited_access 2024-08-27 09:57:55.541242+00
+127 control 0013_userpermissions_nonpublic_themes 2024-08-27 09:57:55.592623+00
+128 control 0014_userpermissions_sources_access 2024-08-27 09:57:55.644732+00
+129 editor 0001_initial 2024-08-27 09:57:56.597311+00
+130 editor 0002_auto_20170612_1615 2024-08-27 09:57:56.601125+00
+131 editor 0003_auto_20170618_1942 2024-08-27 09:57:56.604448+00
+132 editor 0004_auto_20170620_0934 2024-08-27 09:57:56.607744+00
+133 editor 0005_auto_20170627_0027 2024-08-27 09:57:56.610979+00
+134 editor 0006_auto_20170629_1222 2024-08-27 09:57:56.614322+00
+135 editor 0007_auto_20170629_1327 2024-08-27 09:57:56.618568+00
+136 editor 0008_auto_20170629_1450 2024-08-27 09:57:56.622841+00
+137 editor 0009_auto_20170701_1218 2024-08-27 09:57:56.627082+00
+138 editor 0010_auto_20170704_1431 2024-08-27 09:57:56.631272+00
+139 editor 0011_auto_20170704_1640 2024-08-27 09:57:56.635557+00
+140 editor 0012_remove_changeset_session_id 2024-08-27 09:57:56.63978+00
+141 editor 0013_remove_changesetupdate_session_user 2024-08-27 09:57:56.643985+00
+142 editor 0014_last_update_foreign_key 2024-08-27 09:57:56.64818+00
+143 editor 0015_changeset_last_state_update 2024-08-27 09:57:56.65161+00
+144 editor 0016_auto_20170705_1938 2024-08-27 09:57:56.655023+00
+145 editor 0017_changeset_map_update 2024-08-27 09:57:56.658389+00
+146 editor 0018_changeset_last_cleaned_with 2024-08-27 09:57:56.661636+00
+147 editor 0019_permissions 2024-08-27 09:57:56.664991+00
+148 editor 0020_remove_permissions 2024-08-27 09:57:56.668251+00
+149 editor 0021_auto_20180918_1736 2024-08-27 09:57:56.671549+00
+150 editor 0002_django_4_0 2024-08-27 09:57:57.034555+00
+151 editor 0003_changedobject_json_encoder 2024-08-27 09:57:57.054668+00
+152 mapdata 0087_rangingbeacon 2024-08-27 09:57:57.163656+00
+153 mapdata 0088_remove_position_api_secret 2024-08-27 09:57:57.195682+00
+154 mapdata 0089_groundaltitude 2024-08-27 09:57:57.485463+00
+155 mapdata 0090_alter_report_author 2024-08-27 09:57:57.558095+00
+156 mapdata 0091_area_main_point 2024-08-27 09:57:57.608702+00
+157 mapdata 0092_accesspermission_by_group 2024-08-27 09:57:57.94174+00
+158 mapdata 0093_public_accessrestriction 2024-08-27 09:57:57.997669+00
+159 mapdata 0094_hub_import_prepare 2024-08-27 09:57:58.272683+00
+160 mapdata 0095_import_block 2024-08-27 09:57:58.851733+00
+161 mapdata 0095_accesspermission_for_session 2024-08-27 09:57:59.045496+00
+162 mapdata 0096_merge_20231225_2216 2024-08-27 09:57:59.048283+00
+163 mapdata 0097_longer_import_tag 2024-08-27 09:57:59.686923+00
+164 mapdata 0098_report_import_tag 2024-08-27 09:57:59.740631+00
+165 mapdata 0099_theming 2024-08-27 09:58:00.180053+00
+166 mapdata 0100_obstaclegroup_color_data 2024-08-27 09:58:00.261418+00
+167 mapdata 0101_remove_obstacle_color 2024-08-27 09:58:00.343321+00
+168 mapdata 0102_rename_bssid_rangingbeacon_wifi_bssid_and_more 2024-08-27 09:58:00.744145+00
+169 mapdata 0103_report_flow_overhaul 2024-08-27 09:58:01.267908+00
+170 mapdata 0104_theme_color_css_grid_and_more 2024-08-27 09:58:01.451199+00
+171 mapdata 0105_alter_theme_color_background_and_more 2024-08-27 09:58:01.507173+00
+172 mapdata 0106_rename_wifi_to_beaconmeasurement 2024-08-27 09:58:01.778579+00
+173 mesh 0001_initial 2024-08-27 09:58:01.897982+00
+174 mesh 0002_alter_firmware_unique_together_meshnode_firmware_and_more 2024-08-27 09:58:01.941023+00
+175 mesh 0003_meshnode_name 2024-08-27 09:58:01.951991+00
+176 mesh 0004_relay_vs_src_node_and_remove_firmware 2024-08-27 09:58:02.211169+00
+177 mesh 0005_meshnode_last_signin 2024-08-27 09:58:02.220932+00
+178 mesh 0006_rename_route_meshnode_uplink 2024-08-27 09:58:02.244607+00
+179 mesh 0007_nodemessage_message_type_new 2024-08-27 09:58:02.370616+00
+180 mesh 0008_firmwarebuild_firmwarebuildboard_firmwareversion_and_more 2024-08-27 09:58:02.784016+00
+181 mesh 0009_meshuplink 2024-08-27 09:58:03.018144+00
+182 mesh 0010_otaupdate_otaupdaterecipient 2024-08-27 09:58:03.237301+00
+183 mesh 0011_meshnode_address_validate 2024-08-27 09:58:03.327313+00
+184 mesh 0012_otaupdaterecipient_status_and_more 2024-08-27 09:58:03.363442+00
+185 mesh 0013_meshnode_upstream_alter_nodemessage_message_type 2024-08-27 09:58:03.473797+00
+186 mesh 0014_remove_meshnode_name 2024-08-27 09:58:03.485254+00
+187 routing 0001_routeoptions 2024-08-27 09:58:03.590206+00
+188 routing 0002_django_4_0 2024-08-27 09:58:03.724786+00
+189 sessions 0001_initial 2024-08-27 09:58:03.753999+00
+190 site 0001_announcement 2024-08-27 09:58:03.773676+00
+191 site 0002_announcement_tweaks 2024-08-27 09:58:04.028622+00
+192 site 0003_siteupdate 2024-08-27 09:58:04.041775+00
+193 site 0004_siteupdate_tweaks 2024-08-27 09:58:04.048811+00
+194 site 0005_siteupdate_default_related_name 2024-08-27 09:58:04.055683+00
+195 site 0006_django_4_0 2024-08-27 09:58:04.145531+00
+196 mapdata 0001_squashed_2018 2024-08-27 09:58:04.152164+00
+197 editor 0001_squashed_2018 2024-08-27 09:58:04.15528+00
+198 mapdata 0107_altitudearea_multiple_points 2024-09-24 10:03:02.577602+00
+199 mapdata 0108_in_legend 2024-09-24 10:03:02.833749+00
+200 mapdata 0109_accesspermissionssogrant_accesspermission_sso_grant 2024-09-24 10:03:03.120676+00
+201 mapdata 0110_theme_icon_path_theme_leaflet_marker_config 2024-09-24 10:03:03.142018+00
+\.
+
+
+--
+-- Data for Name: django_session; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.django_session (session_key, session_data, expire_date) FROM stdin;
+amvzk9pgex1m82ry1kzdx25pszsej2or e30:1sisys:ZBLYTXPW4Mst-LCrO5xpvF3ncqA7l9oZVXwrhyE4wWQ 2024-09-10 09:59:18.364971+00
+4hovxfellnv5gkn8gvpjkg41m1723c50 e30:1snM7G:UekKIessh996E-RmJDoSZpNXjv1WZlcXCyTU2vebGSA 2024-09-22 17:54:26.072226+00
+dv9skqjm3ux1p9nluyuu56n5sso8xgh5 .eJxVjrkOwyAQRP9la8sCfHCU6fMNCHY3hhy2ZOMqyr8HSy6SdubN07zBh70kv2-8-kzgQELzm8WAD56Pgu5hnpYWl7msObYH0p7t1l4X4uflZP8EKWyprmM0QySpUXcChVRS4mCiMdwba6ymfuy0soMVo2aBpCjoUSlx642oy6CqFFM9wBsXcLIByitj8Uy55HkCV9adGyiJXwxOfL4COUZd:1sqV5O:ojREBcqoUHbyE-TRbY9cEXF3RPxC4y-kcAr3qboRQtU 2024-10-01 10:05:30.172933+00
+5xe6jji23iln8m5xvo0vyfe5eebi5chr e30:1st1ml:tbKISLK_GjatJxEjzSyqJJuDy4JDglctKtfWbCwkM_8 2024-10-08 09:24:43.211555+00
+fworhxwo4qsqrhlvpddnf6h59higwz3t e30:1sqU0l:MkZWje9AwTXlTXak9zAoh7yOKlrrR3xrEmhWTIyTD2I 2024-10-01 08:56:39.666121+00
+l8miuu132yek6hqkv38ae27nwbzpwhik e30:1sqU0l:MkZWje9AwTXlTXak9zAoh7yOKlrrR3xrEmhWTIyTD2I 2024-10-01 08:56:39.677817+00
+kbx8kfya72l81fzz9ii640h5n0lmwg9i eyJ0aGVtZSI6MH0:1st1ns:K_Y6Ur37_ksB3hSVBBU9porQ8g8jlxo4hlQVNUU_72w 2024-10-08 09:25:52.412981+00
+fwflkpv9b5xy8q72cbe6q429mfspzww7 .eJxNzDEKgDAMBdC7_NlFx16mBBuhGE1po0XEu1vRwfUN70TWzdhrsqhrgTuxaGA4TFSMi6FDJZl9ScyhceCJNnn5sCOx75uSiNafDY_tGkOz3JYcx-_HqnkhwXXdjEorUQ:1sne7R:51tDVOqUFko6t1YzgnBM3LNjJ0Y0SnT5HsKGu_qM614 2024-09-23 13:07:49.089044+00
+q8m07j89qos02p9auhqky6pp03ob2krz e30:1sngGx:7eKDZWGa-25u7FaYQlzNsrnrCUr5sMT1yK9cptHUN5E 2024-09-23 15:25:47.510524+00
+27nlikabtzgx9twchu43xq8s4r3rv1du e30:1sngGx:7eKDZWGa-25u7FaYQlzNsrnrCUr5sMT1yK9cptHUN5E 2024-09-23 15:25:47.562451+00
+vnbjrnbm0qrwaiu3b3zv1u5krc7lov49 e30:1sjbnL:theokb1P_6Ah1vG1iyD7OuL4Wa5hyLIr37tmMz-Yi9Q 2024-09-12 09:50:23.897761+00
+51wj5enr83qlh1y8m9gxfbvx2sqsgq07 e30:1sjbnL:theokb1P_6Ah1vG1iyD7OuL4Wa5hyLIr37tmMz-Yi9Q 2024-09-12 09:50:23.905553+00
+ei17awdyef1h0cf88icch72tt72l904x e30:1snIBI:6YTHXawaY6C4mhclD2aS52Mtplo71U1svQ0R1wgF1aQ 2024-09-22 13:42:20.810821+00
+kxjxyug1szrlfxmgpcqhzv22hwdsdfb7 e30:1snIBI:6YTHXawaY6C4mhclD2aS52Mtplo71U1svQ0R1wgF1aQ 2024-09-22 13:42:20.891774+00
+2sqgh1eez736yycp9ye1vfn57zpgr96z e30:1sngSo:82f8NvHNkGa6KiC_xppFSubGLpuWHpHvlAPlkblQrR4 2024-09-23 15:38:02.237571+00
+7c4pat9ia3590od8nnlkuyw5rqkkixtv e30:1sngSo:82f8NvHNkGa6KiC_xppFSubGLpuWHpHvlAPlkblQrR4 2024-09-23 15:38:02.347145+00
+fsunuzk5s3j41te85rqqzws0y3mt9ihl .eJxVjrkOwyAQRP9la8sCfHCU6fMNCHY3hhy2ZOMqyr8HSy6SdubN07zBh70kv2-8-kzgQELzm8WAD56Pgu5hnpYWl7msObYH0p7t1l4X4uflZP8EKWyprmM0QySpUXcChVRS4mCiMdwba6ymfuy0soMVo2aBpCjoUSlx642oy6CqtCR-MTjRAKZ6hTcu4FQDlFfG4plyyfMErqw7f77shEZe:1stlXP:u8QsfdZbgKrz7zquI3z3RuCNIFKLZyTZ9zrJCdBdSoU 2024-10-10 10:15:55.164456+00
+id9pv62xyn92ahnefr4210edrkodeuf3 e30:1sze1A:fFBWSCLSxkvcG4IUMiMWFzeoH5Lwbp1LQjRtIr4kR8Y 2024-10-26 15:26:56.468238+00
+rgyoqr9kt4q5hp2x1zkp1estiv1bzw5c e30:1t0Fne:EyQsIXzexCQvCqWzuahDcCWoXcV3ID9XQiT79fCRvFg 2024-10-28 07:47:30.932495+00
+ci83dj1uq0qyowc0kgld08nedz3zkzzi e30:1stibl:N7SVwoTd7Gn1cV1AClys4ydxGXZhZs4Ird7PTWdIBCA 2024-10-10 07:08:13.07702+00
+bqymqssw92jj8k67t1qb7jka29z7v8mc .eJxNzEEKgCAQQNG7zLpNLb2MSI4gWSM6JiLevYlctH18fodEhVFTZE9XBtXhJIugwJnMmBkWqCYcOkdEK2zRmRI-btwi6lXU3OTtz7bXQqAqluSS_D7_Mx3jAV-QKts:1t0GJi:QGcAJpkUuYtNynAmgbMEJKJaAsYtcyFlECfdH-m7Ugk 2024-10-28 08:20:38.207074+00
+oti396jz8a5is79ywv018b9c0yzyrv20 e30:1t2vKs:6_9G7fpVV5H9eGLlXMNIS--xw4zQDvdFhAuWkx_Imb0 2024-11-04 16:32:50.494131+00
+frh7shgsyutsdk76ko6va3adqhwl24pt e30:1t2vKs:6_9G7fpVV5H9eGLlXMNIS--xw4zQDvdFhAuWkx_Imb0 2024-11-04 16:32:50.563172+00
+du6i1y35imkqnpjw9eontbwhlxcthnyr e30:1t3xkc:mcf8V6aMWq9oCnuWdB042ZsvkbZOvU6bEJ6C28MFNxo 2024-11-07 13:19:42.27057+00
+22ky2dvil1mzjkge4l2w781k9llxrun4 .eJxVjkEOwiAURO_CuiGAtECX7j0Dgf-_BTVtAnRlvLs06UK3M29e5s182Fvye6XiM7KZSTb8ZjHAk9ajwEdYl43DtraSIz8QfraV3zak1_Vk_wQp1NTXMdoxojRgLgKEVFLCaKO1pK2zzqCeLka50YnJkABUGMyklLhrK_oyqC6F1A9QpcZmPTDMhaB5wtzyurC5lZ0-X1FqQ3M:1t4HCF:le4fcDuRrAolkiAZByxprxoBdC3KTDEtSt3V5ahm8xc 2024-11-08 10:05:31.458212+00
+m5fqocfdl1ano9n7zm0abev7rc1ygm1h e30:1t3xkc:mcf8V6aMWq9oCnuWdB042ZsvkbZOvU6bEJ6C28MFNxo 2024-11-07 13:19:42.426527+00
+flff3bukysca7jty72fyvnpog017eh4o e30:1t3xlG:1hmMWR5LVInGbxmw92Yu6EFzs9p6BYFKz6mpKvfcut8 2024-11-07 13:20:22.134477+00
+32e3enrs3s3j6br4liejz6kw1ag9rdmp e30:1t3xlG:1hmMWR5LVInGbxmw92Yu6EFzs9p6BYFKz6mpKvfcut8 2024-11-07 13:20:22.185861+00
+ow694isitijclav0ap763b3woz0hvm4l e30:1t2s5t:OfrKMJvPRdweQkRSgNLNB-loXQZRdfX-uQgJVAWNJj8 2024-11-04 13:05:09.134775+00
+\.
+
+
+--
+-- Data for Name: editor_changedobject; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.editor_changedobject (id, created, existing_object_pk, updated_fields, m2m_added, m2m_removed, deleted, changeset_id, content_type_id) FROM stdin;
+23 2024-10-27 10:01:39.992448+00 \N {"category": 5, "can_describe": false, "label_settings": 1, "title__i18n__en": "Crane Hall BOF meetings"} {} {} f 5 34
+25 2024-10-28 10:27:30.241382+00 \N {"space": 36, "geometry": {"type": "Point", "coordinates": [236.47, 217.71]}, "external_url": "https://www.sfscon.it/tracks/crane-hall-bof-meetings-2024/", "title__i18n__en": "Crane Hall BOF meetings"} {} {} f 6 36
+26 2024-10-28 10:27:56.272718+00 152 {} {} {} t 6 34
+27 2024-10-28 10:38:53.342045+00 153 {"geometry": {"type": "Point", "coordinates": [222.31, 217.56]}, "label_settings": 1} {} {} f 7 36
+28 2024-10-28 10:54:03.336259+00 106 {"title__i18n__en": "Access to President's Office (NOI Board)"} {} {} f 8 36
+\.
+
+
+--
+-- Data for Name: editor_changeset; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.editor_changeset (id, created, state, title, description, assigned_to_id, author_id, last_change_id, last_cleaned_with_id, last_state_update_id, last_update_id, map_update_id) FROM stdin;
+5 2024-10-27 10:01:39.987629+00 applied Add Crane Hall BOF meetings add the POI for the BOF meetings in the Crane Hall 1 1 12 1822 16 16 1823
+6 2024-10-27 10:15:56.996907+00 applied Add Crane Hall BOF meetings Add BOF meetings location 1 1 19 1823 23 23 1824
+7 2024-10-28 10:38:53.340637+00 applied Change label BOF meetings Add and move BOF meetings label 1 1 \N 1824 27 27 1825
+8 2024-10-28 10:54:03.335676+00 applied Modify Access President room label Add NOI Board to label 1 1 \N 1825 31 31 1826
+\.
+
+
+--
+-- Data for Name: editor_changesetupdate; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.editor_changesetupdate (id, datetime, comment, state, title, description, objects_changed, assigned_to_id, changeset_id, user_id) FROM stdin;
+11 2024-10-27 10:05:24.122876+00 \N \N \N t \N 5 1
+12 2024-10-27 10:08:25.573123+00 \N \N \N t \N 5 1
+13 2024-10-27 10:10:06.688136+00 \N Add Crane Hall BOF meetings add the POI for the BOF meetings in the Crane Hall f \N 5 1
+14 2024-10-27 10:10:15.582027+00 \N proposed \N \N f \N 5 1
+15 2024-10-27 10:10:30.161808+00 \N review \N \N f 1 5 1
+16 2024-10-27 10:10:35.45748+00 \N applied \N \N f \N 5 1
+17 2024-10-27 10:15:57.171981+00 \N \N \N t \N 6 \N
+18 2024-10-28 10:27:30.247929+00 \N \N \N t \N 6 1
+19 2024-10-28 10:27:56.27351+00 \N \N \N t \N 6 1
+20 2024-10-28 10:35:07.946298+00 \N Add Crane Hall BOF meetings Add BOF meetings location f \N 6 1
+21 2024-10-28 10:35:10.718123+00 \N proposed \N \N f \N 6 1
+22 2024-10-28 10:35:16.868547+00 \N review \N \N f 1 6 1
+23 2024-10-28 10:35:30.293212+00 \N applied \N \N f \N 6 1
+24 2024-10-28 10:39:55.938127+00 \N Change label BOF meetings Add and move BOF meetings label f \N 7 1
+25 2024-10-28 10:39:57.50337+00 \N proposed \N \N f \N 7 1
+26 2024-10-28 10:39:59.544028+00 \N review \N \N f 1 7 1
+27 2024-10-28 10:40:03.615256+00 \N applied \N \N f \N 7 1
+28 2024-10-28 10:55:26.062094+00 \N Modify Access President room label Add NOI Board to label f \N 8 1
+29 2024-10-28 10:55:27.527888+00 \N proposed \N \N f \N 8 1
+30 2024-10-28 10:55:29.420802+00 \N review \N \N f 1 8 1
+31 2024-10-28 10:55:32.590528+00 \N applied \N \N f \N 8 1
+\.
+
+
+--
+-- Data for Name: mapdata_accesspermission; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_accesspermission (id, expire_date, can_grant, unique_key, access_restriction_id, author_id, token_id, user_id, access_restriction_group_id, session_token, sso_grant_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_accesspermissionssogrant; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_accesspermissionssogrant (id, provider, "group", access_restriction_id, access_restriction_group_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_accesspermissiontoken; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_accesspermissiontoken (id, token, valid_until, unlimited, redeemed, can_grant, unique_key, data, author_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_accessrestriction; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_accessrestriction (id, titles, public) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_accessrestriction_groups; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_accessrestriction_groups (id, accessrestriction_id, accessrestrictiongroup_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_accessrestrictiongroup; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_accessrestrictiongroup (id, titles) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_altitudearea; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_altitudearea (id, geometry, altitude, level_id, import_tag, points) FROM stdin;
+3 {"type": "Polygon", "coordinates": [[[272.79, 223.14], [272.72, 223.14], [272.72, 223.13], [274.51, 223.13], [280.61, 223.11], [280.61, 223.08], [275.82, 223.08], [275.81, 209.71], [283.49, 209.71], [283.49, 223.08], [282.75, 223.08], [282.75, 223.1], [284.05, 223.1], [284.05, 222.57], [284.46, 222.57], [284.46, 222.37], [284.04, 222.37], [284.05, 211.96], [301.6, 211.96], [301.6, 222.38], [288.02, 222.37], [288.02, 222.57], [299.94, 222.57], [299.94, 223.15], [304.78, 223.15], [304.78, 223.03], [302.25, 223.03], [302.16, 199.75], [315.52, 199.75], [315.52, 223.03], [306.51, 223.03], [306.51, 223.15], [316.04, 223.15], [316.04, 229.84], [306.67, 229.84], [306.67, 230.0], [315.52, 230.0], [315.52, 244.57], [302.23, 244.57], [302.23, 230.0], [304.96, 230.0], [304.96, 229.84], [301.62, 229.84], [301.62, 240.06], [282.67, 240.05], [282.67, 240.25], [283.45, 240.23], [283.45, 243.05], [280.8, 243.05], [280.8, 240.29], [281.88, 240.27], [281.88, 240.05], [280.84, 240.05], [280.82, 233.84], [276.4, 233.84], [276.4, 234.09], [280.54, 234.09], [280.56, 245.24], [275.09, 245.24], [275.09, 234.09], [275.19, 234.09], [275.19, 233.84], [274.49, 233.84], [274.49, 234.0], [272.79, 234.0], [272.79, 223.14]], [[286.29, 222.37], [286.15, 222.37], [286.14, 222.57], [286.29, 222.57], [286.29, 222.37]], [[288.95, 229.86], [288.95, 234.43], [298.97, 234.44], [298.97, 229.86], [288.95, 229.86]], [[285.98, 232.63], [285.98, 231.68], [285.82, 231.68], [285.82, 231.99], [283.95, 231.99], [283.95, 230.3], [286.45, 230.3], [286.45, 229.86], [283.46, 229.86], [283.46, 234.45], [286.45, 234.45], [286.45, 234.02], [283.95, 234.02], [283.95, 232.32], [285.82, 232.32], [285.82, 232.63], [285.98, 232.63]]]} -5.00 10 \N \N
+319 {"type": "Polygon", "coordinates": [[[248.98, 132.78], [248.95, 133.05], [248.93, 133.31], [249.58, 133.37], [249.25, 136.9], [252.65, 137.21], [252.6, 137.91], [252.91, 137.94], [253.18, 137.96], [253.44, 137.99], [257.51, 138.35], [257.77, 138.38], [258.05, 138.4], [258.37, 138.43], [258.42, 137.74], [269.81, 138.8], [269.75, 139.48], [269.98, 139.5], [270.26, 139.53], [270.53, 139.55], [271.7, 139.66], [271.72, 139.44], [271.74, 139.24], [271.87, 138.0], [267.04, 137.54], [267.11, 136.59], [272.35, 137.07], [273.26, 127.01], [272.34, 137.49], [273.55, 137.6], [273.54, 137.7], [272.35, 137.59], [272.17, 139.25], [274.22, 139.46], [274.18, 139.93], [276.59, 140.15], [276.8, 138.01], [276.29, 137.96], [276.29, 137.85], [278.73, 138.08], [278.78, 137.51], [278.88, 137.51], [278.8, 138.32], [278.45, 138.26], [277.93, 143.73], [298.3, 145.79], [300.23, 125.07], [280.22, 123.24], [279.93, 126.35], [279.8, 126.34], [280.09, 123.21], [278.08, 123.02], [278.29, 120.53], [277.97, 120.5], [277.98, 120.4], [279.71, 120.55], [280.1, 116.13], [277.53, 115.88], [277.11, 120.32], [277.19, 120.33], [277.18, 120.43], [276.83, 120.4], [276.85, 120.29], [276.97, 120.3], [277.36, 115.87], [274.35, 115.6], [273.92, 120.01], [276.07, 120.21], [276.06, 120.34], [275.97, 120.33], [275.97, 120.38], [275.85, 120.36], [275.85, 120.31], [273.93, 120.14], [273.72, 122.27], [275.64, 122.43], [275.71, 121.77], [275.82, 121.78], [275.72, 122.77], [273.65, 122.59], [273.65, 122.61], [265.19, 121.84], [264.98, 123.97], [254.68, 122.99], [253.85, 123.36], [253.29, 123.74], [252.79, 124.22], [252.34, 124.92], [251.29, 135.14], [261.95, 136.12], [261.87, 137.05], [259.39, 136.82], [250.34, 135.98], [250.34, 135.97], [250.26, 135.96], [250.88, 129.87], [249.67, 129.76], [249.68, 129.64], [249.27, 129.6], [249.0, 132.51], [248.98, 132.78]], [[249.64, 133.38], [249.66, 133.09], [249.67, 132.96], [249.64, 133.38]], [[295.26, 131.15], [295.29, 130.8], [297.19, 130.99], [297.16, 131.32], [295.26, 131.15]], [[295.63, 136.96], [295.67, 136.63], [296.01, 136.66], [295.99, 137.0], [295.63, 136.96]], [[295.7, 140.02], [295.36, 139.99], [295.39, 139.65], [295.73, 139.68], [295.7, 140.02]], [[289.4, 130.61], [289.43, 130.26], [291.34, 130.45], [291.31, 130.79], [289.4, 130.61]], [[289.73, 136.42], [289.76, 136.09], [290.1, 136.12], [290.07, 136.45], [289.73, 136.42]], [[289.8, 139.48], [289.45, 139.44], [289.48, 139.11], [289.83, 139.14], [289.8, 139.48]], [[283.53, 130.08], [283.56, 129.74], [285.47, 129.89], [285.43, 130.25], [283.53, 130.08]], [[283.88, 135.89], [283.91, 135.54], [284.27, 135.58], [284.23, 135.92], [283.88, 135.89]], [[283.59, 138.91], [283.62, 138.56], [283.99, 138.59], [283.95, 138.95], [283.59, 138.91]], [[279.08, 134.26], [279.5, 129.7], [277.69, 129.53], [277.76, 128.27], [279.62, 128.37], [279.67, 127.78], [279.79, 127.79], [279.01, 136.06], [278.92, 136.05], [278.97, 135.42], [277.16, 135.26], [277.27, 134.14], [279.08, 134.26]], [[270.93, 128.9], [271.03, 127.98], [272.81, 128.11], [272.71, 129.05], [270.93, 128.9]], [[270.45, 134.46], [270.5, 133.56], [272.32, 133.69], [272.23, 134.62], [270.45, 134.46]], [[267.48, 127.67], [267.49, 127.31], [268.85, 127.44], [268.81, 127.78], [267.48, 127.67]], [[266.82, 134.49], [266.86, 134.14], [268.22, 134.26], [268.16, 134.6], [266.82, 134.49]], [[264.1, 136.31], [265.24, 136.42], [265.16, 137.36], [264.05, 137.26], [264.1, 136.31]], [[263.35, 127.27], [263.38, 126.93], [264.74, 127.02], [264.71, 127.42], [263.35, 127.27]], [[262.7, 134.11], [262.73, 133.74], [264.11, 133.86], [264.07, 134.24], [262.7, 134.11]], [[260.54, 126.65], [260.5, 127.0], [259.35, 126.91], [259.25, 127.87], [258.86, 127.82], [259.01, 126.51], [260.54, 126.65]], [[258.74, 133.37], [259.89, 133.51], [259.85, 133.84], [258.32, 133.7], [258.46, 132.42], [258.85, 132.46], [258.74, 133.37]], [[253.0, 137.17], [253.08, 137.18], [252.66, 137.14], [253.0, 137.17]], [[253.08, 137.18], [253.05, 137.53], [253.07, 137.24], [253.08, 137.18]], [[253.05, 137.53], [256.28, 137.82], [253.48, 137.57], [253.22, 137.55], [253.05, 137.53]]]} 1.00 2 \N \N
+106 {"type": "MultiPolygon", "coordinates": [[[[343.99, 201.08], [338.21, 201.08], [338.21, 207.65], [343.99, 207.64], [343.99, 201.08]], [[342.74, 202.61], [342.74, 206.19], [339.69, 206.19], [339.69, 202.61], [342.74, 202.61]]], [[[421.64, 207.7], [426.99, 207.72], [426.99, 201.35], [421.64, 201.35], [421.64, 207.7]], [[422.62, 206.17], [422.62, 202.6], [425.57, 202.6], [425.57, 206.17], [422.62, 206.17]]]]} 5.00 37 \N \N
+277 {"type": "Polygon", "coordinates": [[[284.05, 210.67], [284.05, 209.31], [301.53, 209.31], [301.53, 210.67], [284.05, 210.67]]]} -4.23 11 \N \N
+4 {"type": "MultiPolygon", "coordinates": [[[[198.82, 114.05], [198.77, 115.5], [200.53, 115.55], [200.48, 114.05], [198.82, 114.05]]], [[[270.36, 198.24], [270.36, 198.23], [268.92, 198.23], [270.36, 198.24]]], [[[343.92, 157.08], [353.88, 157.08], [362.27, 157.89], [353.97, 157.05], [343.92, 157.08]]], [[[270.62, 201.23], [269.47, 201.23], [269.47, 201.24], [269.44, 201.24], [269.44, 201.23], [251.96, 201.23], [251.96, 200.52], [259.45, 200.52], [259.42, 192.41], [240.04, 192.41], [240.04, 200.52], [250.47, 200.52], [250.46, 201.23], [239.73, 201.23], [239.73, 198.92], [235.34, 198.92], [235.34, 201.25], [215.82, 201.25], [215.82, 203.44], [235.53, 203.44], [235.53, 203.75], [239.58, 203.75], [239.59, 205.04], [239.59, 203.39], [263.91, 203.39], [263.91, 206.18], [263.73, 206.18], [263.73, 206.1], [260.14, 206.1], [260.14, 208.71], [264.21, 208.69], [264.21, 207.11], [263.73, 207.11], [263.73, 206.9], [263.91, 206.9], [263.91, 206.91], [265.21, 206.91], [265.21, 207.17], [264.39, 207.17], [264.39, 208.67], [266.72, 208.66], [266.72, 207.17], [265.95, 207.17], [265.95, 206.91], [266.94, 206.91], [266.94, 206.89], [267.11, 206.89], [267.11, 207.16], [266.89, 207.16], [266.9, 208.67], [270.3, 208.68], [270.3, 206.08], [267.12, 206.09], [267.12, 206.1], [266.94, 206.1], [266.94, 203.47], [269.44, 203.47], [269.44, 203.46], [269.46, 203.46], [269.46, 203.47], [270.63, 203.47], [270.63, 204.15], [270.4, 204.15], [270.4, 203.71], [267.26, 203.71], [267.26, 205.83], [270.4, 205.8], [270.4, 205.08], [270.64, 205.08], [270.64, 206.15], [272.37, 206.15], [272.37, 205.42], [272.66, 205.42], [272.66, 207.36], [274.5, 207.36], [274.5, 207.3], [274.99, 207.3], [274.99, 205.44], [275.11, 205.44], [275.11, 205.42], [283.42, 205.42], [283.42, 194.36], [283.68, 194.36], [283.68, 194.29], [272.7, 194.29], [272.7, 194.23], [302.38, 194.13], [302.41, 200.83], [337.54, 200.75], [337.54, 185.02], [352.38, 185.02], [352.38, 180.37], [422.1, 180.52], [422.1, 184.79], [427.34, 184.8], [427.48, 198.98], [426.57, 198.98], [426.56, 190.86], [414.02, 190.85], [414.03, 189.37], [413.95, 189.37], [413.95, 189.21], [414.01, 189.21], [414.01, 186.02], [411.86, 186.02], [411.86, 189.21], [412.34, 189.21], [412.34, 189.36], [411.87, 189.36], [411.81, 195.58], [421.62, 195.58], [421.63, 198.79], [421.34, 198.79], [421.34, 197.36], [419.78, 197.36], [419.81, 201.18], [412.0, 201.22], [412.0, 207.34], [420.99, 207.34], [420.99, 201.31], [420.77, 201.31], [420.77, 200.51], [421.34, 200.51], [421.34, 200.43], [421.63, 200.43], [421.63, 200.44], [421.91, 200.44], [421.91, 201.15], [423.2, 201.15], [423.2, 201.35], [421.64, 201.35], [421.64, 207.7], [426.99, 207.72], [426.99, 201.35], [424.95, 201.35], [424.95, 201.15], [426.57, 201.15], [426.57, 200.72], [427.5, 200.72], [427.5, 201.0], [440.17, 201.0], [440.19, 164.3], [396.06, 160.7], [399.94, 124.9], [389.56, 123.88], [386.49, 153.69], [364.71, 151.88], [354.13, 151.04], [343.88, 151.12], [343.89, 157.08], [343.92, 157.08], [343.89, 151.17], [354.19, 151.27], [364.46, 152.22], [363.92, 158.05], [365.09, 158.17], [353.88, 157.25], [343.62, 157.25], [343.62, 150.0], [298.72, 146.28], [276.27, 144.15], [276.32, 143.58], [277.46, 143.69], [278.01, 138.07], [277.6, 142.23], [276.65, 142.16], [277.04, 137.98], [276.65, 142.12], [276.39, 142.09], [276.45, 141.51], [274.05, 141.28], [274.01, 141.78], [273.58, 141.74], [273.6, 141.52], [273.77, 141.54], [273.93, 139.67], [272.17, 139.5], [272.01, 141.37], [272.73, 141.44], [272.71, 141.67], [271.97, 141.6], [271.82, 143.16], [272.82, 143.25], [272.76, 143.82], [271.2, 143.67], [271.7, 139.66], [270.53, 139.55], [270.48, 140.23], [257.45, 139.03], [257.51, 138.35], [253.44, 137.99], [253.37, 138.64], [247.78, 138.13], [248.29, 132.44], [249.0, 132.51], [249.26, 129.73], [242.74, 129.16], [242.76, 129.01], [231.46, 127.99], [231.31, 139.99], [229.09, 144.68], [225.1, 149.11], [218.76, 151.9], [210.52, 151.46], [210.71, 194.43], [215.06, 194.42], [215.06, 191.62], [259.63, 191.62], [259.63, 192.47], [272.66, 192.47], [272.66, 193.31], [272.37, 193.32], [272.37, 192.83], [267.32, 192.84], [267.32, 194.29], [268.93, 194.28], [268.92, 198.23], [268.93, 194.29], [270.36, 194.29], [270.58, 194.29], [270.62, 201.23]], [[293.81, 183.88], [294.19, 184.59], [294.47, 185.63], [294.44, 187.09], [294.0, 188.31], [293.22, 189.28], [291.94, 190.19], [290.22, 190.56], [288.31, 190.09], [287.25, 189.38], [286.38, 188.31], [285.97, 186.72], [285.97, 185.53], [286.22, 184.53], [286.91, 183.5], [287.66, 182.72], [288.63, 182.22], [289.47, 181.97], [291.06, 182.03], [292.03, 182.38], [293.03, 182.94], [293.81, 183.88]], [[274.56, 199.78], [274.56, 199.21], [275.1, 199.19], [275.1, 199.78], [274.56, 199.78]], [[275.07, 203.84], [274.54, 203.84], [274.54, 203.3], [275.07, 203.3], [275.07, 203.84]], [[272.37, 204.1], [272.37, 194.36], [272.66, 194.36], [272.66, 204.1], [272.37, 204.1]], [[269.84, 176.84], [270.18, 177.33], [270.41, 178.03], [270.4, 178.69], [270.29, 179.19], [270.09, 179.56], [269.8, 179.94], [269.47, 180.22], [269.1, 180.43], [268.67, 180.58], [268.2, 180.63], [267.74, 180.58], [267.17, 180.38], [266.69, 180.07], [266.21, 179.48], [266.0, 178.89], [265.94, 178.21], [266.08, 177.7], [266.3, 177.23], [266.62, 176.8], [267.02, 176.47], [267.48, 176.23], [268.26, 176.12], [268.79, 176.21], [269.48, 176.55], [269.84, 176.84]]], [[[343.99, 201.08], [343.29, 201.08], [343.29, 200.65], [343.69, 200.65], [343.69, 200.94], [344.15, 200.94], [344.15, 207.31], [352.44, 207.31], [352.44, 201.31], [345.35, 201.31], [345.35, 197.45], [343.69, 197.45], [343.69, 198.97], [343.29, 198.97], [343.29, 195.59], [350.88, 195.59], [350.88, 188.95], [348.51, 188.95], [348.51, 189.49], [348.25, 189.49], [348.24, 190.57], [348.51, 190.57], [348.51, 190.87], [343.34, 190.87], [343.28, 190.63], [338.78, 190.63], [338.78, 201.08], [338.21, 201.08], [338.21, 207.65], [343.99, 207.64], [343.99, 201.08]]], [[[269.09, 229.5], [272.65, 229.5], [272.65, 225.14], [269.09, 225.14], [269.09, 229.5]]], [[[249.11, 234.45], [249.11, 246.06], [300.43, 246.07], [300.43, 234.45], [249.11, 234.45]]]]} 0.00 2 \N \N
+226 {"type": "Polygon", "coordinates": [[[269.03, 233.92], [266.97, 233.92], [266.97, 230.31], [269.03, 230.31], [269.03, 231.89], [268.77, 231.89], [268.76, 232.33], [269.03, 232.33], [269.03, 233.92]]]} 2.21 85 \N \N
+124 {"type": "MultiPolygon", "coordinates": [[[[339.8, 202.68], [339.8, 202.47], [340.31, 202.47], [340.31, 201.23], [338.52, 201.23], [338.52, 202.68], [339.8, 202.68]]], [[[426.91, 202.72], [426.91, 201.31], [425.01, 201.31], [425.01, 202.68], [425.63, 202.68], [425.63, 202.72], [426.91, 202.72]]]]} 5.33 82 \N \N
+100 {"type": "Polygon", "coordinates": [[[274.51, 213.55], [272.72, 213.55], [272.72, 211.63], [274.5, 211.63], [274.51, 213.55]]]} -4.50 10 \N \N
+179 {"type": "Polygon", "coordinates": [[[277.82, 139.94], [277.75, 140.74], [276.8, 140.65], [276.87, 139.85], [277.82, 139.94]]]} -0.50 11 \N \N
+175 {"type": "Polygon", "coordinates": [[[274.26, 139.27], [274.29, 138.99], [276.72, 139.22], [276.69, 139.5], [274.26, 139.27]]]} -2.16 10 \N \N
+33 {"type": "Polygon", "coordinates": [[[270.36, 197.9], [270.36, 198.2], [268.96, 198.2], [268.96, 197.9], [270.36, 197.9]]]} -5.07 77 \N \N
+34 {"type": "Polygon", "coordinates": [[[270.36, 197.3], [270.36, 197.6], [268.96, 197.6], [268.96, 197.3], [270.36, 197.3]]]} -4.74 77 \N \N
+37 {"type": "Polygon", "coordinates": [[[270.36, 196.4], [270.36, 196.7], [268.96, 196.7], [268.96, 196.4], [270.36, 196.4]]]} -4.25 77 \N \N
+15 {"type": "Polygon", "coordinates": [[[274.81, 183.31], [274.81, 179.37], [274.55, 179.37], [274.55, 179.65], [274.54, 179.65], [274.54, 189.16], [272.22, 189.16], [272.21, 205.58], [270.75, 205.58], [270.75, 204.92], [270.32, 204.92], [270.32, 203.94], [270.74, 203.94], [270.7, 194.23], [270.37, 194.23], [270.37, 194.36], [268.71, 194.37], [268.69, 197.91], [267.38, 197.91], [267.36, 192.56], [270.37, 192.56], [270.37, 192.64], [270.69, 192.64], [270.65, 183.96], [272.76, 183.96], [272.76, 179.67], [272.76, 179.58], [272.76, 179.37], [272.69, 179.37], [272.69, 173.12], [268.0, 173.12], [268.0, 156.12], [269.88, 156.12], [269.88, 153.37], [334.06, 153.37], [334.06, 157.98], [367.13, 157.98], [367.13, 180.44], [350.0, 180.44], [350.0, 183.19], [299.12, 183.19], [299.12, 180.56], [283.56, 180.56], [283.56, 183.31], [274.81, 183.31]]]} -6.21 34 \N \N
+273 {"type": "Polygon", "coordinates": [[[284.05, 205.25], [284.05, 203.9], [301.53, 203.9], [301.53, 205.25], [284.05, 205.25]]]} -2.69 11 \N \N
+271 {"type": "Polygon", "coordinates": [[[284.05, 202.54], [284.05, 201.19], [301.53, 201.19], [301.53, 202.54], [284.05, 202.54]]]} -1.92 11 \N \N
+268 {"type": "Polygon", "coordinates": [[[284.05, 197.12], [284.05, 195.77], [301.53, 195.77], [301.53, 197.12], [284.05, 197.12]]]} -0.38 11 \N \N
+2 {"type": "Polygon", "coordinates": [[[276.49, 141.47], [276.48, 141.59], [276.49, 141.59], [276.35, 143.25], [273.93, 143.04], [273.21, 150.85], [270.11, 150.87], [270.12, 153.04], [269.81, 153.04], [269.81, 155.98], [269.78, 155.98], [269.78, 156.12], [269.88, 156.12], [269.88, 153.37], [334.06, 153.37], [334.06, 158.0], [367.13, 158.06], [367.13, 180.44], [350.0, 180.44], [350.0, 183.19], [299.12, 183.19], [299.12, 180.56], [283.56, 180.56], [283.56, 183.31], [274.81, 183.31], [274.81, 179.37], [274.46, 179.37], [274.46, 181.71], [272.72, 181.71], [272.72, 179.37], [272.69, 179.37], [272.69, 173.12], [268.0, 173.12], [268.0, 156.12], [268.02, 156.12], [268.03, 155.99], [268.01, 155.99], [267.97, 149.0], [271.18, 148.99], [271.9, 141.19], [274.02, 141.37], [274.04, 141.24], [276.49, 141.47]]]} -3.45 10 \N \N
+280 {"type": "MultiPolygon", "coordinates": [[[[270.64, 207.07], [270.66, 211.77], [270.68, 211.77], [270.68, 211.96], [239.59, 211.96], [239.59, 211.59], [239.59, 211.53], [239.59, 211.51], [235.53, 211.5], [235.53, 211.57], [235.54, 211.57], [235.54, 211.96], [205.64, 211.96], [205.64, 223.14], [268.38, 223.22], [268.38, 223.58], [259.65, 223.58], [259.65, 224.91], [260.82, 224.91], [260.82, 225.12], [259.82, 225.12], [259.85, 226.99], [262.01, 226.99], [262.01, 225.12], [261.93, 225.12], [261.93, 224.91], [263.6, 224.91], [263.6, 225.16], [263.44, 225.16], [263.44, 229.52], [265.89, 229.52], [265.89, 225.16], [264.48, 225.16], [264.48, 224.91], [267.63, 224.91], [267.63, 225.16], [266.27, 225.17], [266.26, 229.52], [268.74, 229.52], [268.72, 225.16], [268.57, 225.16], [268.57, 224.91], [271.86, 224.91], [271.86, 223.58], [270.2, 223.58], [270.2, 223.22], [272.22, 223.22], [272.22, 211.96], [272.15, 211.96], [272.15, 211.77], [272.37, 211.77], [272.37, 207.07], [270.64, 207.07]]], [[[272.66, 211.99], [272.66, 222.0], [277.48, 222.0], [277.48, 222.45], [272.73, 222.44], [272.75, 223.59], [271.96, 223.61], [271.92, 224.88], [272.73, 224.88], [272.73, 234.31], [283.53, 234.31], [283.53, 233.45], [284.05, 233.45], [284.05, 232.57], [283.53, 232.57], [283.53, 231.57], [284.03, 231.57], [284.03, 230.76], [283.53, 230.76], [283.53, 229.81], [300.46, 229.81], [300.46, 227.62], [302.65, 227.57], [302.59, 224.95], [300.46, 224.9], [300.46, 222.51], [281.13, 222.46], [281.13, 222.0], [283.42, 222.0], [283.42, 219.95], [275.11, 219.93], [274.99, 219.93], [274.99, 212.03], [274.54, 212.03], [274.54, 211.98], [272.66, 211.99]], [[279.35, 222.46], [279.17, 222.46], [279.17, 222.0], [279.35, 222.0], [279.35, 222.46]]]]} 0.60 2 \N \N
+341 {"type": "Polygon", "coordinates": [[[411.86, 189.21], [411.86, 186.02], [414.01, 186.02], [414.01, 189.21], [413.9, 189.21], [413.9, 189.46], [414.01, 189.46], [414.01, 190.8], [427.24, 190.83], [427.24, 195.42], [426.53, 195.42], [426.54, 197.11], [426.39, 197.11], [426.39, 197.3], [427.08, 197.3], [427.08, 202.42], [422.86, 202.42], [422.8, 203.16], [422.1, 203.22], [422.08, 205.35], [422.82, 205.38], [422.85, 207.52], [422.38, 207.52], [422.38, 207.2], [403.68, 207.16], [403.54, 197.3], [422.17, 197.3], [422.17, 197.1], [422.14, 195.49], [343.48, 195.47], [343.46, 197.08], [343.47, 197.08], [343.47, 197.25], [360.03, 197.25], [360.03, 207.2], [343.83, 207.2], [343.83, 207.55], [342.82, 207.55], [342.83, 205.37], [343.57, 205.37], [343.57, 203.22], [342.78, 203.22], [342.78, 202.5], [338.62, 202.5], [338.62, 197.45], [338.99, 197.45], [338.99, 197.25], [339.29, 197.25], [339.29, 197.11], [339.26, 190.78], [349.83, 190.78], [349.83, 190.64], [348.54, 190.64], [348.54, 190.59], [348.27, 190.59], [348.27, 190.69], [346.42, 190.69], [346.42, 188.99], [348.27, 188.99], [348.27, 189.54], [348.54, 189.54], [348.54, 189.04], [350.58, 189.04], [350.56, 190.78], [411.87, 190.78], [411.87, 189.46], [412.37, 189.46], [412.37, 189.21], [411.86, 189.21]], [[341.71, 197.11], [341.06, 197.11], [341.06, 197.25], [341.71, 197.25], [341.71, 197.11]], [[424.73, 197.3], [424.73, 197.11], [423.95, 197.1], [423.95, 197.3], [424.73, 197.3]]]} 9.05 38 \N \N
+266 {"type": "Polygon", "coordinates": [[[264.39, 207.17], [265.23, 207.17], [265.23, 207.02], [263.85, 207.03], [263.85, 206.84], [263.73, 206.84], [263.73, 207.11], [264.21, 207.11], [264.21, 208.69], [260.14, 208.71], [260.14, 206.1], [263.73, 206.1], [263.73, 206.2], [263.85, 206.2], [263.82, 201.33], [270.54, 201.3], [270.54, 199.69], [272.71, 199.69], [272.71, 199.25], [274.47, 199.25], [274.47, 212.02], [274.66, 212.02], [274.66, 222.42], [274.53, 222.42], [274.53, 229.98], [283.48, 229.98], [283.48, 230.83], [283.95, 230.83], [283.95, 230.23], [285.79, 230.23], [285.79, 231.93], [283.95, 231.93], [283.95, 231.61], [283.48, 231.61], [283.48, 232.66], [283.95, 232.66], [283.95, 232.3], [285.79, 232.3], [285.79, 234.0], [283.95, 234.0], [283.95, 233.44], [283.48, 233.44], [283.48, 233.99], [272.62, 233.99], [272.62, 232.17], [268.76, 232.17], [268.76, 233.94], [266.97, 233.94], [266.97, 230.34], [272.63, 230.34], [272.7, 203.64], [272.43, 203.64], [272.43, 205.89], [270.62, 205.89], [270.62, 203.47], [266.91, 203.47], [266.91, 206.15], [267.12, 206.15], [267.12, 206.09], [270.3, 206.08], [270.3, 208.68], [266.9, 208.67], [266.89, 207.16], [267.11, 207.16], [267.11, 206.94], [266.91, 206.94], [266.91, 207.0], [265.93, 207.01], [265.93, 207.17], [266.72, 207.17], [266.72, 208.66], [264.39, 208.67], [264.39, 207.17]]]} 9.25 38 \N \N
+104 {"type": "MultiPolygon", "coordinates": [[[[273.77, 141.14], [273.94, 139.44], [272.17, 139.27], [272.01, 140.98], [273.77, 141.14]]], [[[342.07, 157.07], [343.12, 156.77], [350.82, 156.73], [353.91, 157.02], [364.32, 158.05], [364.86, 152.13], [354.29, 151.1], [351.13, 151.08], [343.15, 151.04], [341.79, 151.23], [340.49, 151.57], [339.46, 152.06], [338.54, 152.56], [336.83, 153.94], [335.8, 155.2], [335.2, 156.29], [334.55, 157.98], [341.05, 157.98], [341.05, 157.78], [342.07, 157.07]]], [[[270.36, 205.58], [270.36, 203.59], [267.36, 203.59], [267.36, 205.58], [270.36, 205.58]]], [[[285.79, 230.23], [283.95, 230.23], [283.95, 231.93], [285.79, 231.93], [285.79, 230.23]]], [[[283.95, 234.0], [285.79, 234.0], [285.79, 232.3], [283.95, 232.3], [283.95, 234.0]]]]} -3.00 11 \N \N
+21 {"type": "MultiPolygon", "coordinates": [[[[334.55, 157.98], [341.05, 157.98], [341.05, 157.78], [342.07, 157.07], [343.12, 156.77], [350.82, 156.73], [353.91, 157.02], [354.92, 157.34], [355.44, 157.62], [355.84, 157.94], [355.84, 158.02], [362.3, 158.03], [361.84, 156.82], [361.26, 155.68], [360.56, 154.73], [359.63, 153.73], [358.53, 152.9], [357.19, 152.16], [355.89, 151.67], [354.83, 151.42], [351.13, 151.08], [343.14, 151.06], [341.79, 151.23], [340.49, 151.57], [339.46, 152.06], [338.54, 152.56], [336.83, 153.94], [335.8, 155.2], [335.2, 156.29], [334.55, 157.98]]], [[[268.96, 197.9], [270.36, 197.9], [270.36, 197.6], [268.96, 197.6], [268.96, 197.9]]], [[[267.36, 205.58], [270.36, 205.58], [270.36, 203.59], [267.36, 203.59], [267.36, 205.58]]]]} -4.90 77 \N \N
+241 {"type": "Polygon", "coordinates": [[[272.39, 230.31], [272.73, 230.31], [272.73, 231.89], [272.39, 231.89], [272.39, 230.31]]]} 4.60 82 \N \N
+364 {"type": "Polygon", "coordinates": [[[274.99, 207.93], [275.11, 207.93], [275.11, 211.43], [274.99, 211.43], [274.99, 211.71], [274.99, 211.98], [274.99, 219.93], [275.11, 219.93], [283.42, 219.95], [283.42, 222.0], [283.68, 222.0], [283.68, 219.95], [283.68, 205.42], [283.68, 194.36], [283.42, 194.36], [283.42, 205.42], [275.11, 205.42], [275.11, 205.44], [274.99, 205.44], [274.99, 207.36], [274.99, 207.65], [274.99, 207.93]], [[275.13, 211.71], [275.13, 211.43], [275.13, 211.37], [275.16, 211.37], [275.16, 212.03], [275.13, 212.03], [275.13, 211.98], [275.13, 211.71]]]} \N 2 \N [{"altitude": 0.6, "coordinates": [275.10900005786385, 219.93]}, {"altitude": 0.6, "coordinates": [275.11, 219.93]}, {"altitude": 0.6, "coordinates": [283.42, 219.94983293556083]}, {"altitude": 0.6, "coordinates": [283.42, 219.95083282099603]}, {"altitude": 0.0, "coordinates": [283.42, 205.41899999999998]}, {"altitude": 0.0, "coordinates": [283.42, 205.42]}, {"altitude": 0.0, "coordinates": [275.11, 205.42]}, {"altitude": 0.0, "coordinates": [275.11, 205.44]}, {"altitude": 0.0, "coordinates": [275.10900000000004, 205.44]}]
+99 {"type": "Polygon", "coordinates": [[[275.07, 201.79], [275.08, 199.68], [277.41, 199.69], [277.41, 202.88], [277.65, 202.88], [277.65, 199.72], [283.42, 199.72], [283.41, 204.08], [277.65, 204.08], [277.65, 203.72], [277.41, 203.72], [277.41, 204.68], [277.63, 204.68], [277.63, 204.33], [283.48, 204.37], [283.48, 209.09], [277.63, 209.09], [277.63, 205.57], [277.41, 205.57], [277.41, 206.11], [276.23, 206.1], [276.23, 206.31], [277.44, 206.32], [277.44, 209.11], [275.1, 209.11], [275.1, 206.31], [275.34, 206.31], [275.34, 206.09], [275.12, 206.09], [275.11, 203.2], [274.5, 203.23], [274.5, 204.02], [272.72, 204.02], [272.72, 201.56], [274.49, 201.56], [274.49, 201.83], [275.07, 201.79]]]} -4.10 10 \N \N
+11 {"type": "Polygon", "coordinates": [[[272.87, 185.46], [274.47, 185.46], [274.48, 192.1], [272.72, 192.1], [272.72, 189.23], [272.36, 189.23], [272.36, 191.91], [272.15, 191.91], [272.15, 207.92], [270.55, 207.92], [270.55, 205.04], [270.25, 205.04], [270.27, 204.06], [270.56, 204.06], [270.57, 194.28], [270.33, 194.29], [270.32, 194.87], [268.94, 194.87], [268.95, 194.23], [268.7, 194.21], [268.71, 195.91], [267.23, 195.92], [267.23, 192.76], [270.54, 192.77], [270.52, 184.39], [272.36, 184.39], [272.36, 185.46], [272.72, 185.46], [272.87, 185.46]]]} -3.60 10 \N \N
+240 {"type": "Polygon", "coordinates": [[[283.6, 230.01], [283.6, 233.99], [272.65, 233.99], [272.65, 230.01], [283.6, 230.01]]]} 4.60 37 \N \N
+363 {"type": "Polygon", "coordinates": [[[235.53, 211.5], [239.59, 211.51], [239.59, 205.04], [239.58, 203.75], [235.53, 203.75], [235.53, 211.5]]]} \N 2 \N [{"altitude": 0.6, "coordinates": [235.53, 211.50107246668534]}, {"altitude": 0.6, "coordinates": [235.53, 211.5000724637681]}, {"altitude": 0.6, "coordinates": [239.59, 211.50987922705312]}, {"altitude": 0.6, "coordinates": [239.59, 211.51087911113746]}, {"altitude": 0.0, "coordinates": [239.59, 204.9139961340779]}, {"altitude": 0.0, "coordinates": [239.59, 205.04333333333273]}, {"altitude": 0.0, "coordinates": [239.58, 203.75]}, {"altitude": 0.0, "coordinates": [235.53, 203.75]}, {"altitude": 0.0, "coordinates": [235.53, 203.749]}]
+171 {"type": "Polygon", "coordinates": [[[274.29, 138.99], [272.11, 138.78], [272.53, 134.17], [278.53, 134.67], [278.21, 137.99], [276.85, 137.9], [276.72, 139.22], [274.29, 138.99]]]} -2.00 10 \N \N
+70 {"type": "MultiPolygon", "coordinates": [[[[276.75, 141.18], [277.7, 141.28], [277.72, 141.02], [276.77, 140.92], [276.75, 141.18]]], [[[270.36, 194.09], [268.93, 194.09], [268.93, 194.3], [270.36, 194.3], [270.36, 194.09]]], [[[301.53, 194.38], [284.05, 194.38], [284.05, 195.77], [301.53, 195.77], [301.53, 194.38]]], [[[272.74, 233.92], [272.73, 232.33], [272.67, 232.33], [272.67, 233.92], [272.74, 233.92]]]]} 0.00 11 \N \N
+270 {"type": "Polygon", "coordinates": [[[284.05, 201.19], [284.05, 199.83], [301.53, 199.83], [301.53, 201.19], [284.05, 201.19]]]} -1.54 11 \N \N
+269 {"type": "Polygon", "coordinates": [[[284.05, 198.48], [284.05, 197.12], [301.53, 197.12], [301.53, 198.48], [284.05, 198.48]]]} -0.77 11 \N \N
+276 {"type": "Polygon", "coordinates": [[[284.05, 209.31], [284.05, 207.96], [301.53, 207.96], [301.53, 209.31], [284.05, 209.31]]]} -3.85 11 \N \N
+274 {"type": "Polygon", "coordinates": [[[284.05, 206.6], [284.05, 205.25], [301.53, 205.25], [301.53, 206.6], [284.05, 206.6]]]} -3.08 11 \N \N
+92 {"type": "MultiPolygon", "coordinates": [[[[268.93, 196.1], [268.93, 196.4], [270.36, 196.4], [270.36, 196.1], [268.93, 196.1]]], [[[301.53, 199.83], [301.53, 198.48], [284.05, 198.48], [284.05, 199.83], [301.53, 199.83]], [[300.36, 199.75], [299.83, 199.75], [299.83, 199.24], [300.36, 199.24], [300.36, 199.75]], [[286.35, 199.75], [286.35, 199.25], [289.48, 199.25], [289.48, 199.75], [286.35, 199.75]]]]} -1.15 11 \N \N
+275 {"type": "Polygon", "coordinates": [[[284.05, 207.96], [284.05, 206.6], [301.53, 206.6], [301.53, 207.96], [284.05, 207.96]], [[300.36, 207.4], [299.83, 207.4], [299.83, 207.91], [300.36, 207.91], [300.36, 207.4]], [[289.5, 207.91], [289.49, 207.41], [286.35, 207.41], [286.35, 207.91], [289.5, 207.91]]]} -3.46 11 \N \N
+272 {"type": "Polygon", "coordinates": [[[284.05, 203.9], [284.05, 202.54], [301.53, 202.54], [301.53, 203.9], [284.05, 203.9]], [[300.36, 203.34], [299.83, 203.34], [299.83, 203.84], [300.36, 203.84], [300.36, 203.34]], [[289.5, 203.85], [289.49, 203.34], [286.34, 203.34], [286.34, 203.85], [289.5, 203.85]]]} -2.31 11 \N \N
+278 {"type": "Polygon", "coordinates": [[[284.05, 212.02], [284.05, 210.67], [301.53, 210.67], [301.53, 212.02], [284.05, 212.02]], [[300.36, 211.46], [299.83, 211.46], [299.83, 211.97], [300.36, 211.97], [300.36, 211.46]], [[289.49, 211.97], [289.5, 211.47], [286.34, 211.47], [286.34, 211.97], [289.49, 211.97]]]} -4.62 11 \N \N
+103 {"type": "Polygon", "coordinates": [[[272.72, 223.13], [274.51, 223.13], [274.51, 213.55], [272.72, 213.55], [272.72, 223.13]]]} \N 10 \N [{"altitude": -4.5, "coordinates": [274.50518332496233, 213.55]}, {"altitude": -4.5, "coordinates": [272.72, 213.55]}, {"altitude": -4.5, "coordinates": [272.72, 213.549]}, {"altitude": -4.5, "coordinates": [274.5051828227022, 213.549]}, {"altitude": -5.0, "coordinates": [272.72, 223.131]}, {"altitude": -5.0, "coordinates": [272.72, 223.13]}, {"altitude": -5.0, "coordinates": [274.50999497739826, 223.13]}, {"altitude": -5.0, "coordinates": [274.509995479646, 223.13099997531825]}]
+101 {"type": "Polygon", "coordinates": [[[274.48, 192.1], [272.72, 192.1], [272.72, 201.56], [274.49, 201.56], [274.48, 192.1]]]} \N 10 \N [{"altitude": -3.6, "coordinates": [274.4770022261799, 192.099]}, {"altitude": -3.6, "coordinates": [274.4770035618878, 192.1]}, {"altitude": -3.6, "coordinates": [272.72, 192.1]}, {"altitude": -3.6, "coordinates": [272.72, 192.099]}, {"altitude": -4.1, "coordinates": [272.72, 201.561]}, {"altitude": -4.1, "coordinates": [272.72, 201.56]}, {"altitude": -4.1, "coordinates": [274.4896393588602, 201.56]}, {"altitude": -4.1, "coordinates": [274.4896406944804, 201.56099993432932]}]
+102 {"type": "Polygon", "coordinates": [[[272.72, 211.63], [274.5, 211.63], [274.5, 204.02], [272.72, 204.02], [272.72, 211.63]]]} \N 10 \N [{"altitude": -4.1, "coordinates": [274.50039628327477, 204.019]}, {"altitude": -4.1, "coordinates": [274.5003967855349, 204.02]}, {"altitude": -4.1, "coordinates": [272.72, 204.02]}, {"altitude": -4.1, "coordinates": [272.72, 204.019]}, {"altitude": -4.5, "coordinates": [272.72, 211.631]}, {"altitude": -4.5, "coordinates": [272.72, 211.63]}, {"altitude": -4.5, "coordinates": [274.5042189854345, 211.63]}, {"altitude": -4.5, "coordinates": [274.50421948768224, 211.63099997531825]}]
+355 {"type": "MultiPolygon", "coordinates": [[[[270.64, 206.76], [272.37, 206.76], [272.37, 206.46], [270.64, 206.46], [270.64, 206.76]]], [[[274.99, 211.37], [274.99, 211.43], [275.11, 211.43], [275.11, 207.93], [274.99, 207.93], [274.99, 207.97], [274.5, 207.97], [274.5, 207.93], [272.66, 207.92], [272.66, 211.43], [274.54, 211.43], [274.54, 211.37], [274.99, 211.37]]]]} 0.30 2 \N \N
+358 {"type": "MultiPolygon", "coordinates": [[[[248.95, 137.15], [252.63, 137.5], [252.65, 137.21], [249.25, 136.9], [249.58, 133.37], [249.3, 133.35], [248.95, 137.15]]], [[[269.81, 138.8], [258.42, 137.74], [258.4, 138.01], [269.79, 139.07], [269.81, 138.8]]], [[[276.59, 140.15], [274.18, 139.93], [274.15, 140.19], [276.56, 140.42], [276.59, 140.15]]]]} 0.83 2 \N \N
+360 {"type": "MultiPolygon", "coordinates": [[[[248.29, 132.44], [247.78, 138.13], [253.37, 138.64], [253.44, 137.99], [253.18, 137.96], [253.14, 138.35], [248.07, 137.88], [248.55, 132.74], [248.98, 132.78], [249.0, 132.51], [248.29, 132.44]]], [[[270.48, 140.23], [270.53, 139.55], [270.26, 139.53], [270.22, 139.92], [257.73, 138.78], [257.77, 138.38], [257.51, 138.35], [257.45, 139.03], [270.48, 140.23]]], [[[276.48, 141.24], [274.08, 141.01], [274.05, 141.28], [276.45, 141.51], [276.48, 141.24]]]]} 0.17 2 \N \N
+200 {"type": "Polygon", "coordinates": [[[269.03, 233.92], [266.97, 233.92], [266.97, 230.31], [269.03, 230.31], [269.03, 231.89], [268.77, 231.89], [268.76, 232.33], [269.03, 232.33], [269.03, 233.92]]]} -2.59 11 \N \N
+254 {"type": "Polygon", "coordinates": [[[269.03, 233.92], [266.97, 233.92], [266.97, 230.31], [269.03, 230.31], [269.03, 231.89], [268.77, 231.89], [268.76, 232.33], [269.03, 232.33], [269.03, 233.92]]]} 6.84 82 \N \N
+267 {"type": "MultiPolygon", "coordinates": [[[[283.95, 230.86], [283.59, 230.86], [283.57, 231.59], [283.95, 231.59], [283.95, 231.93], [285.79, 231.93], [285.79, 230.23], [283.95, 230.23], [283.95, 230.86]]], [[[285.79, 232.3], [283.95, 232.3], [283.95, 232.7], [283.56, 232.7], [283.55, 233.45], [283.95, 233.45], [283.95, 234.0], [285.79, 234.0], [285.79, 232.3]]]]} 6.75 82 \N \N
+359 {"type": "MultiPolygon", "coordinates": [[[[248.37, 137.64], [252.89, 138.06], [252.91, 137.94], [252.6, 137.91], [252.61, 137.77], [248.66, 137.4], [249.04, 133.32], [248.93, 133.31], [248.95, 133.05], [248.79, 133.04], [248.37, 137.64]]], [[[269.97, 139.65], [269.98, 139.5], [269.75, 139.48], [269.76, 139.33], [258.38, 138.29], [258.37, 138.43], [258.05, 138.4], [258.04, 138.53], [269.97, 139.65]]], [[[276.53, 140.7], [274.13, 140.47], [274.1, 140.74], [276.5, 140.97], [276.53, 140.7]]], [[[272.66, 211.99], [274.54, 211.98], [274.54, 211.71], [272.66, 211.71], [272.66, 211.99]]]]} 0.50 2 \N \N
+357 {"type": "MultiPolygon", "coordinates": [[[[248.55, 132.74], [248.07, 137.88], [253.14, 138.35], [253.18, 137.96], [252.91, 137.94], [252.89, 138.06], [248.37, 137.64], [248.79, 133.04], [248.95, 133.05], [248.98, 132.78], [248.55, 132.74]]], [[[270.22, 139.92], [270.26, 139.53], [269.98, 139.5], [269.97, 139.65], [258.04, 138.53], [258.05, 138.4], [257.77, 138.38], [257.73, 138.78], [270.22, 139.92]]], [[[274.08, 141.01], [276.48, 141.24], [276.5, 140.97], [274.1, 140.74], [274.08, 141.01]]]]} 0.33 2 \N \N
+14 {"type": "Polygon", "coordinates": [[[274.46, 181.71], [272.72, 181.71], [272.72, 185.46], [274.47, 185.46], [274.46, 181.71]]]} \N 10 \N [{"altitude": -3.45, "coordinates": [274.463124220837, 181.709]}, {"altitude": -3.45, "coordinates": [274.4631255565449, 181.71]}, {"altitude": -3.45, "coordinates": [272.72, 181.71]}, {"altitude": -3.45, "coordinates": [272.72, 181.709]}, {"altitude": -3.6, "coordinates": [272.87, 185.46]}, {"altitude": -3.6, "coordinates": [274.46813446126447, 185.46]}, {"altitude": -3.6, "coordinates": [274.46813579688467, 185.46099993432932]}, {"altitude": -3.6, "coordinates": [272.71900000000005, 185.46]}, {"altitude": -3.6, "coordinates": [272.72, 185.46]}]
+342 {"type": "MultiPolygon", "coordinates": [[[[283.95, 230.23], [283.95, 231.93], [285.79, 231.93], [285.79, 230.23], [283.95, 230.23]]], [[[285.79, 234.0], [285.79, 232.3], [283.95, 232.3], [283.95, 234.0], [285.79, 234.0]]]]} 2.10 85 \N \N
+315 {"type": "MultiPolygon", "coordinates": [[[[248.95, 137.15], [249.3, 133.35], [249.04, 133.32], [248.66, 137.4], [252.61, 137.77], [252.63, 137.5], [248.95, 137.15]]], [[[269.79, 139.07], [258.4, 138.01], [258.38, 138.29], [269.76, 139.33], [269.79, 139.07]]], [[[274.13, 140.47], [276.53, 140.7], [276.56, 140.42], [274.15, 140.19], [274.13, 140.47]]]]} 0.67 2 \N \N
+145 {"type": "MultiPolygon", "coordinates": [[[[346.42, 190.69], [348.27, 190.69], [348.27, 188.99], [346.42, 188.99], [346.42, 190.69]]], [[[426.91, 203.58], [425.75, 203.58], [425.75, 203.7], [426.91, 203.7], [426.91, 203.58]]], [[[339.8, 203.55], [338.52, 203.55], [338.52, 203.83], [339.8, 203.83], [339.8, 203.55]]], [[[272.73, 231.89], [272.73, 230.31], [272.39, 230.31], [272.39, 231.89], [272.73, 231.89]]]]} 0.00 85 \N \N
+136 {"type": "MultiPolygon", "coordinates": [[[[339.9, 206.23], [339.8, 206.23], [339.8, 206.13], [338.52, 206.13], [338.52, 207.6], [339.9, 207.6], [339.9, 206.23]]], [[[425.55, 207.68], [426.91, 207.68], [426.91, 206.19], [425.63, 206.19], [425.63, 206.44], [425.55, 206.44], [425.55, 207.68]]]]} 7.43 82 \N \N
+27 {"type": "Polygon", "coordinates": [[[270.36, 198.2], [270.36, 199.3], [267.44, 199.29], [267.43, 197.9], [268.69, 197.9], [268.69, 198.23], [268.7, 198.23], [268.93, 198.23], [268.96, 198.23], [268.96, 198.2], [270.36, 198.2]]]} -5.23 77 \N \N
+154 {"type": "MultiPolygon", "coordinates": [[[[339.9, 206.23], [339.8, 206.23], [339.8, 206.13], [338.52, 206.13], [338.52, 207.6], [339.9, 207.6], [339.9, 206.23]]], [[[425.75, 206.4], [425.75, 206.55], [425.71, 206.55], [425.71, 207.68], [426.91, 207.68], [426.91, 206.4], [425.75, 206.4]]]]} 1.83 85 \N \N
+78 {"type": "Polygon", "coordinates": [[[270.36, 198.2], [270.36, 199.3], [267.44, 199.29], [267.43, 198.2], [268.71, 198.2], [268.71, 198.23], [268.93, 198.23], [268.93, 198.2], [270.36, 198.2]]]} -2.29 11 \N \N
+188 {"type": "MultiPolygon", "coordinates": [[[[284.05, 212.02], [284.05, 212.09], [301.53, 212.09], [301.53, 212.02], [284.05, 212.02]]], [[[272.39, 231.89], [272.73, 231.89], [272.73, 230.31], [272.39, 230.31], [272.39, 231.89]]]]} -5.00 11 \N \N
+123 {"type": "MultiPolygon", "coordinates": [[[[341.8, 207.6], [342.12, 207.6], [342.12, 206.24], [341.8, 206.24], [341.8, 207.6]]], [[[423.64, 207.68], [423.64, 206.43], [423.33, 206.43], [423.33, 207.68], [423.64, 207.68]]], [[[271.55, 232.33], [271.55, 233.92], [271.83, 233.92], [271.83, 232.33], [271.55, 232.33]]]]} 8.56 82 \N \N
+113 {"type": "MultiPolygon", "coordinates": [[[[342.43, 206.24], [342.12, 206.24], [342.12, 207.6], [342.43, 207.6], [342.43, 206.24]]], [[[423.33, 207.68], [423.33, 206.43], [423.01, 206.43], [423.01, 207.68], [423.33, 207.68]]], [[[271.83, 232.33], [271.83, 233.92], [272.11, 233.92], [272.11, 232.33], [271.83, 232.33]]]]} 8.73 82 \N \N
+150 {"type": "MultiPolygon", "coordinates": [[[[339.8, 205.27], [339.8, 204.98], [338.52, 204.98], [338.52, 205.27], [339.8, 205.27]]], [[[426.91, 205.05], [425.75, 205.05], [425.75, 205.39], [426.91, 205.39], [426.91, 205.05]]], [[[270.71, 230.31], [270.71, 231.89], [270.99, 231.89], [270.99, 230.31], [270.71, 230.31]]]]} 1.02 85 \N \N
+127 {"type": "MultiPolygon", "coordinates": [[[[339.8, 203.54], [339.8, 203.26], [338.52, 203.26], [338.52, 203.54], [339.8, 203.54]]], [[[426.91, 203.3], [425.63, 203.3], [425.63, 203.59], [426.91, 203.59], [426.91, 203.3]]], [[[270.43, 230.31], [270.43, 231.89], [270.71, 231.89], [270.71, 230.31], [270.43, 230.31]]]]} 5.81 82 \N \N
+155 {"type": "MultiPolygon", "coordinates": [[[[340.22, 206.23], [339.9, 206.23], [339.9, 207.6], [340.22, 207.6], [340.22, 206.23]]], [[[425.71, 207.68], [425.71, 206.55], [425.5, 206.55], [425.5, 207.68], [425.71, 207.68]]], [[[269.03, 230.31], [269.03, 231.89], [269.31, 231.89], [269.31, 230.31], [269.03, 230.31]]]]} 2.04 85 \N \N
+137 {"type": "MultiPolygon", "coordinates": [[[[340.22, 206.23], [339.9, 206.23], [339.9, 207.6], [340.22, 207.6], [340.22, 206.23]]], [[[425.23, 207.68], [425.55, 207.68], [425.55, 206.44], [425.23, 206.44], [425.23, 207.68]]]]} 7.59 82 \N \N
+140 {"type": "MultiPolygon", "coordinates": [[[[341.17, 206.23], [340.85, 206.23], [340.85, 207.6], [341.17, 207.6], [341.17, 206.23]]], [[[424.28, 207.68], [424.6, 207.68], [424.6, 206.44], [424.28, 206.44], [424.28, 207.68]]]]} 8.08 82 \N \N
+142 {"type": "MultiPolygon", "coordinates": [[[[341.8, 206.24], [341.48, 206.24], [341.48, 207.6], [341.8, 207.6], [341.8, 206.24]]], [[[423.64, 207.68], [423.96, 207.68], [423.96, 206.43], [423.64, 206.43], [423.64, 207.68]]]]} 8.40 82 \N \N
+114 {"type": "MultiPolygon", "coordinates": [[[[342.75, 206.24], [342.43, 206.24], [342.43, 207.6], [342.75, 207.6], [342.75, 206.24]]], [[[422.69, 207.68], [423.01, 207.68], [423.01, 206.43], [422.69, 206.43], [422.69, 207.68]]]]} 8.89 82 \N \N
+81 {"type": "MultiPolygon", "coordinates": [[[[267.43, 197.3], [267.43, 197.6], [268.71, 197.6], [268.71, 197.3], [267.43, 197.3]]], [[[269.31, 230.31], [269.03, 230.31], [269.03, 231.89], [269.31, 231.89], [269.31, 230.31]]]]} -2.78 11 \N \N
+139 {"type": "MultiPolygon", "coordinates": [[[[340.85, 206.23], [340.53, 206.23], [340.53, 207.6], [340.85, 207.6], [340.85, 206.23]]], [[[424.6, 207.68], [424.91, 207.68], [424.91, 206.44], [424.6, 206.44], [424.6, 207.68]]]]} 7.92 82 \N \N
+141 {"type": "MultiPolygon", "coordinates": [[[[341.48, 206.24], [341.17, 206.23], [341.17, 207.6], [341.48, 207.6], [341.48, 206.24]]], [[[423.96, 207.68], [424.28, 207.68], [424.28, 206.44], [423.96, 206.43], [423.96, 207.68]]]]} 8.24 82 \N \N
+138 {"type": "MultiPolygon", "coordinates": [[[[340.53, 206.23], [340.22, 206.23], [340.22, 207.6], [340.53, 207.6], [340.53, 206.23]]], [[[424.91, 207.68], [425.23, 207.68], [425.23, 206.44], [424.91, 206.44], [424.91, 207.68]]]]} 7.76 82 \N \N
+146 {"type": "MultiPolygon", "coordinates": [[[[426.91, 204.04], [426.91, 203.7], [425.75, 203.7], [425.75, 204.04], [426.91, 204.04]]], [[[339.8, 204.12], [339.8, 203.83], [338.52, 203.83], [338.52, 204.12], [339.8, 204.12]]]]} 0.20 85 \N \N
+147 {"type": "MultiPolygon", "coordinates": [[[[426.91, 204.38], [426.91, 204.04], [425.75, 204.04], [425.75, 204.38], [426.91, 204.38]]], [[[339.8, 204.41], [339.8, 204.12], [338.52, 204.12], [338.52, 204.41], [339.8, 204.41]]]]} 0.41 85 \N \N
+149 {"type": "MultiPolygon", "coordinates": [[[[339.8, 204.98], [339.8, 204.69], [338.52, 204.69], [338.52, 204.98], [339.8, 204.98]]], [[[426.91, 205.05], [426.91, 204.71], [425.75, 204.71], [425.75, 205.05], [426.91, 205.05]]]]} 0.81 85 \N \N
+151 {"type": "MultiPolygon", "coordinates": [[[[339.8, 205.56], [339.8, 205.27], [338.52, 205.27], [338.52, 205.56], [339.8, 205.56]]], [[[426.91, 205.73], [426.91, 205.39], [425.75, 205.39], [425.75, 205.73], [426.91, 205.73]]]]} 1.22 85 \N \N
+153 {"type": "MultiPolygon", "coordinates": [[[[339.8, 206.13], [339.8, 205.84], [338.52, 205.84], [338.52, 206.13], [339.8, 206.13]]], [[[426.91, 206.4], [426.91, 206.06], [425.75, 206.06], [425.75, 206.4], [426.91, 206.4]]]]} 1.63 85 \N \N
+117 {"type": "MultiPolygon", "coordinates": [[[[341.77, 202.48], [342.06, 202.48], [342.06, 201.23], [341.77, 201.23], [341.77, 202.48]]], [[[423.62, 201.31], [423.34, 201.31], [423.34, 202.67], [423.62, 202.67], [423.62, 201.31]]]]} 4.36 82 \N \N
+115 {"type": "MultiPolygon", "coordinates": [[[[342.35, 202.48], [342.64, 202.48], [342.64, 201.23], [342.35, 201.23], [342.35, 202.48]]], [[[423.06, 201.31], [422.78, 201.31], [422.78, 202.67], [423.06, 202.67], [423.06, 201.31]]]]} 4.03 82 \N \N
+116 {"type": "MultiPolygon", "coordinates": [[[[342.06, 202.48], [342.35, 202.48], [342.35, 201.23], [342.06, 201.23], [342.06, 202.48]]], [[[423.34, 201.31], [423.06, 201.31], [423.06, 202.67], [423.34, 202.67], [423.34, 201.31]]]]} 4.19 82 \N \N
+118 {"type": "MultiPolygon", "coordinates": [[[[341.48, 202.48], [341.77, 202.48], [341.77, 201.23], [341.48, 201.23], [341.48, 202.48]]], [[[423.9, 201.31], [423.62, 201.31], [423.62, 202.67], [423.9, 202.67], [423.9, 201.31]]]]} 4.52 82 \N \N
+121 {"type": "MultiPolygon", "coordinates": [[[[340.6, 202.47], [340.89, 202.47], [340.89, 201.23], [340.6, 201.23], [340.6, 202.47]]], [[[424.73, 201.31], [424.45, 201.31], [424.45, 202.68], [424.73, 202.68], [424.73, 201.31]]]]} 5.00 82 \N \N
+120 {"type": "MultiPolygon", "coordinates": [[[[340.89, 202.47], [341.18, 202.47], [341.18, 201.23], [340.89, 201.23], [340.89, 202.47]]], [[[424.45, 201.31], [424.17, 201.31], [424.17, 202.68], [424.45, 202.68], [424.45, 201.31]]]]} 4.84 82 \N \N
+122 {"type": "MultiPolygon", "coordinates": [[[[340.31, 202.47], [340.6, 202.47], [340.6, 201.23], [340.31, 201.23], [340.31, 202.47]]], [[[425.01, 201.31], [424.73, 201.31], [424.73, 202.68], [425.01, 202.68], [425.01, 201.31]]]]} 5.16 82 \N \N
+126 {"type": "MultiPolygon", "coordinates": [[[[339.8, 203.26], [339.8, 202.97], [338.52, 202.97], [338.52, 203.26], [339.8, 203.26]]], [[[426.91, 203.3], [426.91, 203.01], [425.63, 203.01], [425.63, 203.3], [426.91, 203.3]]]]} 5.65 82 \N \N
+128 {"type": "MultiPolygon", "coordinates": [[[[339.8, 203.83], [339.8, 203.54], [338.52, 203.54], [338.52, 203.83], [339.8, 203.83]]], [[[426.91, 203.88], [426.91, 203.59], [425.63, 203.59], [425.63, 203.88], [426.91, 203.88]]]]} 5.97 82 \N \N
+130 {"type": "MultiPolygon", "coordinates": [[[[339.8, 204.41], [339.8, 204.12], [338.52, 204.12], [338.52, 204.41], [339.8, 204.41]]], [[[426.91, 204.46], [426.91, 204.17], [425.63, 204.17], [425.63, 204.46], [426.91, 204.46]]]]} 6.30 82 \N \N
+132 {"type": "MultiPolygon", "coordinates": [[[[339.8, 205.27], [339.8, 204.98], [338.52, 204.98], [338.52, 205.27], [339.8, 205.27]]], [[[426.91, 205.32], [426.91, 205.03], [425.63, 205.03], [425.63, 205.32], [426.91, 205.32]]]]} 6.78 82 \N \N
+133 {"type": "MultiPolygon", "coordinates": [[[[339.8, 205.56], [339.8, 205.27], [338.52, 205.27], [338.52, 205.56], [339.8, 205.56]]], [[[426.91, 205.61], [426.91, 205.32], [425.63, 205.32], [425.63, 205.61], [426.91, 205.61]]]]} 6.95 82 \N \N
+125 {"type": "MultiPolygon", "coordinates": [[[[339.8, 202.97], [339.8, 202.68], [338.52, 202.68], [338.52, 202.97], [339.8, 202.97]]], [[[426.91, 203.01], [426.91, 202.72], [425.63, 202.72], [425.63, 203.01], [426.91, 203.01]]]]} 5.49 82 \N \N
+129 {"type": "MultiPolygon", "coordinates": [[[[339.8, 204.12], [339.8, 203.83], [338.52, 203.83], [338.52, 204.12], [339.8, 204.12]]], [[[426.91, 204.17], [426.91, 203.88], [425.63, 203.88], [425.63, 204.17], [426.91, 204.17]]]]} 6.14 82 \N \N
+131 {"type": "MultiPolygon", "coordinates": [[[[339.8, 204.98], [339.8, 204.69], [338.52, 204.69], [338.52, 204.98], [339.8, 204.98]]], [[[426.91, 205.03], [426.91, 204.74], [425.63, 204.74], [425.63, 205.03], [426.91, 205.03]]]]} 6.62 82 \N \N
+135 {"type": "MultiPolygon", "coordinates": [[[[339.8, 206.13], [339.8, 205.84], [338.52, 205.84], [338.52, 206.13], [339.8, 206.13]]], [[[426.91, 206.19], [426.91, 205.9], [425.63, 205.9], [425.63, 206.19], [426.91, 206.19]]]]} 7.27 82 \N \N
+119 {"type": "MultiPolygon", "coordinates": [[[[341.18, 202.47], [341.48, 202.48], [341.48, 201.23], [341.18, 201.23], [341.18, 202.47]]], [[[424.17, 201.31], [423.9, 201.31], [423.9, 202.67], [424.17, 202.68], [424.17, 201.31]]]]} 4.68 82 \N \N
+148 {"type": "MultiPolygon", "coordinates": [[[[426.91, 204.71], [426.91, 204.38], [425.75, 204.38], [425.75, 204.71], [426.91, 204.71]]], [[[339.8, 204.69], [339.8, 204.41], [338.52, 204.41], [338.52, 204.69], [339.8, 204.69]]]]} 0.61 85 \N \N
+152 {"type": "MultiPolygon", "coordinates": [[[[339.8, 205.84], [339.8, 205.56], [338.52, 205.56], [338.52, 205.84], [339.8, 205.84]]], [[[426.91, 206.06], [426.91, 205.73], [425.75, 205.73], [425.75, 206.06], [426.91, 206.06]]]]} 1.43 85 \N \N
+134 {"type": "MultiPolygon", "coordinates": [[[[339.8, 205.84], [339.8, 205.56], [338.52, 205.56], [338.52, 205.84], [339.8, 205.84]]], [[[426.91, 205.9], [426.91, 205.61], [425.63, 205.61], [425.63, 205.9], [426.91, 205.9]]]]} 7.11 82 \N \N
+111 {"type": "MultiPolygon", "coordinates": [[[[339.8, 204.69], [339.8, 204.41], [338.52, 204.41], [338.52, 204.69], [339.8, 204.69]]], [[[426.91, 204.74], [426.91, 204.46], [425.63, 204.46], [425.63, 204.74], [426.91, 204.74]]]]} 6.46 82 \N \N
+169 {"type": "Polygon", "coordinates": [[[276.63, 140.06], [276.61, 140.35], [274.16, 140.12], [274.2, 139.83], [276.63, 140.06]]]} -2.64 10 \N \N
+172 {"type": "Polygon", "coordinates": [[[274.07, 140.96], [274.1, 140.68], [276.55, 140.91], [276.52, 141.19], [274.07, 140.96]]]} -3.13 10 \N \N
+173 {"type": "Polygon", "coordinates": [[[274.13, 140.4], [274.16, 140.12], [276.61, 140.35], [276.58, 140.63], [274.13, 140.4]]]} -2.81 10 \N \N
+167 {"type": "Polygon", "coordinates": [[[276.52, 141.19], [276.49, 141.47], [274.04, 141.24], [274.07, 140.96], [276.52, 141.19]]]} -3.29 10 \N \N
+168 {"type": "Polygon", "coordinates": [[[276.58, 140.63], [276.55, 140.91], [274.1, 140.68], [274.13, 140.4], [276.58, 140.63]]]} -2.97 10 \N \N
+174 {"type": "Polygon", "coordinates": [[[274.2, 139.83], [274.23, 139.55], [276.66, 139.78], [276.63, 140.06], [274.2, 139.83]]]} -2.48 10 \N \N
+170 {"type": "Polygon", "coordinates": [[[276.69, 139.5], [276.66, 139.78], [274.23, 139.55], [274.26, 139.27], [276.69, 139.5]]]} -2.32 10 \N \N
+157 {"type": "MultiPolygon", "coordinates": [[[[340.85, 206.23], [340.53, 206.23], [340.53, 207.6], [340.85, 207.6], [340.85, 206.23]]], [[[425.28, 206.55], [425.07, 206.55], [425.07, 207.68], [425.28, 207.68], [425.28, 206.55]]]]} 2.44 85 \N \N
+158 {"type": "MultiPolygon", "coordinates": [[[[341.17, 206.23], [340.85, 206.23], [340.85, 207.6], [341.17, 207.6], [341.17, 206.23]]], [[[425.07, 206.55], [424.86, 206.55], [424.86, 207.68], [425.07, 207.68], [425.07, 206.55]]]]} 2.65 85 \N \N
+160 {"type": "MultiPolygon", "coordinates": [[[[341.8, 206.24], [341.48, 206.24], [341.48, 207.6], [341.8, 207.6], [341.8, 206.24]]], [[[424.64, 206.54], [424.43, 206.54], [424.43, 207.68], [424.64, 207.68], [424.64, 206.54]]]]} 3.06 85 \N \N
+161 {"type": "MultiPolygon", "coordinates": [[[[342.12, 206.24], [341.8, 206.24], [341.8, 207.6], [342.12, 207.6], [342.12, 206.24]]], [[[424.43, 206.54], [424.22, 206.54], [424.22, 207.68], [424.43, 207.68], [424.43, 206.54]]]]} 3.26 85 \N \N
+163 {"type": "MultiPolygon", "coordinates": [[[[342.75, 206.24], [342.43, 206.24], [342.43, 207.6], [342.75, 207.6], [342.75, 206.24]]], [[[424.0, 206.54], [423.79, 206.54], [423.79, 207.68], [424.0, 207.68], [424.0, 206.54]]]]} 3.67 85 \N \N
+156 {"type": "MultiPolygon", "coordinates": [[[[340.53, 206.23], [340.22, 206.23], [340.22, 207.6], [340.53, 207.6], [340.53, 206.23]]], [[[425.5, 206.55], [425.28, 206.55], [425.28, 207.68], [425.5, 207.68], [425.5, 206.55]]]]} 2.24 85 \N \N
+159 {"type": "MultiPolygon", "coordinates": [[[[341.48, 206.24], [341.17, 206.23], [341.17, 207.6], [341.48, 207.6], [341.48, 206.24]]], [[[424.86, 206.55], [424.64, 206.54], [424.64, 207.68], [424.86, 207.68], [424.86, 206.55]]]]} 2.85 85 \N \N
+162 {"type": "MultiPolygon", "coordinates": [[[[342.43, 206.24], [342.12, 206.24], [342.12, 207.6], [342.43, 207.6], [342.43, 206.24]]], [[[424.22, 206.54], [424.0, 206.54], [424.0, 207.68], [424.22, 207.68], [424.22, 206.54]]]]} 3.46 85 \N \N
+362 {"type": "Polygon", "coordinates": [[[272.37, 206.15], [272.37, 206.46], [270.64, 206.46], [270.64, 206.15], [272.37, 206.15]]]} 0.15 2 \N \N
+361 {"type": "Polygon", "coordinates": [[[272.37, 206.76], [272.37, 207.07], [270.64, 207.07], [270.64, 206.76], [272.37, 206.76]]]} 0.45 2 \N \N
+356 {"type": "Polygon", "coordinates": [[[274.5, 207.36], [274.5, 207.65], [272.66, 207.65], [272.66, 207.36], [274.5, 207.36]]]} 0.10 2 \N \N
+354 {"type": "Polygon", "coordinates": [[[274.54, 211.43], [274.54, 211.71], [272.66, 211.71], [272.66, 211.43], [274.54, 211.43]]]} 0.40 2 \N \N
+112 {"type": "MultiPolygon", "coordinates": [[[[342.64, 202.48], [342.83, 202.48], [342.83, 201.23], [342.64, 201.23], [342.64, 202.48]]], [[[422.78, 201.31], [422.57, 201.31], [422.57, 202.67], [422.78, 202.67], [422.78, 201.31]]]]} 3.87 82 \N \N
+353 {"type": "Polygon", "coordinates": [[[274.5, 207.65], [274.5, 207.93], [272.66, 207.92], [272.66, 207.65], [274.5, 207.65]]]} 0.20 2 \N \N
+181 {"type": "Polygon", "coordinates": [[[277.0, 138.49], [277.05, 137.98], [278.0, 138.08], [277.95, 138.59], [277.0, 138.49]]]} -2.00 11 \N \N
+201 {"type": "Polygon", "coordinates": [[[269.31, 233.92], [269.03, 233.92], [269.03, 232.33], [269.31, 232.33], [269.31, 233.92]]]} -2.41 11 \N \N
+203 {"type": "Polygon", "coordinates": [[[269.87, 233.92], [269.59, 233.92], [269.59, 232.33], [269.87, 232.33], [269.87, 233.92]]]} -2.04 11 \N \N
+205 {"type": "Polygon", "coordinates": [[[270.43, 233.92], [270.15, 233.92], [270.15, 232.33], [270.43, 232.33], [270.43, 233.92]]]} -1.67 11 \N \N
+207 {"type": "Polygon", "coordinates": [[[270.99, 233.92], [270.71, 233.92], [270.71, 232.33], [270.99, 232.33], [270.99, 233.92]]]} -1.30 11 \N \N
+209 {"type": "Polygon", "coordinates": [[[271.55, 233.92], [271.27, 233.92], [271.27, 232.33], [271.55, 232.33], [271.55, 233.92]]]} -0.93 11 \N \N
+211 {"type": "Polygon", "coordinates": [[[272.11, 233.92], [271.83, 233.92], [271.83, 232.33], [272.11, 232.33], [272.11, 233.92]]]} -0.56 11 \N \N
+213 {"type": "Polygon", "coordinates": [[[272.67, 233.92], [272.39, 233.92], [272.39, 232.33], [272.67, 232.33], [272.67, 233.92]]]} -0.19 11 \N \N
+227 {"type": "Polygon", "coordinates": [[[269.31, 233.92], [269.03, 233.92], [269.03, 232.33], [269.31, 232.33], [269.31, 233.92]]]} 2.39 85 \N \N
+229 {"type": "Polygon", "coordinates": [[[269.87, 233.92], [269.59, 233.92], [269.59, 232.33], [269.87, 232.33], [269.87, 233.92]]]} 2.73 85 \N \N
+231 {"type": "Polygon", "coordinates": [[[270.43, 233.92], [270.15, 233.92], [270.15, 232.33], [270.43, 232.33], [270.43, 233.92]]]} 3.07 85 \N \N
+233 {"type": "Polygon", "coordinates": [[[270.99, 233.92], [270.71, 233.92], [270.71, 232.33], [270.99, 232.33], [270.99, 233.92]]]} 3.41 85 \N \N
+235 {"type": "Polygon", "coordinates": [[[271.55, 233.92], [271.27, 233.92], [271.27, 232.33], [271.55, 232.33], [271.55, 233.92]]]} 3.75 85 \N \N
+237 {"type": "Polygon", "coordinates": [[[272.11, 233.92], [271.83, 233.92], [271.83, 232.33], [272.11, 232.33], [272.11, 233.92]]]} 4.09 85 \N \N
+239 {"type": "Polygon", "coordinates": [[[272.67, 233.92], [272.39, 233.92], [272.39, 232.33], [272.67, 232.33], [272.67, 233.92]]]} 4.43 85 \N \N
+255 {"type": "Polygon", "coordinates": [[[269.31, 233.92], [269.03, 233.92], [269.03, 232.33], [269.31, 232.33], [269.31, 233.92]]]} 7.01 82 \N \N
+257 {"type": "Polygon", "coordinates": [[[269.87, 233.92], [269.59, 233.92], [269.59, 232.33], [269.87, 232.33], [269.87, 233.92]]]} 7.36 82 \N \N
+259 {"type": "Polygon", "coordinates": [[[270.43, 233.92], [270.15, 233.92], [270.15, 232.33], [270.43, 232.33], [270.43, 233.92]]]} 7.70 82 \N \N
+261 {"type": "Polygon", "coordinates": [[[270.99, 233.92], [270.71, 233.92], [270.71, 232.33], [270.99, 232.33], [270.99, 233.92]]]} 8.04 82 \N \N
+263 {"type": "Polygon", "coordinates": [[[271.55, 233.92], [271.27, 233.92], [271.27, 232.33], [271.55, 232.33], [271.55, 233.92]]]} 8.39 82 \N \N
+265 {"type": "Polygon", "coordinates": [[[272.67, 233.92], [272.39, 233.92], [272.39, 232.33], [272.67, 232.33], [272.67, 233.92]]]} 9.08 82 \N \N
+202 {"type": "Polygon", "coordinates": [[[269.59, 233.92], [269.31, 233.92], [269.31, 232.33], [269.59, 232.33], [269.59, 233.92]]]} -2.22 11 \N \N
+204 {"type": "Polygon", "coordinates": [[[270.15, 233.92], [269.87, 233.92], [269.87, 232.33], [270.15, 232.33], [270.15, 233.92]]]} -1.85 11 \N \N
+206 {"type": "Polygon", "coordinates": [[[270.71, 233.92], [270.43, 233.92], [270.43, 232.33], [270.71, 232.33], [270.71, 233.92]]]} -1.48 11 \N \N
+208 {"type": "Polygon", "coordinates": [[[271.27, 233.92], [270.99, 233.92], [270.99, 232.33], [271.27, 232.33], [271.27, 233.92]]]} -1.11 11 \N \N
+210 {"type": "Polygon", "coordinates": [[[271.83, 233.92], [271.55, 233.92], [271.55, 232.33], [271.83, 232.33], [271.83, 233.92]]]} -0.74 11 \N \N
+212 {"type": "Polygon", "coordinates": [[[272.39, 233.92], [272.11, 233.92], [272.11, 232.33], [272.39, 232.33], [272.39, 233.92]]]} -0.37 11 \N \N
+228 {"type": "Polygon", "coordinates": [[[269.59, 233.92], [269.31, 233.92], [269.31, 232.33], [269.59, 232.33], [269.59, 233.92]]]} 2.56 85 \N \N
+230 {"type": "Polygon", "coordinates": [[[270.15, 233.92], [269.87, 233.92], [269.87, 232.33], [270.15, 232.33], [270.15, 233.92]]]} 2.90 85 \N \N
+232 {"type": "Polygon", "coordinates": [[[270.71, 233.92], [270.43, 233.92], [270.43, 232.33], [270.71, 232.33], [270.71, 233.92]]]} 3.24 85 \N \N
+234 {"type": "Polygon", "coordinates": [[[271.27, 233.92], [270.99, 233.92], [270.99, 232.33], [271.27, 232.33], [271.27, 233.92]]]} 3.58 85 \N \N
+236 {"type": "Polygon", "coordinates": [[[271.83, 233.92], [271.55, 233.92], [271.55, 232.33], [271.83, 232.33], [271.83, 233.92]]]} 3.92 85 \N \N
+238 {"type": "Polygon", "coordinates": [[[272.39, 233.92], [272.11, 233.92], [272.11, 232.33], [272.39, 232.33], [272.39, 233.92]]]} 4.26 85 \N \N
+256 {"type": "Polygon", "coordinates": [[[269.59, 233.92], [269.31, 233.92], [269.31, 232.33], [269.59, 232.33], [269.59, 233.92]]]} 7.18 82 \N \N
+258 {"type": "Polygon", "coordinates": [[[270.15, 233.92], [269.87, 233.92], [269.87, 232.33], [270.15, 232.33], [270.15, 233.92]]]} 7.53 82 \N \N
+260 {"type": "Polygon", "coordinates": [[[270.71, 233.92], [270.43, 233.92], [270.43, 232.33], [270.71, 232.33], [270.71, 233.92]]]} 7.87 82 \N \N
+262 {"type": "Polygon", "coordinates": [[[271.27, 233.92], [270.99, 233.92], [270.99, 232.33], [271.27, 232.33], [271.27, 233.92]]]} 8.22 82 \N \N
+264 {"type": "Polygon", "coordinates": [[[272.39, 233.92], [272.11, 233.92], [272.11, 232.33], [272.39, 232.33], [272.39, 233.92]]]} 8.91 82 \N \N
+198 {"type": "Polygon", "coordinates": [[[272.11, 231.89], [271.83, 231.89], [271.83, 230.31], [272.11, 230.31], [272.11, 231.89]]]} -4.63 11 \N \N
+196 {"type": "Polygon", "coordinates": [[[271.55, 231.89], [271.27, 231.89], [271.27, 230.31], [271.55, 230.31], [271.55, 231.89]]]} -4.26 11 \N \N
+194 {"type": "Polygon", "coordinates": [[[270.99, 231.89], [270.71, 231.89], [270.71, 230.31], [270.99, 230.31], [270.99, 231.89]]]} -3.89 11 \N \N
+192 {"type": "Polygon", "coordinates": [[[270.43, 231.89], [270.15, 231.89], [270.15, 230.31], [270.43, 230.31], [270.43, 231.89]]]} -3.52 11 \N \N
+190 {"type": "Polygon", "coordinates": [[[269.87, 231.89], [269.59, 231.89], [269.59, 230.31], [269.87, 230.31], [269.87, 231.89]]]} -3.15 11 \N \N
+224 {"type": "Polygon", "coordinates": [[[272.11, 231.89], [271.83, 231.89], [271.83, 230.31], [272.11, 230.31], [272.11, 231.89]]]} 0.34 85 \N \N
+222 {"type": "Polygon", "coordinates": [[[271.55, 231.89], [271.27, 231.89], [271.27, 230.31], [271.55, 230.31], [271.55, 231.89]]]} 0.68 85 \N \N
+219 {"type": "Polygon", "coordinates": [[[270.43, 231.89], [270.15, 231.89], [270.15, 230.31], [270.43, 230.31], [270.43, 231.89]]]} 1.36 85 \N \N
+217 {"type": "Polygon", "coordinates": [[[269.87, 231.89], [269.59, 231.89], [269.59, 230.31], [269.87, 230.31], [269.87, 231.89]]]} 1.70 85 \N \N
+252 {"type": "Polygon", "coordinates": [[[272.11, 231.89], [271.83, 231.89], [271.83, 230.31], [272.11, 230.31], [272.11, 231.89]]]} 4.94 82 \N \N
+250 {"type": "Polygon", "coordinates": [[[271.55, 231.89], [271.27, 231.89], [271.27, 230.31], [271.55, 230.31], [271.55, 231.89]]]} 5.29 82 \N \N
+248 {"type": "Polygon", "coordinates": [[[270.99, 231.89], [270.71, 231.89], [270.71, 230.31], [270.99, 230.31], [270.99, 231.89]]]} 5.63 82 \N \N
+247 {"type": "Polygon", "coordinates": [[[270.43, 231.89], [270.15, 231.89], [270.15, 230.31], [270.43, 230.31], [270.43, 231.89]]]} 5.98 82 \N \N
+245 {"type": "Polygon", "coordinates": [[[269.87, 231.89], [269.59, 231.89], [269.59, 230.31], [269.87, 230.31], [269.87, 231.89]]]} 6.32 82 \N \N
+243 {"type": "Polygon", "coordinates": [[[269.31, 231.89], [269.03, 231.89], [269.03, 230.31], [269.31, 230.31], [269.31, 231.89]]]} 6.67 82 \N \N
+199 {"type": "Polygon", "coordinates": [[[272.39, 231.89], [272.11, 231.89], [272.11, 230.31], [272.39, 230.31], [272.39, 231.89]]]} -4.81 11 \N \N
+197 {"type": "Polygon", "coordinates": [[[271.83, 231.89], [271.55, 231.89], [271.55, 230.31], [271.83, 230.31], [271.83, 231.89]]]} -4.44 11 \N \N
+195 {"type": "Polygon", "coordinates": [[[271.27, 231.89], [270.99, 231.89], [270.99, 230.31], [271.27, 230.31], [271.27, 231.89]]]} -4.07 11 \N \N
+193 {"type": "Polygon", "coordinates": [[[270.71, 231.89], [270.43, 231.89], [270.43, 230.31], [270.71, 230.31], [270.71, 231.89]]]} -3.70 11 \N \N
+191 {"type": "Polygon", "coordinates": [[[270.15, 231.89], [269.87, 231.89], [269.87, 230.31], [270.15, 230.31], [270.15, 231.89]]]} -3.33 11 \N \N
+189 {"type": "Polygon", "coordinates": [[[269.59, 231.89], [269.31, 231.89], [269.31, 230.31], [269.59, 230.31], [269.59, 231.89]]]} -2.96 11 \N \N
+225 {"type": "Polygon", "coordinates": [[[272.39, 231.89], [272.11, 231.89], [272.11, 230.31], [272.39, 230.31], [272.39, 231.89]]]} 0.17 85 \N \N
+223 {"type": "Polygon", "coordinates": [[[271.83, 231.89], [271.55, 231.89], [271.55, 230.31], [271.83, 230.31], [271.83, 231.89]]]} 0.51 85 \N \N
+221 {"type": "Polygon", "coordinates": [[[271.27, 231.89], [270.99, 231.89], [270.99, 230.31], [271.27, 230.31], [271.27, 231.89]]]} 0.85 85 \N \N
+220 {"type": "Polygon", "coordinates": [[[270.71, 231.89], [270.43, 231.89], [270.43, 230.31], [270.71, 230.31], [270.71, 231.89]]]} 1.19 85 \N \N
+218 {"type": "Polygon", "coordinates": [[[270.15, 231.89], [269.87, 231.89], [269.87, 230.31], [270.15, 230.31], [270.15, 231.89]]]} 1.53 85 \N \N
+216 {"type": "Polygon", "coordinates": [[[269.59, 231.89], [269.31, 231.89], [269.31, 230.31], [269.59, 230.31], [269.59, 231.89]]]} 1.87 85 \N \N
+253 {"type": "Polygon", "coordinates": [[[272.39, 231.89], [272.11, 231.89], [272.11, 230.31], [272.39, 230.31], [272.39, 231.89]]]} 4.77 82 \N \N
+251 {"type": "Polygon", "coordinates": [[[271.83, 231.89], [271.55, 231.89], [271.55, 230.31], [271.83, 230.31], [271.83, 231.89]]]} 5.12 82 \N \N
+249 {"type": "Polygon", "coordinates": [[[271.27, 231.89], [270.99, 231.89], [270.99, 230.31], [271.27, 230.31], [271.27, 231.89]]]} 5.46 82 \N \N
+246 {"type": "Polygon", "coordinates": [[[270.15, 231.89], [269.87, 231.89], [269.87, 230.31], [270.15, 230.31], [270.15, 231.89]]]} 6.15 82 \N \N
+244 {"type": "Polygon", "coordinates": [[[269.59, 231.89], [269.31, 231.89], [269.31, 230.31], [269.59, 230.31], [269.59, 231.89]]]} 6.49 82 \N \N
+87 {"type": "Polygon", "coordinates": [[[270.36, 197.6], [270.36, 197.9], [268.93, 197.9], [268.93, 197.6], [270.36, 197.6]]]} -1.96 11 \N \N
+89 {"type": "Polygon", "coordinates": [[[270.36, 197.0], [270.36, 197.3], [268.93, 197.3], [268.93, 197.0], [270.36, 197.0]]]} -1.64 11 \N \N
+90 {"type": "Polygon", "coordinates": [[[270.36, 196.7], [270.36, 197.0], [268.93, 197.0], [268.93, 196.7], [270.36, 196.7]]]} -1.47 11 \N \N
+94 {"type": "Polygon", "coordinates": [[[270.36, 195.5], [270.36, 195.8], [268.93, 195.8], [268.93, 195.5], [270.36, 195.5]]]} -0.82 11 \N \N
+95 {"type": "Polygon", "coordinates": [[[270.36, 195.2], [270.36, 195.5], [268.93, 195.5], [268.93, 195.2], [270.36, 195.2]]]} -0.65 11 \N \N
+97 {"type": "Polygon", "coordinates": [[[270.36, 194.6], [270.36, 194.9], [268.93, 194.9], [268.93, 194.6], [270.36, 194.6]]]} -0.33 11 \N \N
+86 {"type": "Polygon", "coordinates": [[[270.36, 197.9], [270.36, 198.2], [268.93, 198.2], [268.93, 197.9], [270.36, 197.9]]]} -2.13 11 \N \N
+88 {"type": "Polygon", "coordinates": [[[270.36, 197.3], [270.36, 197.6], [268.93, 197.6], [268.93, 197.3], [270.36, 197.3]]]} -1.80 11 \N \N
+91 {"type": "Polygon", "coordinates": [[[270.36, 196.4], [270.36, 196.7], [268.93, 196.7], [268.93, 196.4], [270.36, 196.4]]]} -1.31 11 \N \N
+93 {"type": "Polygon", "coordinates": [[[270.36, 195.8], [270.36, 196.1], [268.93, 196.1], [268.93, 195.8], [270.36, 195.8]]]} -0.98 11 \N \N
+96 {"type": "Polygon", "coordinates": [[[270.36, 194.9], [270.36, 195.2], [268.93, 195.2], [268.93, 194.9], [270.36, 194.9]]]} -0.49 11 \N \N
+98 {"type": "Polygon", "coordinates": [[[270.36, 194.3], [270.36, 194.6], [268.93, 194.6], [268.93, 194.3], [270.36, 194.3]]]} -0.16 11 \N \N
+35 {"type": "Polygon", "coordinates": [[[270.36, 197.0], [270.36, 197.3], [268.96, 197.3], [268.96, 197.0], [270.36, 197.0]]]} -4.58 77 \N \N
+36 {"type": "Polygon", "coordinates": [[[270.36, 196.7], [270.36, 197.0], [268.96, 197.0], [268.96, 196.7], [270.36, 196.7]]]} -4.42 77 \N \N
+38 {"type": "Polygon", "coordinates": [[[270.36, 196.1], [270.36, 196.4], [268.96, 196.4], [268.96, 196.1], [270.36, 196.1]]]} -4.09 77 \N \N
+40 {"type": "Polygon", "coordinates": [[[270.36, 195.5], [270.36, 195.8], [268.96, 195.8], [268.96, 195.5], [270.36, 195.5]]]} -3.76 77 \N \N
+39 {"type": "Polygon", "coordinates": [[[270.36, 195.8], [270.36, 196.1], [268.96, 196.1], [268.96, 195.8], [270.36, 195.8]]]} -3.93 77 \N \N
+26 {"type": "Polygon", "coordinates": [[[268.96, 195.5], [268.96, 195.22], [270.36, 195.22], [270.36, 195.5], [268.96, 195.5]]]} -3.60 77 \N \N
+85 {"type": "Polygon", "coordinates": [[[268.7, 196.1], [268.7, 196.4], [267.42, 196.4], [267.42, 196.1], [268.7, 196.1]]]} -3.44 11 \N \N
+80 {"type": "Polygon", "coordinates": [[[268.71, 197.6], [268.71, 197.9], [267.43, 197.9], [267.43, 197.6], [268.71, 197.6]]]} -2.62 11 \N \N
+84 {"type": "Polygon", "coordinates": [[[268.7, 196.4], [268.7, 196.7], [267.42, 196.7], [267.42, 196.4], [268.7, 196.4]]]} -3.27 11 \N \N
+79 {"type": "Polygon", "coordinates": [[[268.71, 197.9], [268.71, 198.2], [267.43, 198.2], [267.43, 197.9], [268.71, 197.9]]]} -2.45 11 \N \N
+83 {"type": "Polygon", "coordinates": [[[268.7, 196.7], [268.7, 197.0], [267.43, 197.0], [267.42, 196.7], [268.7, 196.7]]]} -3.11 11 \N \N
+82 {"type": "Polygon", "coordinates": [[[268.7, 197.0], [268.71, 197.3], [267.43, 197.3], [267.43, 197.0], [268.7, 197.0]]]} -2.95 11 \N \N
+28 {"type": "Polygon", "coordinates": [[[267.42, 196.7], [267.42, 196.4], [268.69, 196.4], [268.69, 196.7], [267.42, 196.7]]]} -6.05 77 \N \N
+29 {"type": "Polygon", "coordinates": [[[268.69, 196.7], [268.69, 197.0], [267.43, 197.0], [267.42, 196.7], [268.69, 196.7]]]} -5.88 77 \N \N
+30 {"type": "Polygon", "coordinates": [[[267.43, 197.3], [267.43, 197.0], [268.69, 197.0], [268.69, 197.3], [267.43, 197.3]]]} -5.72 77 \N \N
+32 {"type": "Polygon", "coordinates": [[[267.43, 197.9], [267.43, 197.6], [268.69, 197.6], [268.69, 197.9], [267.43, 197.9]]]} -5.39 77 \N \N
+31 {"type": "Polygon", "coordinates": [[[267.43, 197.6], [267.43, 197.3], [268.69, 197.3], [268.69, 197.6], [267.43, 197.6]]]} -5.56 77 \N \N
+16 {"type": "Polygon", "coordinates": [[[267.42, 196.4], [267.42, 196.11], [268.69, 196.11], [268.69, 196.4], [267.42, 196.4]]]} -6.21 77 \N \N
+144 {"type": "MultiPolygon", "coordinates": [[[[342.75, 207.6], [342.86, 207.6], [342.86, 206.24], [342.75, 206.24], [342.75, 207.6]]], [[[423.79, 206.54], [423.63, 206.54], [423.63, 207.68], [423.79, 207.68], [423.79, 206.54]]]]} 3.87 85 \N \N
+77 {"type": "Polygon", "coordinates": [[[267.42, 196.1], [267.42, 195.86], [268.7, 195.86], [268.7, 196.1], [267.42, 196.1]]]} -3.60 11 \N \N
+105 {"type": "MultiPolygon", "coordinates": [[[[342.75, 207.6], [342.88, 207.6], [342.88, 206.24], [342.75, 206.24], [342.75, 207.6]]], [[[422.69, 206.43], [422.6, 206.43], [422.6, 207.68], [422.69, 207.68], [422.69, 206.43]]]]} 9.05 82 \N \N
+176 {"type": "Polygon", "coordinates": [[[277.62, 142.09], [277.59, 142.39], [276.64, 142.29], [276.67, 142.0], [277.62, 142.09]]]} 1.00 11 \N \N
+185 {"type": "Polygon", "coordinates": [[[276.87, 139.85], [276.9, 139.57], [277.85, 139.66], [277.82, 139.94], [276.87, 139.85]]]} -0.75 11 \N \N
+187 {"type": "Polygon", "coordinates": [[[276.97, 138.77], [277.0, 138.49], [277.95, 138.59], [277.93, 138.86], [276.97, 138.77]]]} -1.75 11 \N \N
+183 {"type": "Polygon", "coordinates": [[[276.72, 141.46], [276.75, 141.18], [277.7, 141.28], [277.67, 141.55], [276.72, 141.46]]]} 0.25 11 \N \N
+184 {"type": "Polygon", "coordinates": [[[276.77, 140.92], [276.8, 140.65], [277.75, 140.74], [277.72, 141.02], [276.77, 140.92]]]} -0.25 11 \N \N
+177 {"type": "Polygon", "coordinates": [[[277.88, 139.39], [277.85, 139.66], [276.9, 139.57], [276.92, 139.3], [277.88, 139.39]]]} -1.00 11 \N \N
+186 {"type": "Polygon", "coordinates": [[[276.92, 139.3], [276.95, 139.03], [277.9, 139.12], [277.88, 139.39], [276.92, 139.3]]]} -1.25 11 \N \N
+178 {"type": "Polygon", "coordinates": [[[277.67, 141.55], [277.64, 141.82], [276.69, 141.73], [276.72, 141.46], [277.67, 141.55]]]} 0.50 11 \N \N
+182 {"type": "Polygon", "coordinates": [[[276.67, 142.0], [276.69, 141.73], [277.64, 141.82], [277.62, 142.09], [276.67, 142.0]]]} 0.75 11 \N \N
+180 {"type": "Polygon", "coordinates": [[[277.93, 138.86], [277.9, 139.12], [276.95, 139.03], [276.97, 138.77], [277.93, 138.86]]]} -1.50 11 \N \N
+215 {"type": "Polygon", "coordinates": [[[272.67, 232.33], [272.73, 232.33], [272.74, 233.92], [272.67, 233.92], [272.67, 232.33]]]} 4.60 85 \N \N
+242 {"type": "Polygon", "coordinates": [[[272.67, 232.33], [272.73, 232.33], [272.74, 233.92], [272.67, 233.92], [272.67, 232.33]]]} 9.25 82 \N \N
+\.
+
+
+--
+-- Data for Name: mapdata_altitudemarker; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_altitudemarker (id, geometry, space_id, import_tag, groundaltitude_id) FROM stdin;
+1 {"type": "Point", "coordinates": [276.44, 176.94]} 14 \N 2
+2 {"type": "Point", "coordinates": [277.31, 228.69]} 22 \N 1
+52 {"type": "Point", "coordinates": [268.83, 224.0]} 32 \N 14
+7 {"type": "Point", "coordinates": [271.83, 191.67]} 52 \N 4
+8 {"type": "Point", "coordinates": [274.62, 202.38]} 20 \N 5
+9 {"type": "Point", "coordinates": [274.26, 212.37]} 20 \N 6
+10 {"type": "Point", "coordinates": [283.74, 172.16]} 35 \N 7
+13 {"type": "Point", "coordinates": [269.72, 195.23]} 78 \N 4
+53 {"type": "Point", "coordinates": [277.82, 169.61]} 61 \N 3
+19 {"type": "Point", "coordinates": [274.93, 143.2]} 95 \N 3
+6 {"type": "Point", "coordinates": [268.04, 195.94]} 71 \N 4
+5 {"type": "Point", "coordinates": [269.6, 194.16]} 71 \N 3
+12 {"type": "Point", "coordinates": [268.05, 196.22]} 78 \N 7
+14 {"type": "Point", "coordinates": [342.77, 201.86]} 83 \N 8
+15 {"type": "Point", "coordinates": [342.8, 206.91]} 83 \N 9
+16 {"type": "Point", "coordinates": [339.57, 203.63]} 86 \N 3
+17 {"type": "Point", "coordinates": [342.82, 207.09]} 86 \N 8
+18 {"type": "Point", "coordinates": [275.83, 132.36]} 92 \N 10
+21 {"type": "Point", "coordinates": [271.92, 130.4]} 93 \N 10
+22 {"type": "Point", "coordinates": [292.34, 127.49]} 94 \N 10
+23 {"type": "Point", "coordinates": [274.33, 142.24]} 97 \N 2
+25 {"type": "Point", "coordinates": [278.14, 135.85]} 98 \N 11
+26 {"type": "Point", "coordinates": [275.25, 141.45]} 98 \N 2
+28 {"type": "Point", "coordinates": [277.37, 142.28]} 99 \N 10
+34 {"type": "Point", "coordinates": [272.61, 231.12]} 101 \N 1
+35 {"type": "Point", "coordinates": [272.72, 233.19]} 101 \N 3
+36 {"type": "Point", "coordinates": [272.6, 231.07]} 103 \N 3
+37 {"type": "Point", "coordinates": [272.72, 233.01]} 103 \N 12
+38 {"type": "Point", "coordinates": [272.65, 231.1]} 107 \N 12
+39 {"type": "Point", "coordinates": [272.72, 233.12]} 107 \N 13
+40 {"type": "Point", "coordinates": [275.77, 230.34]} 104 \N 12
+41 {"type": "Point", "coordinates": [280.28, 230.31]} 105 \N 13
+43 {"type": "Point", "coordinates": [284.22, 212.07]} 118 \N 1
+42 {"type": "Point", "coordinates": [284.3, 194.51]} 118 \N 3
+44 {"type": "Point", "coordinates": [276.82, 223.22]} 31 \N 14
+45 {"type": "Point", "coordinates": [277.92, 221.56]} 33 \N 14
+46 {"type": "Point", "coordinates": [279.14, 204.58]} 33 \N 3
+47 {"type": "Point", "coordinates": [271.58, 204.24]} 59 \N 3
+48 {"type": "Point", "coordinates": [271.78, 207.98]} 59 \N 14
+49 {"type": "Point", "coordinates": [236.45, 202.04]} 58 \N 3
+50 {"type": "Point", "coordinates": [235.6, 211.55]} 58 \N 14
+51 {"type": "Point", "coordinates": [244.7, 214.68]} 36 \N 14
+27 {"type": "Point", "coordinates": [277.51, 138.26]} 99 \N 11
+20 {"type": "Point", "coordinates": [275.41, 139.74]} 95 \N 10
+54 {"type": "Point", "coordinates": [273.23, 140.19]} 96 \N 10
+57 {"type": "Point", "coordinates": [426.59, 203.62]} 136 \N 3
+58 {"type": "Point", "coordinates": [423.67, 207.32]} 136 \N 8
+59 {"type": "Point", "coordinates": [422.67, 202.08]} 138 \N 8
+60 {"type": "Point", "coordinates": [422.63, 207.27]} 138 \N 9
+61 {"type": "Point", "coordinates": [346.81, 189.36]} 50 \N 3
+62 {"type": "Point", "coordinates": [346.76, 189.26]} 88 \N 9
+\.
+
+
+--
+-- Data for Name: mapdata_area; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_area (locationslug_ptr_id, titles, can_search, can_describe, geometry, slow_down_factor, access_restriction_id, space_id, import_tag, icon, label_overrides, label_settings_id, main_point, external_url, import_block_data, import_block_geom) FROM stdin;
+63 {"en": "Water pool"} f f {"type": "Polygon", "coordinates": [[[233.53, 179.22], [241.07, 179.22], [241.07, 153.74], [240.05, 153.74], [240.05, 152.83], [240.39, 152.83], [240.39, 152.4], [240.2, 152.07], [239.98, 151.85], [239.71, 151.85], [234.88, 151.85], [234.64, 151.99], [234.52, 152.14], [234.44, 152.36], [234.4, 152.47], [234.4, 152.72], [234.71, 152.72], [234.71, 153.75], [233.66, 153.75], [233.53, 179.22]]]} 1.00 \N 61 \N \N {} \N \N \N f f
+69 {} f f {"type": "Polygon", "coordinates": [[[243.36, 152.6], [243.36, 182.24], [259.35, 182.24], [259.35, 160.99], [258.91, 158.59], [257.89, 156.4], [256.57, 155.23], [254.67, 153.84], [252.04, 152.6], [243.36, 152.6]]]} 1.00 \N 61 \N \N {} \N \N \N f f
+68 {} f f {"type": "Polygon", "coordinates": [[[214.81, 182.53], [231.45, 182.53], [231.45, 152.6], [227.06, 152.6], [223.57, 153.91], [221.01, 155.37], [218.6, 157.42], [216.78, 159.9], [215.03, 163.11], [214.81, 182.53]]]} 1.00 \N 61 \N \N {} \N \N \N f f
+70 {} t t {"type": "Polygon", "coordinates": [[[297.25, 181.94], [299.69, 175.13], [301.81, 175.19], [301.81, 172.56], [299.13, 172.44], [296.69, 168.81], [302.0, 168.88], [302.0, 164.94], [295.5, 164.94], [297.31, 162.19], [301.88, 162.19], [301.88, 158.93], [296.37, 158.93], [295.38, 157.13], [299.38, 157.13], [299.75, 153.13], [337.44, 153.13], [341.69, 151.06], [343.44, 150.94], [343.44, 157.44], [364.06, 158.5], [367.5, 158.75], [367.5, 175.38], [340.44, 175.38], [321.88, 181.88], [297.25, 181.94]]]} 1.00 \N 61 \N \N {} \N \N \N f f
+121 {"en": "Checkin area"} t f {"type": "Polygon", "coordinates": [[[299.87, 223.09], [299.87, 225.98], [303.74, 225.98], [303.74, 223.12], [299.87, 223.09]]]} 1.00 \N 22 \N \N {} \N \N \N f f
+122 {"en": "Checkin area (speakers)"} t f {"type": "Polygon", "coordinates": [[[303.66, 228.36], [303.66, 229.83], [301.63, 229.83], [301.63, 228.35], [303.66, 228.36]]]} 1.00 \N 22 \N \N {} \N \N \N f f
+124 {"en": "Job Wall"} t f {"type": "Polygon", "coordinates": [[[283.89, 229.87], [283.89, 229.52], [286.9, 229.52], [286.9, 229.84], [283.89, 229.87]]]} 1.00 \N 22 \N \N {} \N \N \N f f
+125 {"en": "Coffee Station"} t t {"type": "Polygon", "coordinates": [[[289.59, 239.31], [289.59, 240.83], [294.43, 240.83], [294.43, 239.29], [289.59, 239.31]]]} 1.00 \N 22 \N \N {} \N \N \N f f
+67 {"en": "Bycicle Parking"} t t {"type": "Polygon", "coordinates": [[[243.38, 189.04], [243.36, 182.24], [272.78, 182.24], [272.78, 189.18], [243.38, 189.04]]]} 1.00 \N 61 \N \N {} \N \N \N f f
+126 {"en": "Wardrobe"} t t {"type": "Polygon", "coordinates": [[[295.06, 239.29], [295.06, 240.79], [301.62, 240.79], [301.62, 239.28], [295.06, 239.29]]]} 1.00 \N 22 \N \N {} \N \N \N f f
+\.
+
+
+--
+-- Data for Name: mapdata_area_groups; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_area_groups (id, area_id, locationgroup_id) FROM stdin;
+1 63 62
+2 68 65
+3 69 65
+4 70 65
+5 121 119
+6 125 123
+7 67 66
+8 126 133
+\.
+
+
+--
+-- Data for Name: mapdata_beaconmeasurement; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_beaconmeasurement (id, geometry, comment, data, author_id, space_id, import_tag) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_building; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_building (id, geometry, level_id, import_tag) FROM stdin;
+1 {"type": "Polygon", "coordinates": [[[301.43, 246.99], [301.43, 222.0], [272.66, 222.0], [272.66, 192.47], [259.63, 192.47], [259.63, 191.62], [215.06, 191.62], [215.06, 195.56], [205.03, 195.56], [205.03, 230.02], [244.91, 230.02], [244.91, 225.09], [248.22, 225.09], [248.22, 247.07], [301.43, 246.99]]]} 2 \N
+2 {"type": "Polygon", "coordinates": [[[337.54, 208.22], [337.54, 185.02], [427.34, 185.02], [427.34, 208.11], [337.54, 208.22]]]} 2 \N
+3 {"type": "Polygon", "coordinates": [[[316.11, 246.21], [316.09, 199.11], [301.61, 199.09], [301.61, 222.38], [284.04, 222.37], [284.06, 199.13], [275.05, 199.06], [274.78, 179.34], [272.16, 179.34], [272.16, 181.48], [270.05, 181.45], [269.99, 192.41], [259.63, 192.47], [259.63, 191.62], [214.89, 191.63], [214.89, 211.44], [204.83, 211.49], [204.83, 229.91], [236.57, 229.87], [236.52, 246.17], [316.11, 246.21]]]} 10 \N
+4 {"type": "Polygon", "coordinates": [[[301.43, 246.99], [301.43, 222.0], [272.66, 222.0], [272.66, 192.47], [259.63, 192.47], [259.63, 191.62], [215.06, 191.62], [215.06, 195.56], [205.03, 195.56], [205.03, 230.02], [244.91, 230.02], [244.91, 225.09], [248.22, 225.09], [248.22, 247.07], [301.43, 246.99]]]} 34 \N
+6 {"type": "Polygon", "coordinates": [[[301.43, 246.99], [301.43, 222.0], [272.66, 222.0], [272.66, 192.47], [259.63, 192.47], [259.63, 191.62], [215.06, 191.62], [215.06, 195.56], [205.03, 195.56], [205.03, 230.02], [244.91, 230.02], [244.91, 225.09], [248.22, 225.09], [248.22, 247.07], [301.43, 246.99]]]} 37 \N
+8 {"type": "Polygon", "coordinates": [[[337.54, 208.22], [337.54, 185.02], [427.34, 185.02], [427.34, 208.11], [337.54, 208.22]]]} 37 \N
+9 {"type": "Polygon", "coordinates": [[[337.54, 208.22], [337.54, 185.02], [427.34, 185.02], [427.34, 208.11], [337.54, 208.22]]]} 38 \N
+10 {"type": "Polygon", "coordinates": [[[188.29, 133.47], [201.19, 134.65], [201.19, 129.15], [215.51, 130.17], [215.43, 132.21], [223.69, 132.92], [224.71, 122.15], [224.63, 120.65], [224.24, 119.71], [223.61, 118.84], [222.66, 118.45], [221.25, 117.9], [217.16, 117.51], [217.16, 116.48], [196.16, 114.2], [196.08, 117.27], [189.47, 116.88], [188.29, 133.47]]]} 2 \N
+11 {"type": "Polygon", "coordinates": [[[397.9, 150.93], [409.77, 152.27], [409.46, 158.01], [442.1, 160.92], [445.4, 128.6], [401.67, 124.11], [400.89, 133.31], [399.55, 133.24], [397.9, 150.93]]]} 2 \N
+12 {"type": "Polygon", "coordinates": [[[448.79, 247.91], [485.12, 247.75], [477.73, 155.42], [449.1, 152.58], [448.79, 247.91]]]} 2 \N
+13 {"type": "Polygon", "coordinates": [[[309.1, 116.72], [307.06, 140.79], [364.94, 146.13], [367.15, 121.6], [309.1, 116.72]]]} 2 \N
+5 {"type": "Polygon", "coordinates": [[[250.34, 135.98], [271.87, 137.98], [271.3, 143.61], [298.68, 146.21], [301.42, 117.47], [273.9, 114.91], [273.26, 122.1], [259.43, 120.83], [259.3, 122.58], [255.87, 122.27], [254.78, 122.26], [253.35, 122.75], [252.36, 123.57], [251.53, 124.99], [250.34, 135.98]]]} 2 \N
+7 {"type": "Polygon", "coordinates": [[[302.87, 247.02], [302.93, 193.33], [274.35, 193.35], [274.34, 198.94], [272.82, 198.94], [272.66, 192.47], [259.63, 192.47], [259.63, 191.62], [215.06, 191.62], [215.06, 195.56], [205.03, 195.56], [205.03, 230.02], [244.91, 230.02], [244.91, 225.09], [248.22, 225.09], [248.22, 247.07], [302.87, 247.02]]]} 38 \N
+14 {"type": "Polygon", "coordinates": [[[290.22, 190.56], [291.94, 190.19], [293.22, 189.28], [294.0, 188.31], [294.44, 187.09], [294.47, 185.63], [294.19, 184.59], [293.81, 183.88], [293.03, 182.94], [292.03, 182.38], [291.06, 182.03], [289.47, 181.97], [288.63, 182.22], [287.66, 182.72], [286.91, 183.5], [286.22, 184.53], [285.97, 185.53], [285.97, 186.72], [286.38, 188.31], [287.25, 189.38], [288.31, 190.09], [290.22, 190.56]]]} 2 \N
+15 {"type": "Polygon", "coordinates": [[[267.74, 180.58], [268.2, 180.63], [268.67, 180.58], [269.1, 180.43], [269.47, 180.22], [269.8, 179.94], [270.09, 179.56], [270.29, 179.19], [270.4, 178.69], [270.41, 178.03], [270.18, 177.33], [269.84, 176.84], [269.48, 176.55], [268.79, 176.21], [268.26, 176.12], [267.48, 176.23], [267.02, 176.47], [266.62, 176.8], [266.3, 177.23], [266.08, 177.7], [265.94, 178.21], [266.0, 178.89], [266.21, 179.48], [266.69, 180.07], [267.17, 180.38], [267.74, 180.58]]]} 2 \N
+16 {"type": "Polygon", "coordinates": [[[250.34, 135.98], [271.87, 137.98], [271.3, 143.61], [298.68, 146.21], [301.42, 117.47], [273.9, 114.91], [273.26, 122.1], [259.43, 120.83], [259.3, 122.58], [255.87, 122.27], [254.78, 122.26], [253.35, 122.75], [252.36, 123.57], [251.53, 124.99], [250.34, 135.98]]]} 10 \N
+\.
+
+
+--
+-- Data for Name: mapdata_column; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_column (id, geometry, space_id, access_restriction_id, import_tag) FROM stdin;
+1 {"type": "Polygon", "coordinates": [[[274.56, 199.21], [274.56, 199.78], [275.1, 199.78], [275.1, 199.19], [274.56, 199.21]]]} 33 \N \N
+2 {"type": "Polygon", "coordinates": [[[274.54, 203.3], [274.54, 203.84], [275.07, 203.84], [275.07, 203.3], [274.54, 203.3]]]} 33 \N \N
+18 {"type": "Polygon", "coordinates": [[[267.48, 127.67], [267.49, 127.31], [268.85, 127.44], [268.81, 127.78], [267.48, 127.67]]]} 93 \N \N
+19 {"type": "Polygon", "coordinates": [[[283.59, 138.91], [283.62, 138.56], [283.99, 138.59], [283.95, 138.95], [283.59, 138.91]]]} 94 \N \N
+20 {"type": "Polygon", "coordinates": [[[289.45, 139.44], [289.48, 139.11], [289.83, 139.14], [289.8, 139.48], [289.45, 139.44]]]} 94 \N \N
+21 {"type": "Polygon", "coordinates": [[[295.36, 139.99], [295.39, 139.65], [295.73, 139.68], [295.7, 140.02], [295.36, 139.99]]]} 94 \N \N
+7 {"type": "Polygon", "coordinates": [[[268.69, 198.23], [268.69, 194.16], [268.96, 194.16], [268.96, 198.23], [268.69, 198.23]]]} 78 \N \N
+9 {"type": "Polygon", "coordinates": [[[277.16, 135.26], [277.27, 134.14], [279.13, 134.26], [279.0, 135.42], [277.16, 135.26]]]} 92 \N \N
+10 {"type": "Polygon", "coordinates": [[[277.69, 129.53], [277.76, 128.27], [279.63, 128.37], [279.55, 129.7], [277.69, 129.53]]]} 92 \N \N
+11 {"type": "Polygon", "coordinates": [[[270.45, 134.46], [270.5, 133.56], [272.32, 133.69], [272.23, 134.62], [270.45, 134.46]]]} 93 \N \N
+12 {"type": "Polygon", "coordinates": [[[270.93, 128.9], [271.03, 127.98], [272.81, 128.11], [272.71, 129.05], [270.93, 128.9]]]} 93 \N \N
+13 {"type": "Polygon", "coordinates": [[[266.82, 134.49], [266.86, 134.14], [268.22, 134.26], [268.16, 134.6], [266.82, 134.49]]]} 93 \N \N
+14 {"type": "Polygon", "coordinates": [[[262.7, 134.11], [262.73, 133.74], [264.11, 133.86], [264.07, 134.24], [262.7, 134.11]]]} 93 \N \N
+15 {"type": "Polygon", "coordinates": [[[258.46, 132.42], [258.32, 133.7], [259.85, 133.84], [259.89, 133.51], [258.74, 133.37], [258.85, 132.46], [258.46, 132.42]]]} 93 \N \N
+16 {"type": "Polygon", "coordinates": [[[258.86, 127.82], [259.25, 127.87], [259.35, 126.91], [260.5, 127.0], [260.54, 126.65], [259.01, 126.51], [258.86, 127.82]]]} 93 \N \N
+17 {"type": "Polygon", "coordinates": [[[263.35, 127.27], [263.38, 126.93], [264.74, 127.02], [264.71, 127.42], [263.35, 127.27]]]} 93 \N \N
+22 {"type": "Polygon", "coordinates": [[[283.88, 135.89], [283.91, 135.54], [284.27, 135.58], [284.23, 135.92], [283.88, 135.89]]]} 94 \N \N
+23 {"type": "Polygon", "coordinates": [[[289.73, 136.42], [289.76, 136.09], [290.1, 136.12], [290.07, 136.45], [289.73, 136.42]]]} 94 \N \N
+24 {"type": "Polygon", "coordinates": [[[295.63, 136.96], [295.67, 136.63], [296.01, 136.66], [295.99, 137.0], [295.63, 136.96]]]} 94 \N \N
+25 {"type": "Polygon", "coordinates": [[[283.53, 130.08], [283.56, 129.74], [285.47, 129.89], [285.43, 130.25], [283.53, 130.08]]]} 94 \N \N
+26 {"type": "Polygon", "coordinates": [[[289.4, 130.61], [289.43, 130.26], [291.34, 130.45], [291.31, 130.79], [289.4, 130.61]]]} 94 \N \N
+3 {"type": "Polygon", "coordinates": [[[274.5, 207.3], [274.5, 207.97], [275.06, 207.97], [275.06, 207.3], [274.5, 207.3]]]} 33 \N \N
+27 {"type": "Polygon", "coordinates": [[[295.26, 131.15], [295.29, 130.8], [297.19, 130.99], [297.16, 131.32], [295.26, 131.15]]]} 94 \N \N
+4 {"type": "Polygon", "coordinates": [[[274.54, 211.37], [274.54, 212.03], [275.16, 212.03], [275.16, 211.37], [274.54, 211.37]]]} 33 \N \N
+30 {"type": "Polygon", "coordinates": [[[299.83, 211.46], [300.36, 211.46], [300.36, 211.97], [299.83, 211.97], [299.83, 211.46]]]} 118 \N \N
+31 {"type": "Polygon", "coordinates": [[[299.83, 207.4], [300.36, 207.4], [300.36, 207.91], [299.83, 207.91], [299.83, 207.4]]]} 118 \N \N
+32 {"type": "Polygon", "coordinates": [[[299.83, 203.34], [300.36, 203.34], [300.36, 203.84], [299.83, 203.84], [299.83, 203.34]]]} 118 \N \N
+33 {"type": "Polygon", "coordinates": [[[299.83, 199.24], [300.36, 199.24], [300.36, 199.75], [299.83, 199.75], [299.83, 199.24]]]} 118 \N \N
+34 {"type": "Polygon", "coordinates": [[[289.5, 211.47], [286.34, 211.47], [286.34, 211.97], [289.49, 211.97], [289.5, 211.47]]]} 118 \N \N
+35 {"type": "Polygon", "coordinates": [[[289.49, 207.41], [286.35, 207.41], [286.35, 207.91], [289.5, 207.91], [289.49, 207.41]]]} 118 \N \N
+36 {"type": "Polygon", "coordinates": [[[289.49, 203.34], [286.34, 203.34], [286.34, 203.85], [289.5, 203.85], [289.49, 203.34]]]} 118 \N \N
+37 {"type": "Polygon", "coordinates": [[[289.48, 199.25], [286.35, 199.25], [286.35, 199.75], [289.48, 199.75], [289.48, 199.25]]]} 118 \N \N
+38 {"type": "Polygon", "coordinates": [[[251.01, 129.88], [242.74, 129.16], [242.77, 128.89], [251.03, 129.67], [251.01, 129.88]]]} 61 \N \N
+39 {"type": "Polygon", "coordinates": [[[288.95, 234.43], [288.95, 229.86], [298.97, 229.86], [298.97, 234.44], [288.95, 234.43]]]} 22 \N \N
+5 {"type": "Polygon", "coordinates": [[[283.95, 230.3], [283.95, 231.99], [285.82, 231.99], [285.82, 231.68], [285.98, 231.68], [285.98, 232.63], [285.82, 232.63], [285.82, 232.32], [283.95, 232.32], [283.95, 234.02], [286.45, 234.02], [286.45, 234.45], [283.46, 234.45], [283.46, 229.86], [286.45, 229.86], [286.45, 230.3], [283.95, 230.3]]]} 22 \N \N
+\.
+
+
+--
+-- Data for Name: mapdata_crossdescription; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_crossdescription (id, description_i18n, origin_space_id, space_id, target_space_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_door; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_door (id, geometry, access_restriction_id, level_id, import_tag) FROM stdin;
+1 {"type": "Polygon", "coordinates": [[[277.48, 222.48], [279.17, 222.47], [279.17, 221.99], [277.48, 221.99], [277.48, 222.48]]]} \N 2 \N
+2 {"type": "Polygon", "coordinates": [[[279.35, 221.99], [279.35, 222.51], [281.13, 222.51], [281.13, 222.0], [279.35, 221.99]]]} \N 2 \N
+3 {"type": "Polygon", "coordinates": [[[306.51, 223.2], [304.78, 223.2], [304.78, 222.99], [306.51, 222.99], [306.51, 223.2]]]} \N 10 \N
+6 {"type": "Polygon", "coordinates": [[[275.19, 233.81], [275.19, 234.12], [276.4, 234.12], [276.4, 233.82], [275.19, 233.81]]]} \N 10 \N
+7 {"type": "Polygon", "coordinates": [[[250.46, 201.3], [250.47, 200.5], [251.96, 200.5], [251.96, 201.31], [250.46, 201.3]]]} \N 2 \N
+8 {"type": "Polygon", "coordinates": [[[299.92, 224.89], [302.59, 224.95], [302.65, 227.57], [299.92, 227.63], [299.92, 224.89]]]} \N 2 \N
+10 {"type": "Polygon", "coordinates": [[[270.25, 205.04], [270.64, 205.04], [270.64, 204.06], [270.27, 204.06], [270.25, 205.04]]]} \N 10 \N
+11 {"type": "Polygon", "coordinates": [[[272.27, 189.23], [272.87, 189.23], [272.87, 185.46], [272.3, 185.46], [272.27, 189.23]]]} \N 10 \N
+12 {"type": "Polygon", "coordinates": [[[275.34, 206.34], [275.34, 206.07], [276.23, 206.07], [276.23, 206.34], [275.34, 206.34]]]} \N 10 \N
+13 {"type": "Polygon", "coordinates": [[[277.36, 205.57], [277.73, 205.57], [277.73, 204.68], [277.38, 204.68], [277.36, 205.57]]]} \N 10 \N
+14 {"type": "Polygon", "coordinates": [[[277.37, 203.72], [277.69, 203.72], [277.69, 202.88], [277.37, 202.88], [277.37, 203.72]]]} \N 10 \N
+15 {"type": "Polygon", "coordinates": [[[281.88, 240.02], [281.88, 240.35], [282.67, 240.35], [282.67, 240.02], [281.88, 240.02]]]} \N 10 \N
+18 {"type": "Polygon", "coordinates": [[[267.63, 225.17], [267.63, 224.85], [268.57, 224.85], [268.57, 225.18], [267.63, 225.17]]]} \N 2 \N
+19 {"type": "Polygon", "coordinates": [[[263.6, 225.2], [263.6, 224.89], [264.48, 224.89], [264.48, 225.18], [263.6, 225.2]]]} \N 2 \N
+20 {"type": "Polygon", "coordinates": [[[260.82, 225.21], [260.82, 224.85], [261.93, 224.85], [261.93, 225.19], [260.82, 225.21]]]} \N 2 \N
+21 {"type": "Polygon", "coordinates": [[[263.67, 206.9], [263.99, 206.9], [263.99, 206.18], [263.7, 206.18], [263.67, 206.9]]]} \N 2 \N
+22 {"type": "Polygon", "coordinates": [[[265.21, 207.22], [265.21, 206.9], [265.95, 206.9], [265.95, 207.21], [265.21, 207.22]]]} \N 2 \N
+23 {"type": "Polygon", "coordinates": [[[266.94, 206.89], [267.15, 206.89], [267.15, 206.1], [266.93, 206.1], [266.94, 206.89]]]} \N 2 \N
+24 {"type": "Polygon", "coordinates": [[[235.54, 212.02], [235.54, 211.53], [239.59, 211.53], [239.59, 212.0], [235.54, 212.02]]]} \N 2 \N
+25 {"type": "Polygon", "coordinates": [[[269.33, 203.46], [269.53, 203.46], [269.53, 201.24], [269.31, 201.24], [269.33, 203.46]]]} \N 2 \N
+26 {"type": "Polygon", "coordinates": [[[270.68, 211.99], [270.68, 211.75], [272.15, 211.75], [272.15, 211.99], [270.68, 211.99]]]} \N 2 \N
+16 {"type": "Polygon", "coordinates": [[[284.46, 222.64], [284.46, 222.23], [286.15, 222.24], [286.14, 222.65], [284.46, 222.64]]]} \N 10 \N
+17 {"type": "Polygon", "coordinates": [[[286.29, 222.61], [286.29, 222.28], [288.02, 222.28], [288.02, 222.61], [286.29, 222.61]]]} \N 10 \N
+9 {"type": "Polygon", "coordinates": [[[268.38, 223.61], [268.38, 223.13], [270.2, 223.13], [270.2, 223.61], [268.38, 223.61]]]} \N 2 \N
+4 {"type": "Polygon", "coordinates": [[[304.96, 229.71], [304.96, 230.15], [306.67, 230.14], [306.67, 229.71], [304.96, 229.71]]]} \N 10 \N
+30 {"type": "Polygon", "coordinates": [[[270.32, 204.92], [270.77, 204.92], [270.77, 203.94], [270.32, 203.94], [270.32, 204.92]]]} \N 34 \N
+31 {"type": "Polygon", "coordinates": [[[272.76, 179.67], [272.76, 179.26], [274.55, 179.26], [274.55, 179.65], [272.76, 179.67]]]} \N 34 \N
+32 {"type": "Polygon", "coordinates": [[[270.28, 194.23], [270.77, 194.23], [270.77, 192.64], [270.3, 192.64], [270.28, 194.23]]]} \N 34 \N
+5 {"type": "Polygon", "coordinates": [[[280.61, 223.21], [280.61, 222.96], [282.75, 222.96], [282.75, 223.19], [280.61, 223.21]]]} \N 10 \N
+33 {"type": "Polygon", "coordinates": [[[339.29, 197.09], [339.29, 197.34], [341.06, 197.34], [341.06, 197.08], [339.29, 197.09]]]} \N 38 \N
+34 {"type": "Polygon", "coordinates": [[[341.71, 197.34], [341.71, 197.08], [343.47, 197.08], [343.47, 197.34], [341.71, 197.34]]]} \N 38 \N
+35 {"type": "Polygon", "coordinates": [[[422.17, 197.34], [422.17, 197.08], [423.95, 197.08], [423.95, 197.35], [422.17, 197.34]]]} \N 38 \N
+36 {"type": "Polygon", "coordinates": [[[424.73, 197.08], [424.73, 197.34], [426.39, 197.34], [426.39, 197.09], [424.73, 197.08]]]} \N 38 \N
+37 {"type": "Polygon", "coordinates": [[[348.24, 190.57], [348.55, 190.57], [348.55, 189.49], [348.25, 189.49], [348.24, 190.57]]]} \N 2 \N
+38 {"type": "Polygon", "coordinates": [[[343.24, 198.97], [343.74, 198.97], [343.74, 200.65], [343.26, 200.65], [343.24, 198.97]]]} \N 2 \N
+39 {"type": "Polygon", "coordinates": [[[348.25, 190.59], [348.58, 190.59], [348.58, 189.54], [348.26, 189.54], [348.25, 190.59]]]} \N 38 \N
+40 {"type": "Polygon", "coordinates": [[[278.7, 137.5], [278.96, 137.52], [279.11, 136.07], [278.85, 136.04], [278.7, 137.5]]]} \N 2 \N
+41 {"type": "Polygon", "coordinates": [[[279.61, 127.77], [279.86, 127.8], [280.01, 126.36], [279.76, 126.33], [279.61, 127.77]]]} \N 2 \N
+42 {"type": "Polygon", "coordinates": [[[277.18, 120.47], [277.2, 120.27], [277.99, 120.34], [277.96, 120.55], [277.18, 120.47]]]} \N 2 \N
+43 {"type": "Polygon", "coordinates": [[[276.06, 120.37], [276.08, 120.16], [276.86, 120.24], [276.83, 120.43], [276.06, 120.37]]]} \N 2 \N
+44 {"type": "Polygon", "coordinates": [[[275.64, 121.76], [275.85, 121.78], [275.98, 120.38], [275.79, 120.35], [275.64, 121.76]]]} \N 2 \N
+45 {"type": "Polygon", "coordinates": [[[265.15, 137.47], [265.26, 136.19], [267.13, 136.3], [267.03, 137.69], [265.15, 137.47]]]} \N 2 \N
+46 {"type": "Polygon", "coordinates": [[[261.86, 137.15], [261.97, 135.89], [264.11, 136.1], [264.04, 137.4], [261.86, 137.15]]]} \N 2 \N
+47 {"type": "Polygon", "coordinates": [[[272.75, 143.89], [272.82, 143.21], [276.33, 143.46], [276.27, 144.21], [272.75, 143.89]]]} \N 2 \N
+50 {"type": "Polygon", "coordinates": [[[268.02, 156.18], [268.03, 155.91], [269.78, 155.91], [269.78, 156.2], [268.02, 156.18]]]} \N 10 \N
+51 {"type": "Polygon", "coordinates": [[[272.3, 205.42], [272.77, 205.42], [272.77, 204.1], [272.31, 204.1], [272.3, 205.42]]]} \N 2 \N
+52 {"type": "Polygon", "coordinates": [[[270.31, 205.08], [270.66, 205.08], [270.66, 204.15], [270.3, 204.15], [270.31, 205.08]]]} \N 2 \N
+53 {"type": "Polygon", "coordinates": [[[272.34, 193.32], [272.7, 193.31], [272.7, 194.36], [272.34, 194.36], [272.34, 193.32]]]} \N 2 \N
+54 {"type": "Polygon", "coordinates": [[[283.45, 233.45], [284.05, 233.45], [284.05, 232.57], [283.48, 232.57], [283.45, 233.45]]]} \N 2 \N
+55 {"type": "Polygon", "coordinates": [[[283.49, 231.57], [284.03, 231.57], [284.03, 230.76], [283.49, 230.76], [283.49, 231.57]]]} \N 2 \N
+56 {"type": "Polygon", "coordinates": [[[283.55, 233.45], [284.03, 233.45], [284.03, 232.7], [283.56, 232.7], [283.55, 233.45]]]} \N 82 \N
+57 {"type": "Polygon", "coordinates": [[[283.57, 231.59], [283.98, 231.59], [283.98, 230.86], [283.59, 230.86], [283.57, 231.59]]]} \N 82 \N
+58 {"type": "Polygon", "coordinates": [[[283.45, 233.44], [284.03, 233.44], [284.03, 232.66], [283.46, 232.66], [283.45, 233.44]]]} \N 38 \N
+59 {"type": "Polygon", "coordinates": [[[283.44, 231.61], [284.01, 231.61], [284.01, 230.83], [283.46, 230.83], [283.44, 231.61]]]} \N 38 \N
+60 {"type": "Polygon", "coordinates": [[[263.66, 206.84], [263.88, 206.84], [263.88, 206.2], [263.66, 206.2], [263.66, 206.84]]]} \N 38 \N
+61 {"type": "Polygon", "coordinates": [[[266.88, 206.15], [267.15, 206.15], [267.15, 206.94], [266.88, 206.94], [266.88, 206.15]]]} \N 38 \N
+62 {"type": "Polygon", "coordinates": [[[265.23, 206.94], [265.23, 207.25], [265.93, 207.25], [265.93, 206.93], [265.23, 206.94]]]} \N 38 \N
+48 {"type": "Polygon", "coordinates": [[[272.71, 141.68], [272.73, 141.4], [273.6, 141.48], [273.58, 141.76], [272.71, 141.68]]]} \N 2 \N
+63 {"type": "Polygon", "coordinates": [[[273.54, 137.76], [273.55, 137.46], [276.29, 137.71], [276.29, 138.01], [273.54, 137.76]]]} \N 2 \N
+64 {"type": "Polygon", "coordinates": [[[423.2, 201.41], [423.2, 201.09], [424.95, 201.09], [424.95, 201.41], [423.2, 201.41]]]} \N 2 \N
+65 {"type": "Polygon", "coordinates": [[[421.29, 200.43], [421.7, 200.43], [421.7, 198.79], [421.3, 198.79], [421.29, 200.43]]]} \N 2 \N
+67 {"type": "Polygon", "coordinates": [[[426.51, 200.72], [427.66, 200.72], [427.66, 198.98], [426.51, 198.98], [426.51, 200.72]]]} \N 2 \N
+68 {"type": "Polygon", "coordinates": [[[412.34, 189.43], [412.34, 189.13], [413.95, 189.13], [413.95, 189.43], [412.34, 189.43]]]} \N 2 \N
+69 {"type": "Polygon", "coordinates": [[[412.37, 189.52], [412.37, 189.16], [413.9, 189.16], [413.9, 189.51], [412.37, 189.52]]]} \N 38 \N
+\.
+
+
+--
+-- Data for Name: mapdata_dynamiclocation; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_dynamiclocation (locationslug_ptr_id, titles, can_search, can_describe, icon, label_overrides, position_secret, access_restriction_id, label_settings_id, external_url, import_block_data, import_block_geom) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_dynamiclocation_groups; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_dynamiclocation_groups (id, dynamiclocation_id, locationgroup_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_graphedge; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_graphedge (id, access_restriction_id, from_node_id, to_node_id, waytype_id) FROM stdin;
+73 \N 29 28 \N
+74 \N 28 29 \N
+75 \N 31 32 1
+76 \N 32 31 1
+77 \N 32 33 1
+78 \N 33 32 1
+79 \N 33 30 \N
+80 \N 30 33 \N
+81 \N 41 34 \N
+82 \N 34 41 \N
+83 \N 42 35 \N
+84 \N 35 42 \N
+85 \N 39 37 \N
+86 \N 37 39 \N
+17 \N 7 8 \N
+18 \N 8 7 \N
+87 \N 40 38 \N
+88 \N 38 40 \N
+89 \N 34 36 \N
+90 \N 36 34 \N
+91 \N 35 36 \N
+92 \N 36 35 \N
+93 \N 43 37 \N
+94 \N 37 43 \N
+95 \N 43 38 \N
+96 \N 38 43 \N
+99 \N 45 44 1
+100 \N 44 45 1
+101 \N 44 46 1
+102 \N 46 44 1
+103 \N 46 31 \N
+104 \N 31 46 \N
+105 \N 30 42 \N
+106 \N 42 30 \N
+37 \N 16 17 1
+38 \N 17 16 1
+107 \N 36 48 \N
+108 \N 48 36 \N
+109 \N 47 48 \N
+110 \N 48 47 \N
+43 \N 14 18 \N
+44 \N 18 14 \N
+55 \N 23 16 1
+56 \N 16 23 1
+57 \N 17 24 1
+58 \N 24 17 1
+59 \N 18 23 \N
+60 \N 23 18 \N
+61 \N 24 25 \N
+62 \N 25 24 \N
+121 \N 54 45 \N
+122 \N 45 54 \N
+67 \N 26 22 2
+68 \N 22 26 2
+123 \N 54 55 \N
+124 \N 55 54 \N
+125 \N 54 53 \N
+126 \N 53 54 \N
+127 \N 53 52 \N
+128 \N 52 53 \N
+129 \N 52 51 \N
+130 \N 51 52 \N
+137 \N 68 58 \N
+138 \N 58 68 \N
+141 \N 60 61 2
+142 \N 61 60 2
+147 \N 65 64 \N
+148 \N 64 65 \N
+149 \N 66 64 \N
+150 \N 64 66 \N
+151 \N 67 64 \N
+152 \N 64 67 \N
+153 \N 60 58 \N
+154 \N 58 60 \N
+155 \N 69 70 \N
+156 \N 70 69 \N
+157 \N 70 71 \N
+158 \N 71 70 \N
+159 \N 71 72 \N
+160 \N 72 71 \N
+161 \N 72 73 \N
+162 \N 73 72 \N
+163 \N 73 74 1
+164 \N 74 73 1
+167 \N 72 76 2
+168 \N 76 72 2
+169 \N 76 74 2
+170 \N 74 76 2
+173 \N 61 76 2
+174 \N 76 61 2
+177 \N 77 75 1
+178 \N 75 77 1
+179 \N 74 75 \N
+180 \N 75 74 \N
+181 \N 82 78 \N
+182 \N 79 83 \N
+183 \N 81 84 \N
+184 \N 84 81 \N
+185 \N 84 64 \N
+186 \N 64 84 \N
+187 \N 84 83 \N
+188 \N 83 84 \N
+191 \N 85 82 \N
+192 \N 82 85 \N
+193 \N 85 80 \N
+194 \N 80 85 \N
+197 \N 85 84 \N
+198 \N 84 85 \N
+199 \N 88 87 1
+200 \N 87 88 1
+201 \N 89 86 1
+202 \N 86 89 1
+203 \N 77 58 \N
+204 \N 58 77 \N
+205 \N 90 91 \N
+206 \N 94 92 \N
+207 \N 92 94 \N
+208 \N 92 95 \N
+209 \N 95 92 \N
+210 \N 96 92 \N
+211 \N 92 96 \N
+212 \N 92 93 \N
+213 \N 93 92 \N
+214 \N 104 103 \N
+215 \N 103 104 \N
+216 \N 105 102 \N
+217 \N 102 105 \N
+218 \N 106 101 \N
+219 \N 101 106 \N
+220 \N 100 99 \N
+221 \N 99 100 \N
+222 \N 103 102 \N
+223 \N 102 103 \N
+224 \N 102 101 \N
+225 \N 101 102 \N
+226 \N 101 100 \N
+227 \N 100 101 \N
+228 \N 100 107 \N
+229 \N 107 100 \N
+230 \N 107 108 \N
+231 \N 108 107 \N
+232 \N 108 109 \N
+233 \N 109 108 \N
+234 \N 110 112 \N
+235 \N 112 110 \N
+236 \N 111 113 \N
+237 \N 113 111 \N
+238 \N 114 115 \N
+239 \N 115 114 \N
+240 \N 115 116 \N
+241 \N 116 115 \N
+242 \N 116 97 \N
+243 \N 97 116 \N
+244 \N 97 93 \N
+245 \N 93 97 \N
+246 \N 97 98 \N
+247 \N 98 97 \N
+248 \N 93 117 \N
+249 \N 117 93 \N
+250 \N 121 120 \N
+251 \N 120 121 \N
+256 \N 119 118 \N
+257 \N 118 119 \N
+258 \N 118 117 \N
+259 \N 117 118 \N
+260 \N 119 122 \N
+261 \N 122 119 \N
+262 \N 123 122 \N
+263 \N 122 123 \N
+264 \N 123 8 1
+265 \N 8 123 1
+133 \N 49 47 \N
+134 \N 47 49 \N
+266 \N 125 25 \N
+267 \N 25 125 \N
+268 \N 25 124 \N
+269 \N 124 25 \N
+270 \N 7 124 1
+271 \N 124 7 1
+272 \N 128 127 \N
+273 \N 127 128 \N
+274 \N 127 126 \N
+275 \N 126 127 \N
+276 \N 126 125 \N
+277 \N 125 126 \N
+278 \N 125 22 \N
+279 \N 22 125 \N
+280 \N 135 130 \N
+281 \N 130 135 \N
+282 \N 130 131 \N
+283 \N 131 130 \N
+284 \N 131 134 \N
+285 \N 134 131 \N
+286 \N 131 132 \N
+287 \N 132 131 \N
+288 \N 132 133 \N
+289 \N 133 132 \N
+290 \N 130 129 \N
+291 \N 129 130 \N
+292 \N 127 129 \N
+293 \N 129 127 \N
+294 \N 137 136 \N
+295 \N 136 137 \N
+296 \N 136 129 \N
+297 \N 129 136 \N
+298 \N 69 138 \N
+299 \N 138 69 \N
+300 \N 138 128 \N
+301 \N 128 138 \N
+302 \N 90 119 \N
+303 \N 119 90 \N
+304 \N 26 90 2
+305 \N 90 26 2
+306 \N 19 14 \N
+307 \N 14 19 \N
+308 \N 139 14 \N
+309 \N 14 139 \N
+310 \N 139 140 \N
+311 \N 140 139 \N
+312 \N 140 28 \N
+313 \N 28 140 \N
+314 \N 112 141 \N
+315 \N 141 112 \N
+316 \N 113 141 \N
+317 \N 141 113 \N
+318 \N 141 91 \N
+319 \N 91 141 \N
+320 \N 122 142 \N
+321 \N 142 141 \N
+322 \N 141 142 \N
+323 \N 146 145 \N
+324 \N 145 146 \N
+325 \N 145 143 \N
+326 \N 143 145 \N
+329 \N 147 148 1
+330 \N 148 147 1
+331 \N 149 150 \N
+332 \N 150 149 \N
+333 \N 151 152 1
+334 \N 152 151 1
+335 \N 153 147 1
+336 \N 147 153 1
+337 \N 109 148 1
+338 \N 148 109 1
+339 \N 108 149 1
+340 \N 149 108 1
+341 \N 150 154 1
+342 \N 154 150 1
+343 \N 154 155 \N
+344 \N 155 154 \N
+345 \N 151 155 1
+346 \N 155 151 1
+347 \N 152 143 1
+348 \N 143 152 1
+371 \N 110 107 \N
+372 \N 107 110 \N
+373 \N 111 110 \N
+374 \N 110 111 \N
+375 \N 111 161 \N
+376 \N 161 111 \N
+377 \N 110 108 \N
+378 \N 108 110 \N
+379 \N 109 160 \N
+380 \N 160 109 \N
+381 \N 161 160 \N
+382 \N 160 161 \N
+387 \N 176 175 \N
+388 \N 175 176 \N
+389 \N 169 171 \N
+390 \N 171 169 \N
+391 \N 170 172 \N
+392 \N 172 170 \N
+393 \N 167 173 \N
+394 \N 173 167 \N
+395 \N 168 174 \N
+396 \N 174 168 \N
+397 \N 153 137 \N
+398 \N 137 153 \N
+399 \N 153 171 \N
+400 \N 171 153 \N
+401 \N 137 172 \N
+402 \N 172 137 \N
+403 \N 172 153 \N
+404 \N 153 172 \N
+413 \N 172 173 \N
+414 \N 173 172 \N
+415 \N 173 174 \N
+416 \N 174 173 \N
+417 \N 182 181 \N
+418 \N 181 182 \N
+419 \N 181 180 \N
+420 \N 180 181 \N
+421 \N 180 177 \N
+422 \N 177 180 \N
+423 \N 180 178 \N
+424 \N 178 180 \N
+425 \N 180 179 \N
+426 \N 179 180 \N
+429 \N 143 183 \N
+430 \N 183 143 \N
+431 \N 183 182 \N
+432 \N 182 183 \N
+433 \N 144 183 \N
+434 \N 183 144 \N
+437 \N 99 121 \N
+438 \N 121 99 \N
+439 \N 99 114 \N
+440 \N 114 99 \N
+441 \N 121 114 \N
+442 \N 114 121 \N
+443 \N 109 185 \N
+444 \N 185 109 \N
+445 \N 186 160 \N
+446 \N 160 186 \N
+453 \N 76 85 2
+454 \N 85 76 2
+455 \N 58 187 1
+456 \N 187 58 1
+457 \N 85 187 \N
+458 \N 187 85 \N
+461 \N 90 120 1
+462 \N 120 90 1
+465 \N 202 201 \N
+466 \N 201 202 \N
+467 \N 201 200 1
+468 \N 200 201 1
+469 \N 200 199 1
+470 \N 199 200 1
+471 \N 199 198 1
+472 \N 198 199 1
+473 \N 198 197 \N
+474 \N 197 198 \N
+475 \N 197 196 \N
+476 \N 196 197 \N
+477 \N 196 195 \N
+478 \N 195 196 \N
+479 \N 195 194 1
+480 \N 194 195 1
+481 \N 194 193 1
+482 \N 193 194 1
+485 \N 189 190 \N
+486 \N 190 189 \N
+487 \N 190 191 \N
+488 \N 191 190 \N
+489 \N 191 193 \N
+490 \N 193 191 \N
+493 \N 203 207 \N
+494 \N 207 203 \N
+495 \N 207 205 \N
+496 \N 205 207 \N
+497 \N 68 205 \N
+498 \N 205 68 \N
+499 \N 205 142 \N
+500 \N 142 205 \N
+501 \N 142 206 \N
+502 \N 206 142 \N
+505 \N 207 88 \N
+506 \N 88 207 \N
+135 \N 50 51 \N
+136 \N 51 50 \N
+507 \N 49 50 2
+508 \N 50 49 2
+513 \N 171 216 \N
+514 \N 216 171 \N
+515 \N 216 175 \N
+516 \N 175 216 \N
+517 \N 175 211 \N
+518 \N 211 175 \N
+519 \N 211 215 \N
+520 \N 215 211 \N
+521 \N 215 213 \N
+522 \N 213 215 \N
+523 \N 213 172 \N
+524 \N 172 213 \N
+525 \N 211 212 \N
+526 \N 212 211 \N
+527 \N 212 214 \N
+528 \N 214 212 \N
+529 \N 214 213 \N
+530 \N 213 214 \N
+531 \N 214 174 \N
+532 \N 174 214 \N
+533 \N 172 216 \N
+534 \N 216 172 \N
+535 \N 157 215 \N
+536 \N 215 157 \N
+537 \N 209 215 \N
+538 \N 215 209 \N
+539 \N 212 218 \N
+540 \N 218 212 \N
+541 \N 211 217 \N
+542 \N 217 211 \N
+543 \N 217 212 \N
+544 \N 212 217 \N
+545 \N 163 146 \N
+546 \N 146 163 \N
+551 \N 209 208 2
+552 \N 208 209 2
+563 \N 219 145 \N
+564 \N 145 219 \N
+569 \N 208 160 \N
+570 \N 160 208 \N
+571 \N 208 219 2
+572 \N 219 208 2
+573 \N 209 219 2
+574 \N 219 209 2
+575 \N 220 22 \N
+576 \N 22 220 \N
+577 \N 220 19 2
+578 \N 19 220 2
+579 \N 220 90 2
+580 \N 90 220 2
+66 \N 26 19 \N
+65 \N 19 26 \N
+581 \N 222 161 \N
+582 \N 161 222 \N
+583 \N 222 157 2
+584 \N 157 222 2
+585 \N 163 157 2
+586 \N 157 163 2
+587 \N 163 222 2
+588 \N 222 163 2
+591 \N 48 223 \N
+592 \N 223 48 \N
+593 \N 43 223 \N
+594 \N 223 43 \N
+595 \N 206 232 \N
+596 \N 232 206 \N
+597 \N 232 231 \N
+598 \N 231 232 \N
+599 \N 231 230 \N
+600 \N 230 231 \N
+601 \N 230 233 \N
+602 \N 233 230 \N
+603 \N 190 233 \N
+604 \N 233 190 \N
+605 \N 190 226 \N
+606 \N 226 190 \N
+607 \N 226 227 \N
+608 \N 227 226 \N
+609 \N 227 228 \N
+610 \N 228 227 \N
+611 \N 228 229 \N
+612 \N 229 228 \N
+613 \N 229 224 2
+614 \N 224 229 2
+615 \N 223 225 \N
+616 \N 225 223 \N
+617 \N 224 225 \N
+618 \N 225 224 \N
+\.
+
+
+--
+-- Data for Name: mapdata_graphnode; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_graphnode (id, geometry, space_id, import_tag) FROM stdin;
+7 {"type": "Point", "coordinates": [268.0, 198.79]} 71 \N
+8 {"type": "Point", "coordinates": [269.65, 198.79]} 71 \N
+14 {"type": "Point", "coordinates": [271.42, 193.34]} 75 \N
+16 {"type": "Point", "coordinates": [268.09, 198.69]} 78 \N
+17 {"type": "Point", "coordinates": [269.61, 198.69]} 78 \N
+18 {"type": "Point", "coordinates": [268.2, 193.38]} 79 \N
+19 {"type": "Point", "coordinates": [271.51, 204.39]} 75 \N
+22 {"type": "Point", "coordinates": [271.33, 204.55]} 52 \N
+23 {"type": "Point", "coordinates": [268.14, 196.22]} 78 \N
+24 {"type": "Point", "coordinates": [269.69, 195.27]} 78 \N
+25 {"type": "Point", "coordinates": [269.74, 193.86]} 52 \N
+26 {"type": "Point", "coordinates": [269.01, 204.52]} 76 \N
+28 {"type": "Point", "coordinates": [273.68, 179.73]} 75 \N
+29 {"type": "Point", "coordinates": [273.64, 179.03]} 35 \N
+31 {"type": "Point", "coordinates": [343.36, 201.92]} 84 \N
+32 {"type": "Point", "coordinates": [339.12, 201.89]} 83 \N
+33 {"type": "Point", "coordinates": [339.09, 206.9]} 83 \N
+34 {"type": "Point", "coordinates": [340.21, 196.98]} 45 \N
+35 {"type": "Point", "coordinates": [342.65, 196.99]} 45 \N
+36 {"type": "Point", "coordinates": [343.63, 193.3]} 45 \N
+37 {"type": "Point", "coordinates": [423.11, 196.75]} 45 \N
+38 {"type": "Point", "coordinates": [425.57, 196.71]} 45 \N
+39 {"type": "Point", "coordinates": [423.1, 197.66]} 39 \N
+40 {"type": "Point", "coordinates": [425.54, 197.61]} 39 \N
+41 {"type": "Point", "coordinates": [340.2, 197.53]} 46 \N
+42 {"type": "Point", "coordinates": [342.64, 197.51]} 46 \N
+43 {"type": "Point", "coordinates": [424.55, 193.06]} 45 \N
+44 {"type": "Point", "coordinates": [339.18, 206.82]} 86 \N
+45 {"type": "Point", "coordinates": [339.21, 203.19]} 64 \N
+46 {"type": "Point", "coordinates": [343.34, 206.84]} 84 \N
+30 {"type": "Point", "coordinates": [346.93, 206.89]} 46 \N
+47 {"type": "Point", "coordinates": [350.08, 189.87]} 45 \N
+48 {"type": "Point", "coordinates": [350.12, 193.27]} 45 \N
+49 {"type": "Point", "coordinates": [347.38, 189.84]} 88 \N
+50 {"type": "Point", "coordinates": [347.37, 189.81]} 50 \N
+51 {"type": "Point", "coordinates": [350.12, 189.91]} 49 \N
+52 {"type": "Point", "coordinates": [350.08, 193.43]} 49 \N
+53 {"type": "Point", "coordinates": [340.63, 193.43]} 49 \N
+54 {"type": "Point", "coordinates": [341.04, 199.69]} 49 \N
+55 {"type": "Point", "coordinates": [344.57, 199.69]} 47 \N
+58 {"type": "Point", "coordinates": [274.98, 142.64]} 95 \N
+60 {"type": "Point", "coordinates": [272.95, 142.34]} 95 \N
+61 {"type": "Point", "coordinates": [273.1, 140.53]} 96 \N
+64 {"type": "Point", "coordinates": [276.94, 121.61]} 92 \N
+65 {"type": "Point", "coordinates": [275.01, 121.37]} 91 \N
+66 {"type": "Point", "coordinates": [276.52, 119.82]} 90 \N
+67 {"type": "Point", "coordinates": [277.64, 119.94]} 89 \N
+68 {"type": "Point", "coordinates": [274.93, 144.38]} 61 \N
+69 {"type": "Point", "coordinates": [268.85, 156.86]} 14 \N
+70 {"type": "Point", "coordinates": [268.96, 150.0]} 97 \N
+71 {"type": "Point", "coordinates": [272.17, 149.89]} 97 \N
+72 {"type": "Point", "coordinates": [273.0, 142.2]} 97 \N
+73 {"type": "Point", "coordinates": [275.37, 142.31]} 97 \N
+74 {"type": "Point", "coordinates": [276.04, 137.0]} 98 \N
+75 {"type": "Point", "coordinates": [277.81, 137.11]} 98 \N
+76 {"type": "Point", "coordinates": [273.1, 140.15]} 100 \N
+77 {"type": "Point", "coordinates": [277.12, 142.84]} 95 \N
+78 {"type": "Point", "coordinates": [279.29, 136.82]} 94 \N
+79 {"type": "Point", "coordinates": [280.18, 127.07]} 94 \N
+80 {"type": "Point", "coordinates": [272.0, 136.02]} 93 \N
+81 {"type": "Point", "coordinates": [273.13, 124.11]} 93 \N
+82 {"type": "Point", "coordinates": [278.37, 136.7]} 92 \N
+83 {"type": "Point", "coordinates": [279.32, 127.01]} 92 \N
+84 {"type": "Point", "coordinates": [277.25, 124.28]} 92 \N
+85 {"type": "Point", "coordinates": [275.61, 136.54]} 92 \N
+86 {"type": "Point", "coordinates": [266.22, 135.88]} 93 \N
+87 {"type": "Point", "coordinates": [262.97, 135.65]} 93 \N
+88 {"type": "Point", "coordinates": [262.61, 139.88]} 61 \N
+89 {"type": "Point", "coordinates": [266.01, 140.12]} 61 \N
+91 {"type": "Point", "coordinates": [272.81, 204.74]} 33 \N
+92 {"type": "Point", "coordinates": [265.56, 206.42]} 58 \N
+93 {"type": "Point", "coordinates": [265.81, 202.38]} 58 \N
+94 {"type": "Point", "coordinates": [263.41, 206.55]} 56 \N
+95 {"type": "Point", "coordinates": [265.53, 207.35]} 57 \N
+96 {"type": "Point", "coordinates": [267.4, 206.45]} 40 \N
+97 {"type": "Point", "coordinates": [251.24, 201.56]} 58 \N
+98 {"type": "Point", "coordinates": [251.27, 200.21]} 30 \N
+99 {"type": "Point", "coordinates": [269.35, 222.9]} 36 \N
+100 {"type": "Point", "coordinates": [269.32, 224.24]} 32 \N
+101 {"type": "Point", "coordinates": [268.05, 224.27]} 32 \N
+102 {"type": "Point", "coordinates": [263.94, 224.3]} 32 \N
+103 {"type": "Point", "coordinates": [261.46, 224.33]} 32 \N
+104 {"type": "Point", "coordinates": [261.4, 225.6]} 54 \N
+105 {"type": "Point", "coordinates": [263.94, 225.6]} 55 \N
+106 {"type": "Point", "coordinates": [268.02, 225.63]} 42 \N
+107 {"type": "Point", "coordinates": [273.6, 224.2]} 31 \N
+108 {"type": "Point", "coordinates": [273.47, 231.17]} 31 \N
+109 {"type": "Point", "coordinates": [273.47, 233.06]} 31 \N
+110 {"type": "Point", "coordinates": [278.34, 224.14]} 31 \N
+111 {"type": "Point", "coordinates": [280.29, 224.11]} 31 \N
+112 {"type": "Point", "coordinates": [278.33, 221.85]} 33 \N
+113 {"type": "Point", "coordinates": [280.22, 221.8]} 33 \N
+114 {"type": "Point", "coordinates": [237.61, 212.28]} 36 \N
+115 {"type": "Point", "coordinates": [237.64, 211.32]} 58 \N
+116 {"type": "Point", "coordinates": [237.83, 201.97]} 58 \N
+117 {"type": "Point", "coordinates": [269.23, 202.28]} 58 \N
+118 {"type": "Point", "coordinates": [269.63, 202.31]} 59 \N
+119 {"type": "Point", "coordinates": [271.46, 202.31]} 59 \N
+120 {"type": "Point", "coordinates": [271.49, 211.57]} 59 \N
+121 {"type": "Point", "coordinates": [271.46, 212.19]} 36 \N
+122 {"type": "Point", "coordinates": [271.48, 193.49]} 59 \N
+123 {"type": "Point", "coordinates": [269.69, 193.46]} 59 \N
+124 {"type": "Point", "coordinates": [267.96, 193.74]} 52 \N
+125 {"type": "Point", "coordinates": [271.37, 193.6]} 52 \N
+126 {"type": "Point", "coordinates": [271.51, 187.46]} 52 \N
+127 {"type": "Point", "coordinates": [273.49, 187.36]} 20 \N
+128 {"type": "Point", "coordinates": [273.6, 178.85]} 14 \N
+129 {"type": "Point", "coordinates": [273.81, 202.63]} 20 \N
+130 {"type": "Point", "coordinates": [276.47, 203.2]} 20 \N
+131 {"type": "Point", "coordinates": [276.51, 205.08]} 20 \N
+132 {"type": "Point", "coordinates": [275.82, 205.67]} 20 \N
+133 {"type": "Point", "coordinates": [275.82, 206.59]} 19 \N
+134 {"type": "Point", "coordinates": [277.91, 205.08]} 16 \N
+135 {"type": "Point", "coordinates": [277.99, 203.28]} 17 \N
+136 {"type": "Point", "coordinates": [273.67, 222.93]} 20 \N
+137 {"type": "Point", "coordinates": [273.68, 223.43]} 22 \N
+138 {"type": "Point", "coordinates": [273.74, 172.26]} 14 \N
+90 {"type": "Point", "coordinates": [271.46, 204.74]} 59 \N
+139 {"type": "Point", "coordinates": [271.63, 186.67]} 75 \N
+140 {"type": "Point", "coordinates": [273.53, 186.63]} 75 \N
+141 {"type": "Point", "coordinates": [279.05, 204.74]} 33 \N
+142 {"type": "Point", "coordinates": [273.54, 193.55]} 61 \N
+143 {"type": "Point", "coordinates": [273.56, 233.13]} 105 \N
+144 {"type": "Point", "coordinates": [273.61, 200.93]} 105 \N
+145 {"type": "Point", "coordinates": [283.08, 233.07]} 105 \N
+146 {"type": "Point", "coordinates": [283.12, 231.17]} 105 \N
+147 {"type": "Point", "coordinates": [268.5, 231.14]} 101 \N
+148 {"type": "Point", "coordinates": [268.5, 233.12]} 101 \N
+149 {"type": "Point", "coordinates": [268.22, 231.1]} 103 \N
+150 {"type": "Point", "coordinates": [268.19, 233.13]} 103 \N
+151 {"type": "Point", "coordinates": [268.47, 231.1]} 107 \N
+152 {"type": "Point", "coordinates": [268.44, 233.13]} 107 \N
+153 {"type": "Point", "coordinates": [273.56, 231.16]} 22 \N
+154 {"type": "Point", "coordinates": [273.16, 233.09]} 104 \N
+155 {"type": "Point", "coordinates": [273.16, 231.08]} 104 \N
+157 {"type": "Point", "coordinates": [284.93, 231.02]} 109 \N
+160 {"type": "Point", "coordinates": [283.07, 233.11]} 31 \N
+161 {"type": "Point", "coordinates": [283.13, 231.17]} 31 \N
+163 {"type": "Point", "coordinates": [284.84, 231.08]} 113 \N
+167 {"type": "Point", "coordinates": [305.62, 222.48]} 27 \N
+168 {"type": "Point", "coordinates": [305.77, 230.46]} 26 \N
+169 {"type": "Point", "coordinates": [275.8, 234.32]} 25 \N
+170 {"type": "Point", "coordinates": [281.66, 222.42]} 24 \N
+171 {"type": "Point", "coordinates": [275.8, 232.85]} 22 \N
+172 {"type": "Point", "coordinates": [281.69, 224.75]} 22 \N
+173 {"type": "Point", "coordinates": [305.59, 224.57]} 22 \N
+174 {"type": "Point", "coordinates": [305.89, 228.93]} 22 \N
+175 {"type": "Point", "coordinates": [282.31, 239.23]} 22 \N
+176 {"type": "Point", "coordinates": [282.31, 240.68]} 43 \N
+177 {"type": "Point", "coordinates": [263.59, 206.51]} 114 \N
+178 {"type": "Point", "coordinates": [265.58, 207.35]} 115 \N
+179 {"type": "Point", "coordinates": [267.32, 206.52]} 116 \N
+180 {"type": "Point", "coordinates": [265.59, 206.55]} 117 \N
+181 {"type": "Point", "coordinates": [265.67, 202.45]} 117 \N
+182 {"type": "Point", "coordinates": [271.51, 202.31]} 117 \N
+183 {"type": "Point", "coordinates": [273.62, 202.29]} 105 \N
+185 {"type": "Point", "coordinates": [273.64, 234.85]} 29 \N
+186 {"type": "Point", "coordinates": [283.07, 234.95]} 29 \N
+187 {"type": "Point", "coordinates": [275.56, 138.91]} 95 \N
+189 {"type": "Point", "coordinates": [420.51, 199.65]} 48 \N
+190 {"type": "Point", "coordinates": [424.05, 199.62]} 135 \N
+191 {"type": "Point", "coordinates": [424.09, 201.94]} 134 \N
+193 {"type": "Point", "coordinates": [426.26, 203.63]} 136 \N
+194 {"type": "Point", "coordinates": [426.28, 207.17]} 136 \N
+195 {"type": "Point", "coordinates": [423.67, 207.15]} 136 \N
+196 {"type": "Point", "coordinates": [422.13, 207.09]} 137 \N
+197 {"type": "Point", "coordinates": [422.22, 201.92]} 137 \N
+198 {"type": "Point", "coordinates": [422.64, 201.86]} 138 \N
+199 {"type": "Point", "coordinates": [426.23, 201.88]} 138 \N
+200 {"type": "Point", "coordinates": [426.25, 206.9]} 138 \N
+201 {"type": "Point", "coordinates": [422.63, 206.8]} 138 \N
+202 {"type": "Point", "coordinates": [422.01, 206.78]} 39 \N
+203 {"type": "Point", "coordinates": [241.48, 129.06]} 61 \N
+205 {"type": "Point", "coordinates": [274.26, 166.82]} 61 \N
+206 {"type": "Point", "coordinates": [303.64, 193.56]} 61 \N
+207 {"type": "Point", "coordinates": [252.06, 145.94]} 61 \N
+208 {"type": "Point", "coordinates": [284.96, 233.01]} 4 \N
+209 {"type": "Point", "coordinates": [284.91, 233.08]} 108 \N
+211 {"type": "Point", "coordinates": [287.64, 234.7]} 22 \N
+212 {"type": "Point", "coordinates": [300.35, 234.68]} 22 \N
+213 {"type": "Point", "coordinates": [287.69, 229.54]} 22 \N
+214 {"type": "Point", "coordinates": [300.54, 229.65]} 22 \N
+215 {"type": "Point", "coordinates": [287.66, 232.11]} 22 \N
+216 {"type": "Point", "coordinates": [282.2, 233.36]} 22 \N
+217 {"type": "Point", "coordinates": [293.06, 239.65]} 22 \N
+218 {"type": "Point", "coordinates": [300.84, 239.76]} 22 \N
+219 {"type": "Point", "coordinates": [284.88, 233.21]} 112 \N
+220 {"type": "Point", "coordinates": [269.01, 204.8]} 142 \N
+222 {"type": "Point", "coordinates": [284.76, 231.21]} 5 \N
+223 {"type": "Point", "coordinates": [413.07, 193.08]} 45 \N
+224 {"type": "Point", "coordinates": [413.15, 188.09]} 151 \N
+225 {"type": "Point", "coordinates": [413.14, 190.41]} 45 \N
+226 {"type": "Point", "coordinates": [424.06, 193.6]} 135 \N
+227 {"type": "Point", "coordinates": [413.06, 193.15]} 135 \N
+228 {"type": "Point", "coordinates": [413.14, 190.08]} 135 \N
+229 {"type": "Point", "coordinates": [413.14, 187.75]} 150 \N
+230 {"type": "Point", "coordinates": [428.36, 177.65]} 61 \N
+231 {"type": "Point", "coordinates": [340.77, 177.97]} 61 \N
+232 {"type": "Point", "coordinates": [325.7, 184.16]} 61 \N
+233 {"type": "Point", "coordinates": [428.37, 199.69]} 61 \N
+\.
+
+
+--
+-- Data for Name: mapdata_groundaltitude; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_groundaltitude (id, name, altitude) FROM stdin;
+1 a1-1 -5.00
+2 parking-1 -3.45
+4 a1-1parking to corridor -3.60
+5 a-1WCs -4.10
+6 a-1corridorsem3 -4.50
+7 a1-2 -6.21
+8 a2floor1 3.87
+9 a2floor2 9.05
+10 a4ground floor 1.00
+11 A4mezzanine-1 -2.00
+12 a1f1 4.60
+13 a1f2 9.25
+3 outside ground floor 0.00
+14 a1 ground floor 0.60
+\.
+
+
+--
+-- Data for Name: mapdata_hole; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_hole (id, geometry, space_id, import_tag) FROM stdin;
+4 {"type": "Polygon", "coordinates": [[[363.92, 158.06], [364.46, 152.22], [354.19, 151.27], [343.89, 151.17], [343.92, 157.08], [353.97, 157.05], [363.92, 158.06]]]} 60 \N
+5 {"type": "Polygon", "coordinates": [[[342.74, 206.19], [342.74, 202.61], [339.69, 202.61], [339.69, 206.19], [342.74, 206.19]]]} 84 \N
+6 {"type": "Polygon", "coordinates": [[[338.62, 202.49], [338.62, 207.6], [342.8, 207.6], [342.8, 205.38], [343.57, 205.38], [343.57, 203.28], [342.82, 203.28], [342.82, 202.52], [338.62, 202.49]]]} 87 \N
+8 {"type": "Polygon", "coordinates": [[[272.74, 232.17], [268.76, 232.17], [268.76, 233.94], [272.75, 233.94], [272.74, 232.17]]]} 102 \N
+7 {"type": "Polygon", "coordinates": [[[276.65, 142.16], [277.04, 137.98], [278.01, 138.07], [277.6, 142.23], [276.65, 142.16]]]} 95 \N
+9 {"type": "Polygon", "coordinates": [[[268.92, 198.23], [270.36, 198.23], [270.36, 194.29], [268.93, 194.29], [268.92, 198.23]]]} 59 \N
+10 {"type": "Polygon", "coordinates": [[[422.62, 206.17], [422.62, 202.6], [425.57, 202.6], [425.57, 206.17], [422.62, 206.17]]]} 137 \N
+11 {"type": "Polygon", "coordinates": [[[422.85, 207.52], [422.82, 205.37], [422.08, 205.35], [422.1, 203.22], [422.8, 203.16], [422.86, 202.42], [427.08, 202.42], [427.08, 207.54], [422.85, 207.52]]]} 139 \N
+\.
+
+
+--
+-- Data for Name: mapdata_labelsettings; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_labelsettings (id, titles, min_zoom, max_zoom, font_size) FROM stdin;
+1 {"en": "Conference Rooms"} -10.0 10.0 15
+2 {"en": "Campus main directions"} -10.0 10.0 22
+3 {"en": "Utilities"} -10.0 10.0 12
+\.
+
+
+--
+-- Data for Name: mapdata_leavedescription; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_leavedescription (id, description_i18n, space_id, target_space_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_level; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_level (locationslug_ptr_id, titles, can_search, can_describe, base_altitude, default_height, door_height, short_label, access_restriction_id, on_top_of_id, icon, label_overrides, label_settings_id, external_url, import_block_data, import_block_geom) FROM stdin;
+11 {"en": "Floor -1 to 0"} f f -3.00 3.00 2.00 floor-1to0 \N 10 \N {} \N \N f f
+37 {"en": "Floor 1"} t t 5.00 3.25 2.00 floor1 \N \N \N {} \N \N f f
+38 {"en": "Floor 2"} t t 8.75 3.70 2.00 floor2 \N \N \N {} \N \N f f
+34 {"en": "Floor -2"} t t -6.21 2.45 2.00 floor-2 \N \N \N {} \N \N f f
+77 {"en": "Floor -2 to -1"} f t -4.90 3.00 2.00 floor-2to-1 \N 34 \N {} \N \N f f
+82 {"en": "Floor 1 to 2"} f f 6.75 3.00 2.00 floor1to2 \N 37 \N {} \N \N f f
+10 {"en": "Floor -1"} t t -5.00 5.00 2.00 floor-1 \N \N \N {} 2 \N f f
+85 {"en": "Floor 0 to 1"} f f 2.10 3.00 2.00 floor0to1 \N 2 \N {} \N \N f f
+2 {"en": "Ground Floor"} f t 0.00 4.00 3.00 floor0 \N \N \N {} \N \N f f
+\.
+
+
+--
+-- Data for Name: mapdata_level_groups; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_level_groups (id, level_id, locationgroup_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_lineobstacle; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_lineobstacle (id, geometry, width, height, space_id, import_tag, altitude, group_id) FROM stdin;
+1 {"type": "LineString", "coordinates": [[283.72, 222.2], [283.72, 194.36]]} 0.60 1.20 33 \N 0.00 \N
+2 {"type": "LineString", "coordinates": [[275.06, 219.93], [275.06, 205.44]]} 0.15 0.60 33 \N 0.00 \N
+9 {"type": "LineString", "coordinates": [[297.25, 181.94], [299.69, 175.13], [301.81, 175.19], [301.81, 172.56], [299.13, 172.44], [296.69, 168.81], [302, 168.88], [302, 164.94], [295.5, 164.94], [297.31, 162.19], [301.88, 162.19], [301.88, 158.93], [296.37, 158.93], [295.38, 157.13], [299.38, 157.13], [299.75, 153.13], [337.44, 153.13], [341.69, 151.06], [343.44, 150.94], [343.44, 157.44], [364.06, 158.5], [367.5, 158.75], [367.5, 175.38], [340.44, 175.38], [321.88, 181.88], [297.25, 181.94]]} 0.15 0.80 61 \N 0.00 \N
+5 {"type": "LineString", "coordinates": [[233.53, 179.22], [241.07, 179.22], [241.07, 153.74], [240.05, 153.74], [240.05, 152.83], [240.39, 152.83], [240.39, 152.4], [240.2, 152.07], [239.98, 151.85], [239.71, 151.85], [234.88, 151.85], [234.64, 151.99], [234.52, 152.14], [234.44, 152.36], [234.4, 152.47], [234.4, 152.72], [234.71, 152.72], [234.71, 153.75], [233.66, 153.75], [233.53, 179.22]]} 0.25 0.20 61 \N 0.00 \N
+7 {"type": "LineString", "coordinates": [[214.81, 182.53], [231.45, 182.53], [231.45, 152.6], [227.06, 152.6], [223.57, 153.91], [221.01, 155.37], [218.6, 157.42], [216.78, 159.9], [215.03, 163.11], [214.81, 182.53]]} 0.15 0.80 61 \N 0.00 \N
+8 {"type": "LineString", "coordinates": [[243.36, 152.6], [243.36, 182.24], [259.35, 182.24], [259.35, 160.99], [258.91, 158.59], [257.89, 156.4], [256.57, 155.23], [254.67, 153.84], [252.04, 152.6], [243.36, 152.6]]} 0.15 0.80 61 \N 0.00 \N
+\.
+
+
+--
+-- Data for Name: mapdata_locationgroup; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_locationgroup (locationslug_ptr_id, titles, can_search, can_describe, priority, color, access_restriction_id, category_id, icon, hierarchy, label_settings_id, hub_import_type, descriptions, can_report_missing, report_help_texts, in_legend) FROM stdin;
+120 {"en": "Checkin area (speakers)"} f f 0 \N \N 1 \N 0 \N \N {} dont_offer {} f
+119 {"en": "Checkin area"} f f 0 \N \N 1 \N 0 2 \N {} dont_offer {} f
+66 {"en": "Bike Parking"} t t 0 #dbb991 \N 1 pedal_bike 0 \N \N {} dont_offer {} t
+28 {"en": "Hackathon Space"} t t 1 #e3e6ab \N 2 \N 0 \N \N {} dont_offer {} t
+3 {"en": "Elevator"} t t 0 #f4cccc \N 2 elevator 0 \N \N {} dont_offer {} t
+13 {"en": "Car Park"} t t 0 \N \N 2 local_parking 0 \N \N {} dont_offer {} f
+7 {"en": "WC for Men"} t t 0 \N \N 4 \N 0 \N \N {} dont_offer {} f
+18 {"en": "Barrier Free WC"} t t 0 \N \N 4 \N 0 \N \N {} dont_offer {} f
+8 {"en": "WC for Women"} t t 0 \N \N 4 \N 0 \N \N {} dont_offer {} f
+62 {"en": "Water"} f f 1 #e5e4e5 \N 3 \N 1 \N \N {} dont_offer {} f
+123 {"en": "Food and Beverage"} t t 0 #ffe18c \N 3 emoji_food_beverage 0 \N \N {} dont_offer {} t
+9 {"en": "WC"} f f 0 #7b8ebc \N 3 \N 0 \N \N {} dont_offer {} f
+133 {"en": "Wardrobe"} f f 0 #dcc6e0 \N 3 \N 1 \N \N {} dont_offer {} f
+65 {"en": "Green Area"} f f 0 #bbb68f \N 3 \N 0 \N \N {} dont_offer {} f
+23 {"en": "Conference Room"} t t 2 \N \N 2 \N 1 1 \N {} dont_offer {} f
+21 {"en": "Conference area"} f f 0 #d0e8fa \N 3 \N 0 \N \N {} dont_offer {} t
+144 {"en": "Car Park Payment Machine"} t f 0 \N \N 5 payments 0 3 \N {} dont_offer {} f
+148 {"en": "ATM"} t f 0 \N \N 5 credit_card 0 3 \N {} dont_offer {} f
+\.
+
+
+--
+-- Data for Name: mapdata_locationgroupcategory; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_locationgroupcategory (id, name, single, titles, titles_plural, allow_levels, allow_spaces, allow_areas, allow_pois, priority, help_texts, allow_dynamic_locations) FROM stdin;
+1 areatype t {"en": "Area Type"} {"en": "Area Types"} f f t f 11 {"en": "Choose an area type"} f
+2 spacetype t {"en": "Space Type"} {"en": "Space Types"} f t f f 10 {"en": "Choose a space type"} f
+3 colors t {"en": "Color Group"} {"en": "Colors Group"} f t t t -1 {"en": "Choose a color group"} t
+4 wc f {"en": "WC Group"} {"en": "WC Groups"} f t f f 0 {"en": "Choose a WC Group"} f
+5 poitype f {"en": "POI type"} {"en": "POI types"} f f f t 0 {"en": "Choose a POI Type"} f
+\.
+
+
+--
+-- Data for Name: mapdata_locationredirect; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_locationredirect (locationslug_ptr_id, target_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_locationslug; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_locationslug (id, slug) FROM stdin;
+11 floor-1to0
+14 car-park--1
+16 a1-wc--1
+17 a1-wc--1w
+19 a1-wc--1bf
+31 main-lobby
+32 corridor-main-lobby-kranhalle
+37 floor1
+38 floor2
+42 a1-wc-0m2
+43 a1-wc--12
+44 noi-techpark-infodesk
+47 a2f0wc
+51 theather
+54 a1f0wcbf
+55 a1f0wcw
+56 a1f0wcw2
+57 a1f0wcbf2
+58 a1f0corridor
+63 pool
+94 a4noisteriarest
+93 a4noisteriabar
+69 \N
+68 \N
+70 \N
+117 a1f2corridorstartup
+124 jobwall
+73 \N
+33 main-entrance
+49 a2f0corridor
+74 \N
+125 coffee-area
+34 floor-2
+127 alumix
+77 floor-2to-1
+128 alumix-restaurant
+89 a4wcmen
+75 corridor-car-park--2
+91 a4wcbf
+79 a2f-2sd
+90 a4wcwomen
+13 car-park
+97 a4toparking
+98 a4mezzanine
+95 a4entrance
+52 corridor-car-park--1-park-1
+7 wc-for-men
+78 a1stairsd-2-1
+71 \N
+20 corridor-car-park--1-foyer
+18 wc-barrier-free
+41 elev0
+101 a1stairsb-10
+102 a1stairwaybf0
+35 car-park--2
+80 car-ramp-2
+81 car-ramp-1
+60 car-access
+82 floor1to2
+103 a1stairsb01
+64 a2f0stairseast
+46 a2f2multimediacenter
+86 a2stairwaybf0
+87 a2stairwaybf2
+104 a1f1corridor
+105 a1f2corridor
+27 sem1
+107 a1stairsb12
+8 wc-for-women
+5 a1el2
+109 a1f-1el2
+111 a1f1el2
+113 a1f2el2
+40 a1-wc-0m
+114 a1f2wcwomen
+115 a1f2wcbf
+116 a1f2wcmen
+118 a1theathertopiazza
+96 a4f0elev
+25 sem4
+62 water
+24 sem3
+121 checkin
+122 checkin-speakers
+92 a4corridor
+123 fab
+9 \N
+99 a4stairs
+26 sem2
+133 \N
+100 a4elevator-1
+65 greenarea
+10 floor-1
+22 foyer
+67 bycicle-park1
+126 wardrobe
+59 a1f0corridorpark
+120 \N
+119 \N
+66 bicyclepark
+28 hackathon-space
+3 el
+23 conference-room
+21 \N
+134 a2stairwayaf0
+48 a2f0wc2
+136 \N
+137 \N
+138 \N
+83 a2stairwayb
+84 a2stairwaybf1
+139 \N
+39 auditorium
+36 kranhalle
+30 makerspace
+29 noise
+50 a2f0elev
+4 a1el1
+110 a1f1el1
+112 a1f2el1
+108 a1f-1el1
+85 floor0t01
+76 \N
+142 \N
+2 0
+145 \N
+144 \N
+148 \N
+146 \N
+147 \N
+149 \N
+61 piazza
+72 \N
+135 a2corridorwestf0
+150 \N
+151 \N
+45 a2f2corridor
+88 a2f1elev
+153 \N
+106 presidentoffice
+\.
+
+
+--
+-- Data for Name: mapdata_mapupdate; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_mapupdate (id, datetime, type, processed, geometries_changed, user_id) FROM stdin;
+210 2024-08-26 16:29:07.884+00 direct_edit t t 1
+209 2024-08-26 16:28:00.699+00 direct_edit t t 1
+211 2024-08-27 10:08:59.004972+00 management t f \N
+212 2024-08-27 10:09:19.465461+00 management t f \N
+213 2024-08-27 10:13:53.88039+00 direct_edit t f 1
+214 2024-08-27 10:14:57.981204+00 direct_edit t f 1
+215 2024-08-27 10:19:11.329148+00 direct_edit t t 1
+217 2024-08-29 09:18:33.55282+00 control_panel t t 1
+216 2024-08-29 09:13:55.910267+00 direct_edit t t 1
+224 2024-08-29 09:26:25.481507+00 direct_edit t t 1
+223 2024-08-29 09:25:13.004416+00 direct_edit t f 1
+222 2024-08-29 09:25:05.815454+00 direct_edit t t 1
+221 2024-08-29 09:24:38.776899+00 direct_edit t t 1
+220 2024-08-29 09:24:04.990566+00 direct_edit t t 1
+219 2024-08-29 09:23:11.100271+00 direct_edit t f 1
+218 2024-08-29 09:21:00.436979+00 direct_edit t f 1
+226 2024-08-29 09:28:42.264428+00 direct_edit t t 1
+225 2024-08-29 09:28:04.595118+00 direct_edit t t 1
+228 2024-08-29 09:30:34.905809+00 direct_edit t t 1
+227 2024-08-29 09:29:52.750463+00 direct_edit t t 1
+230 2024-08-29 09:33:17.930903+00 direct_edit t t 1
+229 2024-08-29 09:32:58.921582+00 direct_edit t t 1
+233 2024-08-29 09:35:39.654214+00 direct_edit t t 1
+232 2024-08-29 09:35:16.548169+00 direct_edit t t 1
+231 2024-08-29 09:34:20.803056+00 direct_edit t t 1
+238 2024-08-29 09:39:04.878827+00 direct_edit t t 1
+237 2024-08-29 09:38:39.870322+00 direct_edit t f 1
+236 2024-08-29 09:38:14.712598+00 direct_edit t t 1
+235 2024-08-29 09:37:48.887054+00 direct_edit t t 1
+234 2024-08-29 09:37:25.335645+00 direct_edit t t 1
+241 2024-08-29 09:41:22.091492+00 direct_edit t f 1
+240 2024-08-29 09:41:09.392881+00 direct_edit t f 1
+239 2024-08-29 09:40:47.681107+00 direct_edit t f 1
+243 2024-08-29 09:43:06.952599+00 direct_edit t f 1
+242 2024-08-29 09:42:42.579501+00 direct_edit t f 1
+248 2024-08-29 09:50:43.687998+00 direct_edit t f 1
+247 2024-08-29 09:49:54.703769+00 direct_edit t t 1
+246 2024-08-29 09:45:51.81963+00 direct_edit t t 1
+245 2024-08-29 09:45:43.221388+00 direct_edit t t 1
+244 2024-08-29 09:44:03.545467+00 direct_edit t f 1
+250 2024-08-29 09:52:50.042778+00 direct_edit t t 1
+249 2024-08-29 09:52:07.250959+00 direct_edit t f 1
+252 2024-08-29 09:56:04.807276+00 direct_edit t t 1
+251 2024-08-29 09:55:11.149843+00 direct_edit t t 1
+253 2024-08-29 09:58:45.59235+00 direct_edit t t 1
+263 2024-08-29 10:10:13.499096+00 direct_edit t f 1
+262 2024-08-29 10:09:58.138119+00 direct_edit t f 1
+261 2024-08-29 10:09:50.15106+00 direct_edit t f 1
+260 2024-08-29 10:09:28.440383+00 direct_edit t f 1
+259 2024-08-29 10:08:52.800394+00 direct_edit t t 1
+258 2024-08-29 10:03:57.066581+00 direct_edit t t 1
+257 2024-08-29 10:03:33.10395+00 direct_edit t t 1
+256 2024-08-29 10:03:16.565277+00 direct_edit t t 1
+255 2024-08-29 10:02:57.69302+00 direct_edit t t 1
+254 2024-08-29 10:02:38.237035+00 direct_edit t t 1
+274 2024-08-29 10:25:28.979404+00 direct_edit t f 1
+273 2024-08-29 10:25:22.62013+00 direct_edit t f 1
+272 2024-08-29 10:24:57.442782+00 direct_edit t f 1
+271 2024-08-29 10:24:50.46408+00 direct_edit t f 1
+270 2024-08-29 10:24:11.962458+00 direct_edit t t 1
+269 2024-08-29 10:23:46.154768+00 direct_edit t t 1
+268 2024-08-29 10:23:38.376962+00 direct_edit t t 1
+267 2024-08-29 10:23:25.265377+00 direct_edit t t 1
+266 2024-08-29 10:23:09.084656+00 direct_edit t t 1
+265 2024-08-29 10:23:04.380568+00 direct_edit t t 1
+264 2024-08-29 10:22:53.13712+00 direct_edit t t 1
+275 2024-08-29 10:28:18.446324+00 direct_edit t f 1
+282 2024-08-29 10:49:43.078575+00 direct_edit t f 1
+281 2024-08-29 10:49:37.142884+00 direct_edit t f 1
+280 2024-08-29 10:49:31.622177+00 direct_edit t f 1
+279 2024-08-29 10:49:23.006829+00 direct_edit t f 1
+278 2024-08-29 10:49:16.448651+00 direct_edit t f 1
+277 2024-08-29 10:49:08.6712+00 direct_edit t f 1
+276 2024-08-29 10:48:39.777997+00 direct_edit t f 1
+283 2024-08-29 10:51:13.586654+00 direct_edit t f 1
+284 2024-08-29 10:54:27.127752+00 direct_edit t f 1
+285 2024-09-04 14:17:36.439755+00 direct_edit t t 1
+291 2024-09-06 07:49:06.147603+00 direct_edit t t 1
+290 2024-09-06 07:48:02.455722+00 direct_edit t t 1
+289 2024-09-06 07:47:54.260887+00 direct_edit t t 1
+288 2024-09-06 07:47:45.454026+00 direct_edit t t 1
+287 2024-09-06 07:47:33.783657+00 direct_edit t t 1
+286 2024-09-06 07:47:16.576667+00 direct_edit t t 1
+292 2024-09-06 07:50:25.234843+00 direct_edit t t 1
+302 2024-09-06 15:28:30.847255+00 direct_edit t t 1
+301 2024-09-06 15:27:17.120685+00 direct_edit t t 1
+300 2024-09-06 15:27:07.071526+00 direct_edit t f 1
+299 2024-09-06 15:26:38.412071+00 direct_edit t t 1
+298 2024-09-06 15:26:20.069538+00 direct_edit t f 1
+297 2024-09-06 15:25:42.704835+00 direct_edit t t 1
+296 2024-09-06 15:25:12.19151+00 direct_edit t f 1
+295 2024-09-06 15:25:01.734519+00 direct_edit t f 1
+294 2024-09-06 15:23:15.453189+00 direct_edit t t 1
+293 2024-09-06 15:23:07.672316+00 direct_edit t t 1
+1451 2024-09-17 09:58:51.286769+00 direct_edit t t 1
+1463 2024-09-24 10:04:34.216787+00 management t t \N
+343 2024-09-06 15:45:12.369938+00 direct_edit t t 1
+342 2024-09-06 15:44:39.977339+00 direct_edit t t 1
+341 2024-09-06 15:43:49.834548+00 direct_edit t t 1
+340 2024-09-06 15:41:42.21649+00 direct_edit t f 1
+339 2024-09-06 15:41:39.146591+00 direct_edit t f 1
+338 2024-09-06 15:41:35.192818+00 direct_edit t f 1
+337 2024-09-06 15:41:28.49275+00 direct_edit t f 1
+336 2024-09-06 15:40:55.116517+00 direct_edit t f 1
+335 2024-09-06 15:40:52.249014+00 direct_edit t f 1
+334 2024-09-06 15:40:46.721944+00 direct_edit t f 1
+333 2024-09-06 15:40:39.957981+00 direct_edit t f 1
+332 2024-09-06 15:40:34.017518+00 direct_edit t f 1
+331 2024-09-06 15:40:29.918907+00 direct_edit t f 1
+330 2024-09-06 15:40:25.412466+00 direct_edit t f 1
+329 2024-09-06 15:40:07.586805+00 direct_edit t t 1
+328 2024-09-06 15:39:58.370542+00 direct_edit t t 1
+327 2024-09-06 15:39:51.615625+00 direct_edit t t 1
+326 2024-09-06 15:39:44.252296+00 direct_edit t t 1
+325 2024-09-06 15:39:36.05012+00 direct_edit t t 1
+324 2024-09-06 15:39:28.67254+00 direct_edit t t 1
+323 2024-09-06 15:39:20.688748+00 direct_edit t t 1
+322 2024-09-06 15:39:12.4951+00 direct_edit t t 1
+321 2024-09-06 15:39:05.125222+00 direct_edit t t 1
+320 2024-09-06 15:38:58.978201+00 direct_edit t t 1
+319 2024-09-06 15:38:52.424022+00 direct_edit t t 1
+318 2024-09-06 15:38:45.25631+00 direct_edit t t 1
+317 2024-09-06 15:38:37.47802+00 direct_edit t t 1
+316 2024-09-06 15:38:30.719377+00 direct_edit t t 1
+315 2024-09-06 15:38:23.554845+00 direct_edit t t 1
+314 2024-09-06 15:38:16.584641+00 direct_edit t t 1
+313 2024-09-06 15:37:58.567224+00 direct_edit t t 1
+312 2024-09-06 15:37:42.597163+00 direct_edit t t 1
+311 2024-09-06 15:37:27.229276+00 direct_edit t t 1
+310 2024-09-06 15:37:17.406104+00 direct_edit t t 1
+309 2024-09-06 15:36:49.97444+00 direct_edit t t 1
+308 2024-09-06 15:35:20.876125+00 direct_edit t f 1
+307 2024-09-06 15:32:59.171721+00 direct_edit t t 1
+306 2024-09-06 15:32:43.78461+00 direct_edit t t 1
+305 2024-09-06 15:32:28.731979+00 direct_edit t t 1
+304 2024-09-06 15:32:06.937298+00 direct_edit t f 1
+303 2024-09-06 15:31:16.321467+00 direct_edit t f 1
+345 2024-09-06 15:50:36.751498+00 direct_edit t f 1
+344 2024-09-06 15:50:01.149004+00 direct_edit t t 1
+352 2024-09-07 13:43:01.626708+00 direct_edit t f 1
+351 2024-09-07 13:42:57.534366+00 direct_edit t f 1
+350 2024-09-07 13:42:48.31167+00 direct_edit t f 1
+349 2024-09-07 13:42:42.988137+00 direct_edit t t 1
+348 2024-09-07 13:42:29.676839+00 direct_edit t t 1
+347 2024-09-07 13:42:22.290238+00 direct_edit t f 1
+346 2024-09-07 13:41:57.104812+00 direct_edit t t 1
+359 2024-09-07 13:45:13.724763+00 direct_edit t f 1
+358 2024-09-07 13:45:11.879539+00 direct_edit t f 1
+357 2024-09-07 13:45:10.0371+00 direct_edit t f 1
+356 2024-09-07 13:45:02.871721+00 direct_edit t f 1
+355 2024-09-07 13:44:59.794215+00 direct_edit t f 1
+354 2024-09-07 13:44:48.941889+00 direct_edit t t 1
+353 2024-09-07 13:44:40.756985+00 direct_edit t f 1
+360 2024-09-07 13:46:44.063729+00 direct_edit t t 1
+361 2024-09-07 13:48:12.30391+00 direct_edit t t 1
+362 2024-09-07 13:49:23.4101+00 direct_edit t t 1
+381 2024-09-07 15:20:12.780091+00 direct_edit t f 1
+380 2024-09-07 15:20:01.312732+00 direct_edit t f 1
+379 2024-09-07 15:19:57.622271+00 direct_edit t f 1
+378 2024-09-07 15:19:44.30942+00 direct_edit t f 1
+377 2024-09-07 15:19:28.943039+00 direct_edit t f 1
+376 2024-09-07 15:17:29.760583+00 direct_edit t f 1
+375 2024-09-07 15:17:26.282425+00 direct_edit t f 1
+374 2024-09-07 15:17:21.766637+00 direct_edit t f 1
+373 2024-09-07 15:17:14.193557+00 direct_edit t f 1
+372 2024-09-07 15:16:49.208231+00 direct_edit t f 1
+371 2024-09-07 15:16:44.701281+00 direct_edit t f 1
+370 2024-09-07 15:16:36.505509+00 direct_edit t f 1
+369 2024-09-07 15:16:19.924697+00 direct_edit t f 1
+368 2024-09-07 15:15:55.34475+00 direct_edit t f 1
+367 2024-09-07 15:15:44.920176+00 direct_edit t f 1
+366 2024-09-07 15:14:55.7438+00 direct_edit t t 1
+365 2024-09-07 15:14:15.073165+00 direct_edit t t 1
+364 2024-09-07 15:14:00.6651+00 direct_edit t t 1
+363 2024-09-07 15:12:46.537393+00 direct_edit t t 1
+382 2024-09-07 15:24:48.242937+00 direct_edit t t 1
+383 2024-09-08 13:04:23.072218+00 direct_edit t f 1
+384 2024-09-08 13:14:51.180815+00 direct_edit t f 1
+385 2024-09-08 13:15:09.849713+00 management t f \N
+386 2024-09-08 13:16:15.996417+00 direct_edit t t 1
+393 2024-09-08 13:21:59.630012+00 direct_edit t t 1
+392 2024-09-08 13:21:33.834162+00 direct_edit t t 1
+391 2024-09-08 13:20:53.916275+00 direct_edit t t 1
+390 2024-09-08 13:19:34.427024+00 direct_edit t t 1
+389 2024-09-08 13:19:30.126553+00 direct_edit t t 1
+388 2024-09-08 13:19:26.241253+00 direct_edit t t 1
+387 2024-09-08 13:19:21.730552+00 direct_edit t t 1
+397 2024-09-08 13:31:06.252171+00 direct_edit t t 1
+396 2024-09-08 13:30:22.245382+00 direct_edit t t 1
+395 2024-09-08 13:28:23.668135+00 direct_edit t t 1
+394 2024-09-08 13:26:31.02319+00 direct_edit t t 1
+404 2024-09-08 13:40:14.331678+00 direct_edit t f 1
+403 2024-09-08 13:39:39.482799+00 direct_edit t t 1
+402 2024-09-08 13:39:13.094796+00 direct_edit t t 1
+401 2024-09-08 13:38:12.688373+00 direct_edit t t 1
+400 2024-09-08 13:33:14.247243+00 direct_edit t t 1
+399 2024-09-08 13:32:36.363492+00 direct_edit t f 1
+398 2024-09-08 13:32:30.633935+00 direct_edit t t 1
+405 2024-09-08 13:40:53.892833+00 management t f \N
+406 2024-09-08 13:44:43.245159+00 management t f \N
+408 2024-09-08 14:01:34.830472+00 management t f \N
+407 2024-09-08 14:01:23.061072+00 direct_edit t t 1
+410 2024-09-08 14:04:15.562542+00 management t f \N
+409 2024-09-08 14:04:03.248852+00 direct_edit t t 1
+412 2024-09-08 14:06:05.753489+00 management t f \N
+411 2024-09-08 14:05:32.747845+00 direct_edit t t 1
+414 2024-09-08 14:07:55.085302+00 direct_edit t t 1
+413 2024-09-08 14:07:10.447539+00 direct_edit t t 1
+415 2024-09-08 14:09:40.963861+00 direct_edit t t 1
+416 2024-09-08 14:13:20.719936+00 direct_edit t t 1
+419 2024-09-08 14:16:06.405037+00 direct_edit t t 1
+418 2024-09-08 14:15:40.775285+00 direct_edit t t 1
+417 2024-09-08 14:15:03.119899+00 direct_edit t t 1
+420 2024-09-08 14:17:05.617823+00 management t f \N
+422 2024-09-09 06:37:17.566215+00 direct_edit t t 1
+421 2024-09-09 06:36:57.6649+00 direct_edit t t 1
+428 2024-09-09 06:46:05.994759+00 management t f \N
+427 2024-09-09 06:44:29.459471+00 direct_edit t t 1
+426 2024-09-09 06:44:20.049891+00 direct_edit t t 1
+425 2024-09-09 06:44:15.327053+00 direct_edit t t 1
+424 2024-09-09 06:44:02.22251+00 direct_edit t t 1
+423 2024-09-09 06:43:54.850252+00 direct_edit t t 1
+429 2024-09-09 06:47:55.518215+00 management t f \N
+430 2024-09-09 06:49:19.705936+00 direct_edit t t 1
+431 2024-09-09 06:51:46.579894+00 management t f \N
+434 2024-09-09 06:53:44.896137+00 direct_edit t t 1
+433 2024-09-09 06:53:35.67678+00 direct_edit t t 1
+432 2024-09-09 06:53:20.752247+00 direct_edit t t 1
+435 2024-09-09 06:56:19.959336+00 direct_edit t t 1
+442 2024-09-09 07:25:29.971686+00 direct_edit t t 1
+441 2024-09-09 07:24:59.279486+00 direct_edit t t 1
+440 2024-09-09 07:24:24.263241+00 direct_edit t t 1
+439 2024-09-09 07:23:52.68741+00 direct_edit t t 1
+438 2024-09-09 07:23:17.474656+00 direct_edit t t 1
+437 2024-09-09 07:22:07.631007+00 direct_edit t t 1
+436 2024-09-09 07:20:46.323148+00 direct_edit t t 1
+444 2024-09-09 07:27:42.479752+00 direct_edit t t 1
+443 2024-09-09 07:26:57.015816+00 direct_edit t t 1
+452 2024-09-09 07:31:34.524747+00 direct_edit t f 1
+451 2024-09-09 07:31:25.920365+00 direct_edit t f 1
+450 2024-09-09 07:30:46.398787+00 direct_edit t f 1
+449 2024-09-09 07:30:31.45453+00 direct_edit t f 1
+448 2024-09-09 07:30:26.742663+00 direct_edit t f 1
+447 2024-09-09 07:30:08.710049+00 direct_edit t f 1
+446 2024-09-09 07:30:04.660181+00 direct_edit t f 1
+445 2024-09-09 07:29:42.502925+00 direct_edit t t 1
+453 2024-09-09 07:33:19.990441+00 direct_edit t f 1
+454 2024-09-09 07:38:05.891486+00 direct_edit t f 1
+457 2024-09-09 07:41:53.062925+00 direct_edit t f 1
+456 2024-09-09 07:41:43.840339+00 direct_edit t f 1
+455 2024-09-09 07:41:32.580453+00 direct_edit t t 1
+459 2024-09-09 07:45:18.448552+00 direct_edit t f 1
+458 2024-09-09 07:45:05.797165+00 direct_edit t f 1
+462 2024-09-09 07:56:38.643113+00 management t f \N
+461 2024-09-09 07:55:27.942423+00 direct_edit t t 1
+460 2024-09-09 07:55:19.551465+00 direct_edit t t 1
+466 2024-09-09 08:00:06.483721+00 direct_edit t f 1
+465 2024-09-09 07:59:54.601331+00 direct_edit t f 1
+464 2024-09-09 07:59:28.790191+00 direct_edit t f 1
+463 2024-09-09 07:57:29.873802+00 direct_edit t t 1
+468 2024-09-09 08:02:46.83677+00 direct_edit t f 1
+467 2024-09-09 08:02:35.782532+00 direct_edit t f 1
+469 2024-09-09 08:04:04.461798+00 direct_edit t f 1
+470 2024-09-09 08:04:19.910271+00 management t f \N
+473 2024-09-09 08:07:16.244106+00 management t f \N
+472 2024-09-09 08:06:46.052174+00 direct_edit t f 1
+471 2024-09-09 08:06:41.541636+00 direct_edit t f 1
+477 2024-09-09 08:16:12.052682+00 direct_edit t f 1
+476 2024-09-09 08:16:03.111476+00 direct_edit t f 1
+475 2024-09-09 08:15:53.284379+00 direct_edit t f 1
+474 2024-09-09 08:10:37.274052+00 direct_edit t t 1
+478 2024-09-09 08:19:10.094147+00 direct_edit t t 1
+485 2024-09-09 08:37:42.05259+00 management t f \N
+484 2024-09-09 08:36:37.475212+00 direct_edit t t 1
+483 2024-09-09 08:35:27.65272+00 direct_edit t t 1
+482 2024-09-09 08:34:45.671364+00 direct_edit t t 1
+481 2024-09-09 08:34:07.579557+00 direct_edit t t 1
+480 2024-09-09 08:32:52.955664+00 direct_edit t t 1
+479 2024-09-09 08:31:10.824543+00 direct_edit t t 1
+487 2024-09-09 08:39:44.509942+00 management t f \N
+486 2024-09-09 08:39:09.27074+00 direct_edit t t 1
+489 2024-09-09 08:41:34.626938+00 direct_edit t t 1
+488 2024-09-09 08:41:14.003561+00 direct_edit t t 1
+496 2024-09-09 08:54:47.832929+00 direct_edit t t 1
+495 2024-09-09 08:54:40.051725+00 direct_edit t t 1
+494 2024-09-09 08:54:18.534587+00 direct_edit t f 1
+493 2024-09-09 08:54:08.703531+00 direct_edit t f 1
+492 2024-09-09 08:52:59.117547+00 direct_edit t t 1
+491 2024-09-09 08:49:56.831755+00 direct_edit t t 1
+490 2024-09-09 08:46:58.644834+00 direct_edit t f 1
+501 2024-09-09 09:03:24.045831+00 management t f \N
+500 2024-09-09 09:02:19.64621+00 direct_edit t t 1
+499 2024-09-09 09:01:08.354748+00 direct_edit t t 1
+498 2024-09-09 09:00:55.251079+00 direct_edit t t 1
+497 2024-09-09 09:00:30.296998+00 direct_edit t t 1
+510 2024-09-09 09:08:37.427351+00 management t f \N
+509 2024-09-09 09:07:59.805377+00 direct_edit t t 1
+508 2024-09-09 09:07:52.025037+00 direct_edit t t 1
+507 2024-09-09 09:07:24.783785+00 direct_edit t t 1
+506 2024-09-09 09:07:09.426652+00 direct_edit t t 1
+505 2024-09-09 09:06:27.852913+00 direct_edit t t 1
+504 2024-09-09 09:06:09.011879+00 direct_edit t t 1
+503 2024-09-09 09:06:04.296966+00 direct_edit t t 1
+502 2024-09-09 09:05:54.878263+00 direct_edit t t 1
+518 2024-09-09 11:57:25.073455+00 management t f \N
+517 2024-09-09 11:26:58.990248+00 direct_edit t t 1
+516 2024-09-09 11:26:46.299127+00 direct_edit t t 1
+515 2024-09-09 11:26:06.77042+00 direct_edit t t 1
+514 2024-09-09 11:25:49.766881+00 direct_edit t t 1
+513 2024-09-09 11:25:36.250635+00 direct_edit t t 1
+512 2024-09-09 11:25:05.939145+00 direct_edit t t 1
+511 2024-09-09 11:24:36.066279+00 direct_edit t t 1
+1453 2024-09-17 10:00:13.823186+00 direct_edit t t 1
+527 2024-09-09 12:00:51.062797+00 direct_edit t f 1
+526 2024-09-09 12:00:45.735306+00 direct_edit t f 1
+525 2024-09-09 12:00:42.260665+00 direct_edit t f 1
+524 2024-09-09 12:00:28.937938+00 direct_edit t f 1
+523 2024-09-09 12:00:24.22382+00 direct_edit t f 1
+522 2024-09-09 12:00:12.344409+00 direct_edit t f 1
+521 2024-09-09 11:59:42.466064+00 direct_edit t f 1
+520 2024-09-09 11:59:23.022119+00 direct_edit t t 1
+519 2024-09-09 11:58:34.450776+00 direct_edit t t 1
+531 2024-09-09 12:03:37.550135+00 direct_edit t t 1
+530 2024-09-09 12:03:24.238836+00 direct_edit t t 1
+529 2024-09-09 12:03:06.217063+00 direct_edit t t 1
+528 2024-09-09 12:02:54.135449+00 direct_edit t t 1
+544 2024-09-09 12:06:15.055296+00 direct_edit t f 1
+543 2024-09-09 12:06:12.187204+00 direct_edit t f 1
+542 2024-09-09 12:06:01.745036+00 direct_edit t f 1
+541 2024-09-09 12:05:59.494049+00 direct_edit t f 1
+540 2024-09-09 12:05:54.980294+00 direct_edit t f 1
+539 2024-09-09 12:05:51.708362+00 direct_edit t f 1
+538 2024-09-09 12:05:41.886527+00 direct_edit t f 1
+537 2024-09-09 12:05:39.213338+00 direct_edit t f 1
+536 2024-09-09 12:05:31.633572+00 direct_edit t f 1
+535 2024-09-09 12:05:29.793947+00 direct_edit t f 1
+534 2024-09-09 12:05:21.807729+00 direct_edit t f 1
+533 2024-09-09 12:05:15.66883+00 direct_edit t f 1
+532 2024-09-09 12:05:13.616362+00 direct_edit t f 1
+549 2024-09-09 12:08:20.195811+00 direct_edit t f 1
+548 2024-09-09 12:08:17.121137+00 direct_edit t f 1
+547 2024-09-09 12:08:14.455351+00 direct_edit t f 1
+546 2024-09-09 12:08:07.905102+00 direct_edit t f 1
+545 2024-09-09 12:07:59.918561+00 direct_edit t f 1
+550 2024-09-09 12:10:02.798039+00 direct_edit t f 1
+554 2024-09-09 12:33:11.19119+00 direct_edit t t 1
+553 2024-09-09 12:15:22.295487+00 direct_edit t f 1
+552 2024-09-09 12:13:40.28748+00 direct_edit t t 1
+551 2024-09-09 12:13:30.047792+00 direct_edit t t 1
+555 2024-09-09 12:34:49.699096+00 direct_edit t t 1
+566 2024-09-09 12:39:29.031929+00 direct_edit t f 1
+565 2024-09-09 12:39:21.850678+00 direct_edit t f 1
+564 2024-09-09 12:38:45.407038+00 direct_edit t f 1
+563 2024-09-09 12:38:38.433731+00 direct_edit t f 1
+562 2024-09-09 12:38:21.638096+00 direct_edit t f 1
+561 2024-09-09 12:38:04.024341+00 direct_edit t t 1
+560 2024-09-09 12:37:55.630884+00 direct_edit t t 1
+559 2024-09-09 12:37:40.675049+00 direct_edit t t 1
+558 2024-09-09 12:37:36.168929+00 direct_edit t t 1
+557 2024-09-09 12:37:31.665195+00 direct_edit t t 1
+556 2024-09-09 12:37:27.243943+00 direct_edit t t 1
+567 2024-09-09 12:41:56.070963+00 direct_edit t f 1
+568 2024-09-09 12:43:44.826086+00 direct_edit t f 1
+570 2024-09-09 12:48:58.986939+00 direct_edit t t 1
+569 2024-09-09 12:48:26.642027+00 direct_edit t t 1
+571 2024-09-09 12:50:13.765199+00 management t f \N
+574 2024-09-09 12:55:50.305978+00 management t f \N
+573 2024-09-09 12:55:14.205586+00 direct_edit t t 1
+572 2024-09-09 12:53:09.292181+00 direct_edit t t 1
+575 2024-09-09 12:57:13.966329+00 management t f \N
+603 2024-09-09 13:03:45.03202+00 management t f \N
+602 2024-09-09 13:03:30.849157+00 direct_edit t f 1
+601 2024-09-09 13:03:26.95121+00 direct_edit t f 1
+600 2024-09-09 13:03:24.083947+00 direct_edit t f 1
+599 2024-09-09 13:03:17.526609+00 direct_edit t f 1
+598 2024-09-09 13:03:13.840004+00 direct_edit t f 1
+597 2024-09-09 13:03:10.369874+00 direct_edit t f 1
+596 2024-09-09 13:03:01.759687+00 direct_edit t f 1
+595 2024-09-09 13:02:58.077408+00 direct_edit t f 1
+594 2024-09-09 13:02:52.12882+00 direct_edit t f 1
+593 2024-09-09 13:02:46.394023+00 direct_edit t f 1
+592 2024-09-09 13:02:27.353622+00 direct_edit t f 1
+591 2024-09-09 13:02:17.520558+00 direct_edit t f 1
+590 2024-09-09 13:02:13.420799+00 direct_edit t f 1
+589 2024-09-09 13:02:08.229664+00 direct_edit t f 1
+588 2024-09-09 13:02:04.821244+00 direct_edit t f 1
+587 2024-09-09 13:01:48.233024+00 direct_edit t f 1
+586 2024-09-09 13:01:37.170637+00 direct_edit t f 1
+585 2024-09-09 13:00:52.117656+00 direct_edit t f 1
+584 2024-09-09 13:00:46.583968+00 direct_edit t f 1
+583 2024-09-09 13:00:28.769765+00 direct_edit t f 1
+582 2024-09-09 13:00:23.854871+00 direct_edit t f 1
+581 2024-09-09 13:00:19.969116+00 direct_edit t f 1
+580 2024-09-09 13:00:14.02975+00 direct_edit t f 1
+579 2024-09-09 13:00:06.24147+00 direct_edit t f 1
+578 2024-09-09 13:00:03.170837+00 direct_edit t f 1
+577 2024-09-09 12:59:37.151395+00 direct_edit t t 1
+576 2024-09-09 12:59:10.566704+00 direct_edit t t 1
+607 2024-09-09 13:05:17.133838+00 direct_edit t f 1
+606 2024-09-09 13:05:05.46058+00 direct_edit t f 1
+605 2024-09-09 13:04:59.531447+00 direct_edit t f 1
+604 2024-09-09 13:04:53.378149+00 direct_edit t f 1
+608 2024-09-09 13:05:34.169905+00 management t f \N
+610 2024-09-09 13:28:14.67968+00 management t f \N
+609 2024-09-09 13:27:34.491531+00 direct_edit t f 1
+1454 2024-09-17 10:00:18.739234+00 direct_edit t t 1
+631 2024-09-09 13:43:49.356112+00 direct_edit t t 1
+630 2024-09-09 13:43:42.194974+00 direct_edit t t 1
+629 2024-09-09 13:43:21.295518+00 direct_edit t t 1
+628 2024-09-09 13:42:50.17174+00 direct_edit t t 1
+627 2024-09-09 13:42:30.731202+00 direct_edit t t 1
+626 2024-09-09 13:41:11.864986+00 direct_edit t t 1
+658 2024-09-09 13:48:31.172176+00 direct_edit t f 1
+657 2024-09-09 13:48:28.714556+00 direct_edit t f 1
+656 2024-09-09 13:48:25.84855+00 direct_edit t f 1
+655 2024-09-09 13:48:18.679285+00 direct_edit t f 1
+654 2024-09-09 13:48:10.284205+00 direct_edit t f 1
+653 2024-09-09 13:48:05.782015+00 direct_edit t f 1
+652 2024-09-09 13:47:56.153905+00 direct_edit t f 1
+651 2024-09-09 13:47:50.212298+00 direct_edit t f 1
+650 2024-09-09 13:47:34.43843+00 direct_edit t f 1
+649 2024-09-09 13:47:20.14339+00 direct_edit t f 1
+648 2024-09-09 13:47:13.346907+00 direct_edit t f 1
+647 2024-09-09 13:47:07.408202+00 direct_edit t f 1
+646 2024-09-09 13:46:58.400144+00 direct_edit t f 1
+645 2024-09-09 13:46:51.431683+00 direct_edit t f 1
+644 2024-09-09 13:46:48.153253+00 direct_edit t f 1
+643 2024-09-09 13:46:39.763655+00 direct_edit t f 1
+642 2024-09-09 13:46:32.998182+00 direct_edit t f 1
+641 2024-09-09 13:46:29.722789+00 direct_edit t f 1
+640 2024-09-09 13:46:16.817946+00 direct_edit t f 1
+639 2024-09-09 13:45:56.332285+00 direct_edit t t 1
+638 2024-09-09 13:45:44.250209+00 direct_edit t t 1
+637 2024-09-09 13:45:21.929415+00 direct_edit t t 1
+636 2024-09-09 13:44:57.574367+00 direct_edit t t 1
+635 2024-09-09 13:44:18.23462+00 direct_edit t t 1
+634 2024-09-09 13:44:11.476916+00 direct_edit t t 1
+633 2024-09-09 13:44:04.664403+00 direct_edit t t 1
+632 2024-09-09 13:43:56.727716+00 direct_edit t t 1
+625 2024-09-09 13:40:31.92791+00 direct_edit t t 1
+624 2024-09-09 13:40:21.068689+00 direct_edit t t 1
+623 2024-09-09 13:39:58.948469+00 direct_edit t t 1
+622 2024-09-09 13:39:47.480192+00 direct_edit t t 1
+621 2024-09-09 13:39:34.578118+00 direct_edit t t 1
+620 2024-09-09 13:39:18.194475+00 direct_edit t t 1
+619 2024-09-09 13:39:05.495438+00 direct_edit t t 1
+618 2024-09-09 13:38:48.313627+00 direct_edit t t 1
+617 2024-09-09 13:37:55.685618+00 direct_edit t t 1
+616 2024-09-09 13:36:34.581299+00 direct_edit t t 1
+615 2024-09-09 13:35:24.539412+00 direct_edit t t 1
+614 2024-09-09 13:34:47.876849+00 direct_edit t t 1
+613 2024-09-09 13:34:08.14431+00 direct_edit t t 1
+612 2024-09-09 13:33:03.473213+00 direct_edit t f 1
+611 2024-09-09 13:30:37.800973+00 direct_edit t t 1
+659 2024-09-09 13:48:58.707951+00 management t f \N
+666 2024-09-09 13:51:45.35696+00 direct_edit t t 1
+665 2024-09-09 13:51:26.310329+00 direct_edit t t 1
+664 2024-09-09 13:51:12.999236+00 direct_edit t t 1
+663 2024-09-09 13:50:50.062646+00 direct_edit t t 1
+662 2024-09-09 13:50:41.254625+00 direct_edit t t 1
+661 2024-09-09 13:50:29.57931+00 direct_edit t t 1
+660 2024-09-09 13:50:15.448635+00 direct_edit t t 1
+687 2024-09-09 14:04:07.322115+00 direct_edit t t 1
+686 2024-09-09 14:03:50.324188+00 direct_edit t t 1
+685 2024-09-09 14:03:34.759507+00 direct_edit t t 1
+684 2024-09-09 14:03:12.643939+00 direct_edit t t 1
+683 2024-09-09 14:02:48.474875+00 direct_edit t t 1
+682 2024-09-09 14:02:27.173899+00 direct_edit t t 1
+681 2024-09-09 14:02:11.200696+00 direct_edit t t 1
+680 2024-09-09 14:01:55.635385+00 direct_edit t t 1
+679 2024-09-09 14:01:39.455646+00 direct_edit t t 1
+678 2024-09-09 14:01:07.508034+00 direct_edit t t 1
+677 2024-09-09 13:57:54.995296+00 direct_edit t t 1
+676 2024-09-09 13:57:45.776761+00 direct_edit t t 1
+675 2024-09-09 13:57:36.968439+00 direct_edit t t 1
+674 2024-09-09 13:57:22.839341+00 direct_edit t t 1
+673 2024-09-09 13:57:09.730985+00 direct_edit t t 1
+672 2024-09-09 13:57:00.310189+00 direct_edit t t 1
+671 2024-09-09 13:56:51.299095+00 direct_edit t t 1
+670 2024-09-09 13:56:41.468215+00 direct_edit t t 1
+669 2024-09-09 13:56:21.400039+00 direct_edit t t 1
+668 2024-09-09 13:56:03.375588+00 direct_edit t t 1
+667 2024-09-09 13:55:52.113989+00 direct_edit t t 1
+698 2024-09-09 14:15:07.441089+00 direct_edit t t 1
+697 2024-09-09 14:12:46.122989+00 direct_edit t t 1
+696 2024-09-09 14:11:59.222563+00 direct_edit t t 1
+695 2024-09-09 14:11:02.910211+00 direct_edit t t 1
+694 2024-09-09 14:10:38.946712+00 direct_edit t t 1
+693 2024-09-09 14:10:21.53429+00 direct_edit t t 1
+692 2024-09-09 14:10:07.249053+00 direct_edit t t 1
+691 2024-09-09 14:09:48.966391+00 direct_edit t t 1
+690 2024-09-09 14:09:28.28864+00 direct_edit t t 1
+689 2024-09-09 14:08:57.571337+00 direct_edit t t 1
+688 2024-09-09 14:08:42.821668+00 direct_edit t t 1
+1452 2024-09-17 10:00:07.681503+00 direct_edit t t 1
+721 2024-09-09 14:42:37.299858+00 direct_edit t t 1
+720 2024-09-09 14:42:26.854917+00 direct_edit t t 1
+719 2024-09-09 14:42:19.2775+00 direct_edit t t 1
+718 2024-09-09 14:41:49.860184+00 direct_edit t t 1
+717 2024-09-09 14:41:08.83302+00 direct_edit t t 1
+716 2024-09-09 14:40:55.741299+00 direct_edit t t 1
+715 2024-09-09 14:39:43.42214+00 direct_edit t t 1
+714 2024-09-09 14:39:31.546104+00 direct_edit t t 1
+713 2024-09-09 14:39:17.199621+00 direct_edit t f 1
+712 2024-09-09 14:38:26.830121+00 direct_edit t t 1
+711 2024-09-09 14:37:35.419623+00 direct_edit t t 1
+741 2024-09-09 14:46:14.812377+00 direct_edit t f 1
+740 2024-09-09 14:46:08.05121+00 direct_edit t f 1
+739 2024-09-09 14:46:01.289731+00 direct_edit t f 1
+738 2024-09-09 14:45:57.809232+00 direct_edit t f 1
+737 2024-09-09 14:45:53.508681+00 direct_edit t f 1
+736 2024-09-09 14:45:48.591985+00 direct_edit t f 1
+735 2024-09-09 14:45:37.157912+00 direct_edit t f 1
+734 2024-09-09 14:45:34.050797+00 direct_edit t f 1
+733 2024-09-09 14:45:20.326512+00 direct_edit t f 1
+732 2024-09-09 14:45:18.076862+00 direct_edit t f 1
+731 2024-09-09 14:45:14.553235+00 direct_edit t f 1
+730 2024-09-09 14:45:13.159283+00 direct_edit t f 1
+729 2024-09-09 14:45:00.25725+00 direct_edit t f 1
+728 2024-09-09 14:44:10.693149+00 direct_edit t t 1
+727 2024-09-09 14:43:36.692517+00 direct_edit t t 1
+726 2024-09-09 14:43:24.199819+00 direct_edit t t 1
+725 2024-09-09 14:43:16.005348+00 direct_edit t t 1
+724 2024-09-09 14:43:06.176757+00 direct_edit t t 1
+723 2024-09-09 14:42:55.730699+00 direct_edit t t 1
+722 2024-09-09 14:42:47.129569+00 direct_edit t t 1
+710 2024-09-09 14:37:17.631584+00 direct_edit t t 1
+709 2024-09-09 14:33:37.495966+00 direct_edit t t 1
+708 2024-09-09 14:32:03.642575+00 direct_edit t f 1
+707 2024-09-09 14:31:25.169783+00 direct_edit t t 1
+706 2024-09-09 14:31:15.346592+00 direct_edit t t 1
+705 2024-09-09 14:23:56.448109+00 direct_edit t t 1
+704 2024-09-09 14:23:46.206295+00 direct_edit t t 1
+703 2024-09-09 14:23:36.585252+00 direct_edit t t 1
+702 2024-09-09 14:22:52.557659+00 direct_edit t t 1
+701 2024-09-09 14:22:43.741771+00 direct_edit t t 1
+700 2024-09-09 14:22:27.762349+00 direct_edit t t 1
+699 2024-09-09 14:21:27.152056+00 direct_edit t t 1
+742 2024-09-09 14:46:38.004481+00 management t f \N
+759 2024-09-09 14:53:24.341781+00 management t f \N
+758 2024-09-09 14:52:31.870219+00 direct_edit t t 1
+757 2024-09-09 14:51:33.679277+00 direct_edit t t 1
+756 2024-09-09 14:51:26.514627+00 direct_edit t t 1
+755 2024-09-09 14:51:19.962915+00 direct_edit t t 1
+754 2024-09-09 14:51:11.9709+00 direct_edit t t 1
+753 2024-09-09 14:51:05.416861+00 direct_edit t t 1
+752 2024-09-09 14:50:53.135543+00 direct_edit t t 1
+751 2024-09-09 14:50:27.528711+00 direct_edit t t 1
+750 2024-09-09 14:50:19.95056+00 direct_edit t t 1
+749 2024-09-09 14:50:10.120533+00 direct_edit t t 1
+748 2024-09-09 14:49:59.67579+00 direct_edit t t 1
+747 2024-09-09 14:49:52.199725+00 direct_edit t t 1
+746 2024-09-09 14:49:44.117897+00 direct_edit t t 1
+745 2024-09-09 14:49:27.1135+00 direct_edit t t 1
+744 2024-09-09 14:49:21.181014+00 direct_edit t t 1
+743 2024-09-09 14:49:06.449208+00 direct_edit t t 1
+773 2024-09-09 14:57:05.611561+00 management t f \N
+772 2024-09-09 14:56:56.867307+00 direct_edit t f 1
+771 2024-09-09 14:56:51.544724+00 direct_edit t f 1
+770 2024-09-09 14:56:39.467066+00 direct_edit t f 1
+769 2024-09-09 14:56:28.609327+00 direct_edit t f 1
+768 2024-09-09 14:56:15.699736+00 direct_edit t f 1
+767 2024-09-09 14:56:02.795991+00 direct_edit t f 1
+766 2024-09-09 14:55:41.499774+00 direct_edit t f 1
+765 2024-09-09 14:55:33.514474+00 direct_edit t f 1
+764 2024-09-09 14:55:26.756891+00 direct_edit t f 1
+763 2024-09-09 14:55:17.538542+00 direct_edit t f 1
+762 2024-09-09 14:55:10.371135+00 direct_edit t f 1
+761 2024-09-09 14:54:47.225281+00 direct_edit t f 1
+760 2024-09-09 14:54:38.651452+00 direct_edit t t 1
+774 2024-09-09 14:57:18.623603+00 management t f \N
+794 2024-09-09 15:03:16.641422+00 management t f \N
+793 2024-09-09 15:03:00.191054+00 direct_edit t f 1
+792 2024-09-09 15:02:56.912913+00 direct_edit t f 1
+791 2024-09-09 15:02:54.055947+00 direct_edit t f 1
+790 2024-09-09 15:02:50.162101+00 direct_edit t f 1
+789 2024-09-09 15:02:47.493644+00 direct_edit t f 1
+788 2024-09-09 15:02:44.007636+00 direct_edit t f 1
+787 2024-09-09 15:02:37.050894+00 direct_edit t f 1
+786 2024-09-09 15:02:34.186485+00 direct_edit t f 1
+785 2024-09-09 15:02:31.519509+00 direct_edit t f 1
+784 2024-09-09 15:02:21.070813+00 direct_edit t f 1
+783 2024-09-09 15:02:10.421794+00 direct_edit t f 1
+782 2024-09-09 15:01:59.773053+00 direct_edit t f 1
+781 2024-09-09 15:01:56.702011+00 direct_edit t f 1
+780 2024-09-09 15:01:53.419768+00 direct_edit t f 1
+779 2024-09-09 15:01:32.740429+00 direct_edit t f 1
+778 2024-09-09 15:01:28.228709+00 direct_edit t f 1
+777 2024-09-09 15:01:12.25606+00 direct_edit t f 1
+776 2024-09-09 15:01:10.006245+00 direct_edit t f 1
+775 2024-09-09 14:59:32.547784+00 direct_edit t t 1
+797 2024-09-09 15:06:40.045046+00 management t f \N
+796 2024-09-09 15:06:33.382507+00 direct_edit t t 1
+795 2024-09-09 15:06:15.801827+00 direct_edit t t 1
+799 2024-09-09 15:10:57.869151+00 management t f \N
+798 2024-09-09 15:10:32.129171+00 direct_edit t t 1
+801 2024-09-09 15:13:47.635457+00 management t f \N
+800 2024-09-09 15:13:35.720719+00 direct_edit t t 1
+1455 2024-09-17 10:03:27.308168+00 direct_edit t f 1
+819 2024-09-09 15:22:02.165001+00 direct_edit t t 1
+818 2024-09-09 15:21:37.179556+00 direct_edit t t 1
+817 2024-09-09 15:21:27.967841+00 direct_edit t t 1
+816 2024-09-09 15:21:20.184142+00 direct_edit t t 1
+815 2024-09-09 15:21:05.846867+00 direct_edit t t 1
+814 2024-09-09 15:21:00.110493+00 direct_edit t t 1
+823 2024-09-09 15:23:38.76088+00 management t f \N
+822 2024-09-09 15:23:21.837302+00 direct_edit t t 1
+821 2024-09-09 15:22:39.030878+00 direct_edit t t 1
+820 2024-09-09 15:22:21.006923+00 direct_edit t t 1
+813 2024-09-09 15:20:32.667788+00 direct_edit t t 1
+812 2024-09-09 15:20:07.073381+00 direct_edit t t 1
+811 2024-09-09 15:19:58.471777+00 direct_edit t t 1
+810 2024-09-09 15:19:37.187125+00 direct_edit t t 1
+809 2024-09-09 15:18:31.422418+00 direct_edit t t 1
+808 2024-09-09 15:18:18.376823+00 direct_edit t t 1
+807 2024-09-09 15:17:56.400423+00 direct_edit t t 1
+806 2024-09-09 15:17:35.936931+00 direct_edit t t 1
+805 2024-09-09 15:17:15.651589+00 direct_edit t t 1
+804 2024-09-09 15:16:59.057677+00 direct_edit t t 1
+803 2024-09-09 15:16:48.201833+00 direct_edit t t 1
+802 2024-09-09 15:16:27.139051+00 direct_edit t t 1
+826 2024-09-09 15:25:05.571358+00 management t f \N
+825 2024-09-09 15:24:31.987392+00 direct_edit t t 1
+824 2024-09-09 15:24:24.916009+00 direct_edit t t 1
+827 2024-09-09 15:25:18.240423+00 management t f \N
+834 2024-09-09 15:27:00.815678+00 management t f \N
+833 2024-09-09 15:26:42.55383+00 direct_edit t f 1
+832 2024-09-09 15:26:37.844086+00 direct_edit t f 1
+831 2024-09-09 15:26:32.307001+00 direct_edit t f 1
+830 2024-09-09 15:26:28.825505+00 direct_edit t f 1
+829 2024-09-09 15:26:13.258574+00 direct_edit t f 1
+828 2024-09-09 15:26:11.417793+00 direct_edit t f 1
+838 2024-09-09 15:29:18.531931+00 direct_edit t t 1
+837 2024-09-09 15:29:07.751553+00 direct_edit t t 1
+836 2024-09-09 15:28:47.680282+00 direct_edit t t 1
+835 2024-09-09 15:28:31.910177+00 direct_edit t t 1
+843 2024-09-09 15:32:04.506854+00 direct_edit t f 1
+842 2024-09-09 15:31:23.331322+00 direct_edit t t 1
+841 2024-09-09 15:31:14.325872+00 direct_edit t t 1
+840 2024-09-09 15:30:39.091431+00 direct_edit t t 1
+839 2024-09-09 15:30:23.319439+00 direct_edit t t 1
+845 2024-09-09 15:35:32.372085+00 direct_edit t t 1
+844 2024-09-09 15:34:35.847373+00 direct_edit t t 1
+1456 2024-09-17 10:05:11.639195+00 direct_edit t t 1
+901 2024-09-09 15:48:00.104842+00 direct_edit t t 1
+900 2024-09-09 15:47:53.961517+00 direct_edit t t 1
+899 2024-09-09 15:47:34.720627+00 direct_edit t t 1
+898 2024-09-09 15:47:11.567502+00 direct_edit t t 1
+897 2024-09-09 15:47:05.015101+00 direct_edit t t 1
+896 2024-09-09 15:46:58.051044+00 direct_edit t t 1
+895 2024-09-09 15:46:39.419062+00 direct_edit t t 1
+894 2024-09-09 15:46:28.153253+00 direct_edit t t 1
+893 2024-09-09 15:46:20.782602+00 direct_edit t t 1
+892 2024-09-09 15:46:07.205055+00 direct_edit t t 1
+891 2024-09-09 15:45:37.158161+00 direct_edit t t 1
+890 2024-09-09 15:45:12.783557+00 direct_edit t t 1
+889 2024-09-09 15:45:05.613235+00 direct_edit t t 1
+888 2024-09-09 15:44:56.398826+00 direct_edit t t 1
+887 2024-09-09 15:43:51.895105+00 direct_edit t f 1
+886 2024-09-09 15:43:49.0265+00 direct_edit t f 1
+885 2024-09-09 15:43:33.252773+00 direct_edit t f 1
+884 2024-09-09 15:43:29.770647+00 direct_edit t f 1
+883 2024-09-09 15:43:27.5188+00 direct_edit t f 1
+882 2024-09-09 15:43:06.423156+00 direct_edit t f 1
+881 2024-09-09 15:43:04.578857+00 direct_edit t f 1
+880 2024-09-09 15:42:54.749394+00 direct_edit t f 1
+879 2024-09-09 15:42:52.906128+00 direct_edit t f 1
+878 2024-09-09 15:42:48.809602+00 direct_edit t f 1
+877 2024-09-09 15:42:46.352972+00 direct_edit t f 1
+876 2024-09-09 15:42:43.081229+00 direct_edit t f 1
+875 2024-09-09 15:42:17.68852+00 direct_edit t f 1
+874 2024-09-09 15:42:16.054336+00 direct_edit t f 1
+873 2024-09-09 15:42:14.412413+00 direct_edit t f 1
+872 2024-09-09 15:41:58.843281+00 direct_edit t f 1
+871 2024-09-09 15:41:55.769955+00 direct_edit t f 1
+870 2024-09-09 15:41:52.284859+00 direct_edit t f 1
+869 2024-09-09 15:41:49.008141+00 direct_edit t f 1
+868 2024-09-09 15:41:42.457152+00 direct_edit t f 1
+867 2024-09-09 15:41:36.513765+00 direct_edit t f 1
+866 2024-09-09 15:41:31.392503+00 direct_edit t f 1
+865 2024-09-09 15:41:24.428782+00 direct_edit t f 1
+864 2024-09-09 15:41:22.794299+00 direct_edit t f 1
+863 2024-09-09 15:41:21.567533+00 direct_edit t f 1
+862 2024-09-09 15:41:19.929128+00 direct_edit t f 1
+861 2024-09-09 15:41:12.144284+00 direct_edit t f 1
+860 2024-09-09 15:40:59.239368+00 direct_edit t f 1
+859 2024-09-09 15:40:52.685648+00 direct_edit t f 1
+858 2024-09-09 15:40:36.100573+00 direct_edit t f 1
+857 2024-09-09 15:40:33.646623+00 direct_edit t f 1
+856 2024-09-09 15:40:29.750576+00 direct_edit t f 1
+855 2024-09-09 15:40:27.905151+00 direct_edit t f 1
+854 2024-09-09 15:40:16.844008+00 direct_edit t f 1
+853 2024-09-09 15:40:10.088577+00 direct_edit t f 1
+852 2024-09-09 15:40:03.742177+00 direct_edit t f 1
+851 2024-09-09 15:39:56.779731+00 direct_edit t f 1
+850 2024-09-09 15:39:54.729627+00 direct_edit t f 1
+849 2024-09-09 15:39:41.825332+00 direct_edit t f 1
+848 2024-09-09 15:39:32.931356+00 direct_edit t f 1
+847 2024-09-09 15:39:25.442567+00 direct_edit t f 1
+846 2024-09-09 15:39:17.075826+00 direct_edit t t 1
+926 2024-09-09 15:53:31.791144+00 direct_edit t f 1
+925 2024-09-09 15:52:55.852348+00 direct_edit t f 1
+924 2024-09-09 15:52:52.779984+00 direct_edit t f 1
+923 2024-09-09 15:52:46.220708+00 direct_edit t t 1
+922 2024-09-09 15:52:16.741247+00 direct_edit t f 1
+921 2024-09-09 15:52:12.633944+00 direct_edit t f 1
+920 2024-09-09 15:52:07.108412+00 direct_edit t f 1
+919 2024-09-09 15:52:05.060613+00 direct_edit t f 1
+918 2024-09-09 15:52:00.146159+00 direct_edit t f 1
+917 2024-09-09 15:51:49.905508+00 direct_edit t f 1
+916 2024-09-09 15:51:44.786188+00 direct_edit t f 1
+915 2024-09-09 15:51:40.070199+00 direct_edit t f 1
+914 2024-09-09 15:51:28.805581+00 direct_edit t f 1
+913 2024-09-09 15:51:24.094114+00 direct_edit t f 1
+912 2024-09-09 15:51:17.336304+00 direct_edit t f 1
+911 2024-09-09 15:51:08.537834+00 direct_edit t f 1
+910 2024-09-09 15:51:05.051844+00 direct_edit t f 1
+909 2024-09-09 15:51:01.335741+00 direct_edit t f 1
+908 2024-09-09 15:50:57.679261+00 direct_edit t f 1
+907 2024-09-09 15:50:54.607382+00 direct_edit t f 1
+906 2024-09-09 15:50:49.494613+00 direct_edit t f 1
+905 2024-09-09 15:50:39.659019+00 direct_edit t f 1
+904 2024-09-09 15:50:32.484294+00 direct_edit t f 1
+903 2024-09-09 15:50:28.593042+00 direct_edit t f 1
+902 2024-09-09 15:50:21.840726+00 direct_edit t f 1
+931 2024-09-09 15:58:46.883933+00 direct_edit t f 1
+930 2024-09-09 15:58:20.877154+00 direct_edit t f 1
+929 2024-09-09 15:58:18.622145+00 direct_edit t f 1
+928 2024-09-09 15:58:11.04266+00 direct_edit t f 1
+927 2024-09-09 15:58:04.89416+00 direct_edit t f 1
+956 2024-09-09 16:03:22.546346+00 direct_edit t f 1
+955 2024-09-09 16:03:17.836562+00 direct_edit t f 1
+954 2024-09-09 16:03:07.595391+00 direct_edit t f 1
+953 2024-09-09 16:02:57.559898+00 direct_edit t f 1
+952 2024-09-09 16:02:44.461183+00 direct_edit t f 1
+951 2024-09-09 16:02:27.666751+00 direct_edit t f 1
+950 2024-09-09 16:02:15.780412+00 direct_edit t f 1
+949 2024-09-09 16:02:13.938969+00 direct_edit t f 1
+948 2024-09-09 16:02:08.614082+00 direct_edit t f 1
+947 2024-09-09 16:02:07.178099+00 direct_edit t f 1
+946 2024-09-09 16:02:05.745597+00 direct_edit t f 1
+945 2024-09-09 16:01:57.141895+00 direct_edit t f 1
+944 2024-09-09 16:01:52.024287+00 direct_edit t f 1
+943 2024-09-09 16:01:46.493704+00 direct_edit t f 1
+942 2024-09-09 16:01:41.373295+00 direct_edit t f 1
+941 2024-09-09 16:01:39.426621+00 direct_edit t f 1
+940 2024-09-09 16:01:33.183144+00 direct_edit t f 1
+939 2024-09-09 16:01:24.378937+00 direct_edit t f 1
+938 2024-09-09 16:01:09.226872+00 direct_edit t f 1
+937 2024-09-09 16:00:57.75291+00 direct_edit t f 1
+936 2024-09-09 16:00:54.680543+00 direct_edit t f 1
+935 2024-09-09 16:00:52.226405+00 direct_edit t f 1
+934 2024-09-09 16:00:43.004831+00 direct_edit t f 1
+933 2024-09-09 16:00:30.306412+00 direct_edit t f 1
+932 2024-09-09 16:00:23.136976+00 direct_edit t f 1
+959 2024-09-09 16:06:00.660218+00 direct_edit t f 1
+958 2024-09-09 16:05:57.593639+00 direct_edit t f 1
+957 2024-09-09 16:05:53.901182+00 direct_edit t f 1
+961 2024-09-09 16:07:16.455108+00 direct_edit t f 1
+960 2024-09-09 16:07:08.651333+00 direct_edit t f 1
+963 2024-09-09 16:10:55.58048+00 direct_edit t f 1
+962 2024-09-09 16:10:03.135512+00 direct_edit t t 1
+969 2024-09-09 16:11:37.356612+00 direct_edit t f 1
+968 2024-09-09 16:11:33.467715+00 direct_edit t f 1
+967 2024-09-09 16:11:31.418572+00 direct_edit t f 1
+966 2024-09-09 16:11:27.736257+00 direct_edit t f 1
+965 2024-09-09 16:11:23.83446+00 direct_edit t f 1
+964 2024-09-09 16:11:22.399638+00 direct_edit t f 1
+977 2024-09-09 16:16:14.656205+00 direct_edit t f 1
+976 2024-09-09 16:15:59.502132+00 direct_edit t f 1
+975 2024-09-09 16:15:48.938214+00 direct_edit t f 1
+974 2024-09-09 16:15:35.119841+00 direct_edit t t 1
+973 2024-09-09 16:14:39.017091+00 direct_edit t f 1
+972 2024-09-09 16:14:36.152595+00 direct_edit t f 1
+971 2024-09-09 16:14:32.053479+00 direct_edit t f 1
+970 2024-09-09 16:14:27.543746+00 direct_edit t f 1
+1457 2024-09-17 10:05:30.041206+00 direct_edit t t 1
+983 2024-09-10 06:22:36.888074+00 direct_edit t t 1
+982 2024-09-10 06:22:21.118129+00 direct_edit t t 1
+981 2024-09-10 06:22:11.081416+00 direct_edit t t 1
+980 2024-09-10 06:21:54.901983+00 direct_edit t t 1
+979 2024-09-10 06:21:18.468894+00 direct_edit t t 1
+978 2024-09-10 06:18:29.074162+00 direct_edit t t 1
+984 2024-09-10 06:33:32.724259+00 management t f \N
+989 2024-09-10 06:37:19.818788+00 direct_edit t t 1
+988 2024-09-10 06:36:20.404931+00 direct_edit t t 1
+987 2024-09-10 06:35:51.339245+00 direct_edit t t 1
+986 2024-09-10 06:34:15.679963+00 direct_edit t t 1
+985 2024-09-10 06:34:05.038753+00 direct_edit t t 1
+990 2024-09-10 06:38:35.260487+00 management t f \N
+991 2024-09-10 06:42:04.397867+00 management t f \N
+994 2024-09-10 06:52:59.081015+00 management t f \N
+993 2024-09-10 06:52:46.938868+00 direct_edit t f 1
+992 2024-09-10 06:50:18.256989+00 direct_edit t f 1
+1000 2024-09-10 07:01:49.312009+00 management t f \N
+999 2024-09-10 07:00:45.581379+00 direct_edit t t 1
+998 2024-09-10 07:00:11.590715+00 direct_edit t t 1
+997 2024-09-10 06:58:58.476081+00 direct_edit t t 1
+996 2024-09-10 06:57:30.822485+00 direct_edit t t 1
+995 2024-09-10 06:55:38.36628+00 direct_edit t t 1
+1001 2024-09-10 07:01:58.836854+00 management t f \N
+1010 2024-09-10 07:08:13.678342+00 direct_edit t t 1
+1009 2024-09-10 07:07:58.119787+00 direct_edit t t 1
+1008 2024-09-10 07:07:41.11907+00 direct_edit t t 1
+1007 2024-09-10 07:07:33.207083+00 direct_edit t f 1
+1006 2024-09-10 07:07:25.771546+00 direct_edit t t 1
+1005 2024-09-10 07:07:09.579729+00 direct_edit t t 1
+1004 2024-09-10 07:07:03.638362+00 direct_edit t t 1
+1003 2024-09-10 07:06:36.592162+00 direct_edit t f 1
+1002 2024-09-10 07:06:26.145492+00 direct_edit t f 1
+1011 2024-09-10 07:08:41.054164+00 management t f \N
+1012 2024-09-10 07:10:25.886125+00 management t f \N
+1013 2024-09-10 07:10:35.84252+00 management t f \N
+1458 2024-09-24 09:20:31.075516+00 management t f \N
+1071 2024-09-10 07:31:44.779065+00 direct_edit t f 1
+1070 2024-09-10 07:31:40.68586+00 direct_edit t f 1
+1069 2024-09-10 07:31:21.032366+00 direct_edit t f 1
+1068 2024-09-10 07:31:17.138664+00 direct_edit t f 1
+1067 2024-09-10 07:31:04.22757+00 direct_edit t t 1
+1066 2024-09-10 07:30:56.237034+00 direct_edit t f 1
+1065 2024-09-10 07:30:34.124262+00 direct_edit t f 1
+1064 2024-09-10 07:30:26.953416+00 direct_edit t f 1
+1063 2024-09-10 07:30:17.121261+00 direct_edit t f 1
+1062 2024-09-10 07:30:09.746568+00 direct_edit t f 1
+1061 2024-09-10 07:29:57.663086+00 direct_edit t f 1
+1060 2024-09-10 07:29:55.818907+00 direct_edit t f 1
+1059 2024-09-10 07:29:40.664954+00 direct_edit t f 1
+1058 2024-09-10 07:29:38.412682+00 direct_edit t f 1
+1057 2024-09-10 07:29:30.424139+00 direct_edit t f 1
+1056 2024-09-10 07:29:23.46604+00 direct_edit t f 1
+1055 2024-09-10 07:28:58.68489+00 direct_edit t f 1
+1054 2024-09-10 07:28:15.47345+00 direct_edit t f 1
+1053 2024-09-10 07:27:50.489936+00 direct_edit t f 1
+1052 2024-09-10 07:27:36.763103+00 direct_edit t f 1
+1051 2024-09-10 07:27:08.700572+00 direct_edit t f 1
+1050 2024-09-10 07:27:03.17155+00 direct_edit t f 1
+1049 2024-09-10 07:26:41.671668+00 direct_edit t f 1
+1048 2024-09-10 07:26:24.094783+00 direct_edit t f 1
+1047 2024-09-10 07:26:05.018583+00 direct_edit t f 1
+1046 2024-09-10 07:25:50.466543+00 direct_edit t f 1
+1045 2024-09-10 07:25:17.916165+00 direct_edit t f 1
+1081 2024-09-10 07:33:44.595645+00 direct_edit t f 1
+1080 2024-09-10 07:33:33.531432+00 direct_edit t f 1
+1079 2024-09-10 07:33:20.831094+00 direct_edit t f 1
+1078 2024-09-10 07:33:17.144203+00 direct_edit t f 1
+1077 2024-09-10 07:33:05.270051+00 direct_edit t f 1
+1076 2024-09-10 07:32:55.03399+00 direct_edit t f 1
+1075 2024-09-10 07:32:44.785066+00 direct_edit t f 1
+1074 2024-09-10 07:32:33.119238+00 direct_edit t f 1
+1073 2024-09-10 07:32:26.361774+00 direct_edit t f 1
+1072 2024-09-10 07:32:22.469286+00 direct_edit t f 1
+1044 2024-09-10 07:25:11.968955+00 direct_edit t f 1
+1043 2024-09-10 07:25:09.919392+00 direct_edit t f 1
+1042 2024-09-10 07:24:52.717905+00 direct_edit t f 1
+1041 2024-09-10 07:24:49.435088+00 direct_edit t f 1
+1040 2024-09-10 07:24:46.773264+00 direct_edit t f 1
+1039 2024-09-10 07:24:23.845091+00 direct_edit t f 1
+1038 2024-09-10 07:24:20.560327+00 direct_edit t f 1
+1037 2024-09-10 07:24:18.92284+00 direct_edit t f 1
+1036 2024-09-10 07:23:50.864879+00 direct_edit t f 1
+1035 2024-09-10 07:23:44.112658+00 direct_edit t f 1
+1034 2024-09-10 07:23:41.857947+00 direct_edit t f 1
+1033 2024-09-10 07:23:39.189714+00 direct_edit t f 1
+1032 2024-09-10 07:23:36.319899+00 direct_edit t f 1
+1031 2024-09-10 07:23:10.721979+00 direct_edit t t 1
+1030 2024-09-10 07:23:01.086375+00 direct_edit t t 1
+1029 2024-09-10 07:22:03.150649+00 direct_edit t t 1
+1028 2024-09-10 07:21:40.824725+00 direct_edit t t 1
+1027 2024-09-10 07:20:56.365353+00 direct_edit t t 1
+1026 2024-09-10 07:20:42.296313+00 direct_edit t t 1
+1025 2024-09-10 07:19:49.695157+00 direct_edit t t 1
+1024 2024-09-10 07:19:25.260586+00 direct_edit t t 1
+1023 2024-09-10 07:19:13.366464+00 direct_edit t t 1
+1022 2024-09-10 07:17:59.858424+00 direct_edit t t 1
+1021 2024-09-10 07:17:22.980022+00 direct_edit t t 1
+1020 2024-09-10 07:16:23.387289+00 direct_edit t t 1
+1019 2024-09-10 07:15:02.46272+00 direct_edit t t 1
+1018 2024-09-10 07:14:53.455803+00 direct_edit t t 1
+1017 2024-09-10 07:14:30.148124+00 direct_edit t t 1
+1016 2024-09-10 07:13:29.931682+00 direct_edit t t 1
+1015 2024-09-10 07:11:40.329937+00 direct_edit t f 1
+1014 2024-09-10 07:11:33.776659+00 direct_edit t f 1
+1082 2024-09-10 07:34:15.759685+00 management t f \N
+1105 2024-09-10 07:38:24.963291+00 direct_edit t f 1
+1104 2024-09-10 07:38:21.27844+00 direct_edit t f 1
+1103 2024-09-10 07:38:18.818351+00 direct_edit t f 1
+1102 2024-09-10 07:38:16.157492+00 direct_edit t f 1
+1101 2024-09-10 07:38:12.263816+00 direct_edit t f 1
+1100 2024-09-10 07:38:07.560253+00 direct_edit t f 1
+1099 2024-09-10 07:38:01.619635+00 direct_edit t f 1
+1098 2024-09-10 07:37:57.925508+00 direct_edit t f 1
+1097 2024-09-10 07:37:55.678166+00 direct_edit t f 1
+1096 2024-09-10 07:37:50.968628+00 direct_edit t f 1
+1095 2024-09-10 07:37:46.444113+00 direct_edit t f 1
+1094 2024-09-10 07:37:34.173938+00 direct_edit t f 1
+1093 2024-09-10 07:37:26.796477+00 direct_edit t f 1
+1092 2024-09-10 07:37:18.814936+00 direct_edit t f 1
+1091 2024-09-10 07:37:11.847109+00 direct_edit t f 1
+1090 2024-09-10 07:36:38.88559+00 direct_edit t f 1
+1089 2024-09-10 07:36:35.349165+00 direct_edit t f 1
+1088 2024-09-10 07:36:28.637432+00 direct_edit t f 1
+1087 2024-09-10 07:36:23.315367+00 direct_edit t f 1
+1086 2024-09-10 07:36:18.198093+00 direct_edit t f 1
+1085 2024-09-10 07:36:13.895611+00 direct_edit t f 1
+1084 2024-09-10 07:36:10.619955+00 direct_edit t f 1
+1083 2024-09-10 07:35:59.966899+00 direct_edit t f 1
+1106 2024-09-10 07:38:44.865336+00 management t f \N
+1117 2024-09-10 07:40:17.832002+00 management t f \N
+1116 2024-09-10 07:40:02.665381+00 direct_edit t f 1
+1115 2024-09-10 07:39:59.798852+00 direct_edit t f 1
+1114 2024-09-10 07:39:55.900552+00 direct_edit t f 1
+1113 2024-09-10 07:39:53.240895+00 direct_edit t f 1
+1112 2024-09-10 07:39:50.790082+00 direct_edit t f 1
+1111 2024-09-10 07:39:48.326713+00 direct_edit t f 1
+1110 2024-09-10 07:39:41.155381+00 direct_edit t f 1
+1109 2024-09-10 07:39:38.287972+00 direct_edit t f 1
+1108 2024-09-10 07:39:34.601079+00 direct_edit t f 1
+1107 2024-09-10 07:39:27.643685+00 direct_edit t f 1
+1122 2024-09-10 07:43:09.431356+00 direct_edit t t 1
+1121 2024-09-10 07:43:02.673132+00 direct_edit t f 1
+1120 2024-09-10 07:42:58.371451+00 direct_edit t f 1
+1119 2024-09-10 07:42:47.312706+00 direct_edit t f 1
+1118 2024-09-10 07:42:37.892976+00 direct_edit t t 1
+1123 2024-09-10 07:43:47.367298+00 management t f \N
+1125 2024-09-10 08:51:41.065157+00 direct_edit t t 1
+1124 2024-09-10 08:51:26.319809+00 direct_edit t t 1
+1126 2024-09-10 08:52:45.444994+00 management t f \N
+1139 2024-09-10 09:03:25.386854+00 direct_edit t f 1
+1138 2024-09-10 09:03:20.265732+00 direct_edit t f 1
+1137 2024-09-10 09:03:11.255069+00 direct_edit t f 1
+1136 2024-09-10 09:03:02.247125+00 direct_edit t f 1
+1135 2024-09-10 09:02:55.688952+00 direct_edit t f 1
+1134 2024-09-10 09:02:39.093267+00 direct_edit t t 1
+1133 2024-09-10 09:02:21.072475+00 direct_edit t t 1
+1132 2024-09-10 09:02:07.355806+00 direct_edit t t 1
+1131 2024-09-10 09:01:51.406459+00 direct_edit t t 1
+1130 2024-09-10 08:59:34.999033+00 direct_edit t t 1
+1129 2024-09-10 08:59:04.697292+00 direct_edit t t 1
+1128 2024-09-10 08:58:29.055523+00 direct_edit t t 1
+1127 2024-09-10 08:55:16.552757+00 direct_edit t t 1
+1459 2024-09-24 09:23:49.369172+00 management t f \N
+1168 2024-09-10 09:16:52.598778+00 management t f \N
+1167 2024-09-10 09:16:31.015353+00 direct_edit t t 1
+1166 2024-09-10 09:16:19.541274+00 direct_edit t t 1
+1165 2024-09-10 09:15:54.964396+00 direct_edit t t 1
+1164 2024-09-10 09:15:42.471133+00 direct_edit t t 1
+1163 2024-09-10 09:15:25.883527+00 direct_edit t t 1
+1162 2024-09-10 09:15:13.185646+00 direct_edit t t 1
+1161 2024-09-10 09:14:41.031198+00 direct_edit t t 1
+1160 2024-09-10 09:14:27.927123+00 direct_edit t t 1
+1159 2024-09-10 09:14:06.008888+00 direct_edit t t 1
+1158 2024-09-10 09:13:51.468061+00 direct_edit t t 1
+1157 2024-09-10 09:10:20.722623+00 direct_edit t t 1
+1156 2024-09-10 09:09:55.737451+00 direct_edit t t 1
+1155 2024-09-10 09:09:07.642834+00 direct_edit t t 1
+1154 2024-09-10 09:04:49.776333+00 direct_edit t f 1
+1153 2024-09-10 09:04:46.905732+00 direct_edit t t 1
+1152 2024-09-10 09:04:38.296838+00 direct_edit t f 1
+1151 2024-09-10 09:04:37.078347+00 direct_edit t f 1
+1150 2024-09-10 09:04:34.820855+00 direct_edit t f 1
+1149 2024-09-10 09:04:32.169107+00 direct_edit t f 1
+1148 2024-09-10 09:04:29.093588+00 direct_edit t f 1
+1147 2024-09-10 09:04:25.603541+00 direct_edit t f 1
+1146 2024-09-10 09:04:05.750208+00 direct_edit t f 1
+1145 2024-09-10 09:04:01.84966+00 direct_edit t f 1
+1144 2024-09-10 09:04:00.209123+00 direct_edit t f 1
+1143 2024-09-10 09:03:57.958611+00 direct_edit t f 1
+1142 2024-09-10 09:03:55.90805+00 direct_edit t f 1
+1141 2024-09-10 09:03:53.508422+00 direct_edit t f 1
+1140 2024-09-10 09:03:48.938429+00 direct_edit t f 1
+1170 2024-09-10 09:20:52.348011+00 direct_edit t t 1
+1169 2024-09-10 09:20:32.712751+00 direct_edit t t 1
+1178 2024-09-10 10:35:46.134569+00 direct_edit t t 1
+1177 2024-09-10 10:35:24.631662+00 direct_edit t t 1
+1176 2024-09-10 10:34:37.526944+00 direct_edit t t 1
+1175 2024-09-10 10:34:22.781024+00 direct_edit t t 1
+1174 2024-09-10 10:33:50.428653+00 direct_edit t t 1
+1173 2024-09-10 10:33:17.025546+00 direct_edit t f 1
+1172 2024-09-10 10:33:05.354592+00 direct_edit t f 1
+1171 2024-09-10 10:28:43.017777+00 direct_edit t t 1
+1179 2024-09-10 10:36:17.624541+00 management t f \N
+1195 2024-09-10 10:40:53.357321+00 direct_edit t f 1
+1194 2024-09-10 10:40:49.054053+00 direct_edit t f 1
+1193 2024-09-10 10:40:38.8102+00 direct_edit t f 1
+1192 2024-09-10 10:40:10.744638+00 direct_edit t t 1
+1191 2024-09-10 10:39:48.215218+00 direct_edit t t 1
+1190 2024-09-10 10:39:28.122349+00 direct_edit t t 1
+1189 2024-09-10 10:39:07.049401+00 direct_edit t t 1
+1188 2024-09-10 10:38:41.448708+00 direct_edit t t 1
+1187 2024-09-10 10:38:16.062679+00 direct_edit t f 1
+1186 2024-09-10 10:38:10.140262+00 direct_edit t f 1
+1185 2024-09-10 10:37:59.461945+00 direct_edit t t 1
+1184 2024-09-10 10:37:52.088878+00 direct_edit t t 1
+1183 2024-09-10 10:37:45.124498+00 direct_edit t t 1
+1182 2024-09-10 10:37:36.939331+00 direct_edit t t 1
+1181 2024-09-10 10:37:18.913463+00 direct_edit t t 1
+1180 2024-09-10 10:37:11.339574+00 direct_edit t t 1
+1196 2024-09-10 10:41:26.170354+00 management t f \N
+1197 2024-09-10 10:42:34.309452+00 direct_edit t t 1
+1198 2024-09-10 10:42:55.667308+00 management t f \N
+1202 2024-09-10 10:44:00.73906+00 direct_edit t f 1
+1201 2024-09-10 10:43:57.465429+00 direct_edit t f 1
+1200 2024-09-10 10:43:45.791858+00 direct_edit t f 1
+1199 2024-09-10 10:43:43.534028+00 direct_edit t f 1
+1203 2024-09-10 10:44:14.757652+00 management t f \N
+1205 2024-09-10 10:48:32.635643+00 management t f \N
+1204 2024-09-10 10:47:35.778796+00 direct_edit t t 1
+1206 2024-09-10 10:48:44.226134+00 management t f \N
+1213 2024-09-10 11:02:21.142448+00 direct_edit t t 1
+1212 2024-09-10 11:01:57.63076+00 direct_edit t t 1
+1211 2024-09-10 11:01:34.242533+00 direct_edit t t 1
+1210 2024-09-10 11:01:22.7795+00 direct_edit t t 1
+1209 2024-09-10 11:00:59.456046+00 direct_edit t t 1
+1208 2024-09-10 10:59:52.863624+00 direct_edit t t 1
+1207 2024-09-10 10:59:46.925942+00 direct_edit t t 1
+1214 2024-09-10 11:02:52.771715+00 management t f \N
+1227 2024-09-10 12:18:13.775765+00 management t f \N
+1226 2024-09-10 12:17:55.290982+00 direct_edit t t 1
+1225 2024-09-10 12:17:39.309157+00 direct_edit t t 1
+1224 2024-09-10 12:17:24.571456+00 direct_edit t t 1
+1223 2024-09-10 12:17:06.341263+00 direct_edit t t 1
+1222 2024-09-10 12:16:50.569837+00 direct_edit t t 1
+1221 2024-09-10 12:16:29.065862+00 direct_edit t t 1
+1220 2024-09-10 12:15:31.1649+00 direct_edit t t 1
+1219 2024-09-10 11:06:44.931091+00 direct_edit t t 1
+1218 2024-09-10 11:03:47.981823+00 direct_edit t t 1
+1217 2024-09-10 11:03:41.634863+00 direct_edit t f 1
+1216 2024-09-10 11:03:37.94683+00 direct_edit t f 1
+1215 2024-09-10 11:03:33.239261+00 direct_edit t t 1
+1228 2024-09-10 12:18:25.071164+00 management t f \N
+1230 2024-09-10 12:20:36.671186+00 direct_edit t t 1
+1229 2024-09-10 12:19:55.335175+00 direct_edit t t 1
+1231 2024-09-10 12:21:40.212905+00 management t f \N
+1239 2024-09-10 12:27:50.260162+00 direct_edit t t 1
+1238 2024-09-10 12:26:50.892246+00 direct_edit t t 1
+1237 2024-09-10 12:26:34.900505+00 direct_edit t t 1
+1236 2024-09-10 12:25:49.60828+00 direct_edit t f 1
+1235 2024-09-10 12:25:27.295137+00 direct_edit t f 1
+1234 2024-09-10 12:25:19.913659+00 direct_edit t f 1
+1233 2024-09-10 12:23:27.074047+00 direct_edit t t 1
+1232 2024-09-10 12:23:17.85972+00 direct_edit t t 1
+1245 2024-09-10 12:34:43.976903+00 direct_edit t t 1
+1244 2024-09-10 12:34:32.929968+00 direct_edit t t 1
+1243 2024-09-10 12:34:08.621853+00 direct_edit t f 1
+1242 2024-09-10 12:29:53.129579+00 direct_edit t f 1
+1241 2024-09-10 12:29:48.418817+00 direct_edit t f 1
+1240 2024-09-10 12:29:44.331845+00 direct_edit t f 1
+1246 2024-09-10 12:35:07.360218+00 management t f \N
+1460 2024-09-24 09:26:09.867117+00 management t f \N
+1255 2024-09-10 13:41:45.300033+00 direct_edit t f 1
+1254 2024-09-10 13:41:22.35702+00 direct_edit t f 1
+1253 2024-09-10 13:40:51.841158+00 direct_edit t f 1
+1252 2024-09-10 13:40:00.841204+00 direct_edit t f 1
+1251 2024-09-10 13:29:49.496297+00 direct_edit t t 1
+1250 2024-09-10 13:28:45.780241+00 direct_edit t t 1
+1249 2024-09-10 13:24:39.433561+00 direct_edit t t 1
+1248 2024-09-10 13:20:33.032079+00 direct_edit t f 1
+1247 2024-09-10 13:20:22.790597+00 direct_edit t f 1
+1256 2024-09-10 13:42:48.157359+00 management t f \N
+1261 2024-09-11 12:29:25.106061+00 direct_edit t t 1
+1260 2024-09-11 12:28:51.30691+00 direct_edit t t 1
+1259 2024-09-11 12:25:40.227963+00 direct_edit t t 1
+1258 2024-09-11 12:25:09.922248+00 direct_edit t t 1
+1257 2024-09-11 12:21:56.725799+00 direct_edit t t 1
+1262 2024-09-11 13:04:14.763689+00 management t f \N
+1270 2024-09-12 14:52:38.483398+00 direct_edit t t 1
+1269 2024-09-12 14:52:26.395897+00 direct_edit t f 1
+1268 2024-09-12 14:52:19.234856+00 direct_edit t t 1
+1267 2024-09-12 14:52:04.690547+00 direct_edit t t 1
+1266 2024-09-12 14:51:54.044696+00 direct_edit t t 1
+1265 2024-09-12 14:51:44.21068+00 direct_edit t t 1
+1264 2024-09-12 14:51:31.52176+00 direct_edit t t 1
+1263 2024-09-12 14:51:19.841867+00 direct_edit t t 1
+1271 2024-09-12 14:54:00.590495+00 direct_edit t f 1
+1272 2024-09-12 14:55:41.985865+00 direct_edit t t 1
+1273 2024-09-12 15:19:36.778805+00 direct_edit t t 1
+1276 2024-09-12 15:46:36.388235+00 direct_edit t t 1
+1275 2024-09-12 15:46:26.558709+00 direct_edit t t 1
+1274 2024-09-12 15:31:08.423966+00 direct_edit t t 1
+1277 2024-09-12 15:48:42.772787+00 direct_edit t t 1
+1278 2024-09-12 15:50:12.045228+00 direct_edit t t 1
+1279 2024-09-12 15:52:41.961572+00 direct_edit t t 1
+1284 2024-09-12 15:54:51.198154+00 direct_edit t t 1
+1283 2024-09-12 15:54:36.655943+00 direct_edit t t 1
+1282 2024-09-12 15:54:20.069994+00 direct_edit t t 1
+1281 2024-09-12 15:54:02.455219+00 direct_edit t t 1
+1280 2024-09-12 15:53:50.166135+00 direct_edit t t 1
+1286 2024-09-12 15:55:47.513854+00 direct_edit t t 1
+1285 2024-09-12 15:55:39.116675+00 direct_edit t t 1
+1287 2024-09-12 15:56:49.572548+00 direct_edit t t 1
+1288 2024-09-12 15:57:09.83227+00 management t f \N
+1290 2024-09-12 15:58:29.768858+00 management t f \N
+1289 2024-09-12 15:58:22.553631+00 direct_edit t t 1
+1291 2024-09-12 16:40:57.370124+00 management t f \N
+1299 2024-09-13 09:46:57.590404+00 management t f \N
+1298 2024-09-13 09:46:38.273145+00 direct_edit t t 1
+1297 2024-09-13 09:46:06.120767+00 direct_edit t t 1
+1296 2024-09-13 09:45:57.694057+00 direct_edit t t 1
+1295 2024-09-13 09:45:26.595928+00 direct_edit t t 1
+1294 2024-09-13 09:43:33.110826+00 direct_edit t t 1
+1293 2024-09-13 09:43:25.525499+00 direct_edit t t 1
+1292 2024-09-13 09:42:31.456966+00 direct_edit t t 1
+1301 2024-09-13 09:47:58.598763+00 management t f \N
+1300 2024-09-13 09:47:42.791393+00 direct_edit t t 1
+1311 2024-09-13 09:52:32.79547+00 management t f \N
+1310 2024-09-13 09:52:17.616863+00 direct_edit t f 1
+1309 2024-09-13 09:52:01.63862+00 direct_edit t f 1
+1308 2024-09-13 09:51:23.334695+00 direct_edit t t 1
+1307 2024-09-13 09:51:18.214351+00 direct_edit t t 1
+1306 2024-09-13 09:51:05.518083+00 direct_edit t t 1
+1305 2024-09-13 09:50:47.07476+00 direct_edit t t 1
+1304 2024-09-13 09:50:26.220617+00 direct_edit t t 1
+1303 2024-09-13 09:49:27.857506+00 direct_edit t t 1
+1302 2024-09-13 09:48:40.749106+00 direct_edit t t 1
+1318 2024-09-13 09:54:08.479852+00 management t f \N
+1317 2024-09-13 09:53:57.350878+00 direct_edit t f 1
+1316 2024-09-13 09:53:51.823046+00 direct_edit t f 1
+1315 2024-09-13 09:53:46.086056+00 direct_edit t f 1
+1314 2024-09-13 09:53:39.330484+00 direct_edit t f 1
+1313 2024-09-13 09:53:30.926138+00 direct_edit t f 1
+1312 2024-09-13 09:53:21.71681+00 direct_edit t t 1
+1323 2024-09-13 09:57:07.100504+00 management t f \N
+1322 2024-09-13 09:56:07.436373+00 direct_edit t t 1
+1321 2024-09-13 09:55:53.469571+00 direct_edit t t 1
+1320 2024-09-13 09:55:06.363944+00 direct_edit t t 1
+1319 2024-09-13 09:54:53.695535+00 direct_edit t t 1
+1324 2024-09-13 09:57:18.7182+00 management t f \N
+1330 2024-09-13 10:00:20.828182+00 management t f \N
+1329 2024-09-13 10:00:13.154724+00 direct_edit t t 1
+1328 2024-09-13 09:59:49.840141+00 direct_edit t t 1
+1327 2024-09-13 09:59:28.954764+00 direct_edit t t 1
+1326 2024-09-13 09:59:08.876721+00 direct_edit t t 1
+1325 2024-09-13 09:58:31.812257+00 direct_edit t t 1
+1331 2024-09-13 10:00:32.546703+00 management t f \N
+1334 2024-09-13 10:02:33.270975+00 management t f \N
+1333 2024-09-13 10:02:25.260072+00 direct_edit t t 1
+1332 2024-09-13 10:02:16.071062+00 direct_edit t t 1
+1336 2024-09-13 10:03:21.208059+00 management t f \N
+1335 2024-09-13 10:03:13.626379+00 direct_edit t t 1
+1338 2024-09-13 10:04:16.748769+00 management t f \N
+1337 2024-09-13 10:04:06.26271+00 direct_edit t t 1
+1341 2024-09-13 10:06:17.274559+00 management t f \N
+1340 2024-09-13 10:06:07.8786+00 direct_edit t t 1
+1339 2024-09-13 10:05:00.939688+00 direct_edit t t 1
+1343 2024-09-13 10:07:04.478183+00 management t f \N
+1342 2024-09-13 10:06:57.468532+00 direct_edit t t 1
+1345 2024-09-13 10:07:52.984192+00 management t f \N
+1344 2024-09-13 10:07:46.011761+00 direct_edit t t 1
+1348 2024-09-13 10:08:46.48357+00 management t f \N
+1347 2024-09-13 10:08:39.020339+00 direct_edit t t 1
+1346 2024-09-13 10:08:29.631386+00 direct_edit t t 1
+1350 2024-09-13 10:10:18.42692+00 management t f \N
+1349 2024-09-13 10:10:10.975279+00 direct_edit t t 1
+1352 2024-09-13 10:12:15.610325+00 management t f \N
+1351 2024-09-13 10:10:47.841157+00 direct_edit t t 1
+1354 2024-09-13 10:13:05.013524+00 management t f \N
+1353 2024-09-13 10:12:59.121993+00 direct_edit t t 1
+1358 2024-09-13 10:14:25.413255+00 management t f \N
+1357 2024-09-13 10:14:16.945085+00 direct_edit t t 1
+1356 2024-09-13 10:14:11.622835+00 direct_edit t t 1
+1355 2024-09-13 10:14:07.297797+00 direct_edit t t 1
+1360 2024-09-13 10:15:03.879754+00 management t f \N
+1359 2024-09-13 10:14:56.473102+00 direct_edit t t 1
+1362 2024-09-13 10:15:47.602122+00 management t f \N
+1461 2024-09-24 09:26:50.419953+00 management t t \N
+1361 2024-09-13 10:15:41.122242+00 direct_edit t t 1
+1364 2024-09-13 10:16:33.767728+00 management t f \N
+1363 2024-09-13 10:16:26.790795+00 direct_edit t t 1
+1366 2024-09-13 10:17:17.002324+00 management t f \N
+1365 2024-09-13 10:17:09.184966+00 direct_edit t t 1
+1368 2024-09-13 10:17:54.917009+00 management t f \N
+1367 2024-09-13 10:17:45.654775+00 direct_edit t t 1
+1376 2024-09-14 07:38:23.226492+00 management t f \N
+1375 2024-09-14 07:37:54.918275+00 direct_edit t t 1
+1374 2024-09-14 07:31:41.807829+00 direct_edit t t 1
+1373 2024-09-14 07:31:29.894066+00 direct_edit t t 1
+1372 2024-09-14 07:31:20.49625+00 direct_edit t t 1
+1371 2024-09-14 07:31:06.981565+00 direct_edit t t 1
+1370 2024-09-14 07:30:50.598423+00 direct_edit t t 1
+1369 2024-09-14 07:30:23.565052+00 direct_edit t t 1
+1378 2024-09-14 07:41:40.772276+00 management t f \N
+1377 2024-09-14 07:41:33.68215+00 direct_edit t t 1
+1380 2024-09-14 07:44:31.52611+00 management t f \N
+1379 2024-09-14 07:44:24.084008+00 direct_edit t t 1
+1381 2024-09-14 07:44:42.796719+00 management t f \N
+1382 2024-09-14 08:07:07.642383+00 management t f \N
+1383 2024-09-14 08:08:06.892598+00 management t f \N
+1392 2024-09-17 07:27:25.135224+00 direct_edit t f 1
+1391 2024-09-17 07:21:04.067146+00 direct_edit t f 1
+1390 2024-09-17 07:18:17.567738+00 direct_edit t f 1
+1389 2024-09-17 07:17:02.403835+00 direct_edit t f 1
+1388 2024-09-17 07:13:24.078989+00 direct_edit t f 1
+1387 2024-09-17 07:05:02.1913+00 direct_edit t f 1
+1386 2024-09-16 11:42:47.35352+00 direct_edit t f 1
+1385 2024-09-16 11:40:31.779548+00 direct_edit t f 1
+1384 2024-09-16 11:40:10.877233+00 direct_edit t f 1
+1393 2024-09-17 07:28:20.104683+00 direct_edit t f 1
+1397 2024-09-17 07:51:20.07211+00 direct_edit t f 1
+1396 2024-09-17 07:46:27.647246+00 direct_edit t t 1
+1395 2024-09-17 07:44:43.784645+00 direct_edit t t 1
+1394 2024-09-17 07:29:26.460936+00 direct_edit t f 1
+1409 2024-09-17 08:08:34.297084+00 direct_edit t t 1
+1408 2024-09-17 08:08:28.562649+00 direct_edit t t 1
+1407 2024-09-17 08:08:16.012427+00 direct_edit t t 1
+1406 2024-09-17 08:08:10.332891+00 direct_edit t t 1
+1405 2024-09-17 08:08:04.802643+00 direct_edit t t 1
+1404 2024-09-17 08:07:54.562573+00 direct_edit t t 1
+1403 2024-09-17 08:03:38.970107+00 direct_edit t t 1
+1402 2024-09-17 08:00:28.296372+00 direct_edit t t 1
+1401 2024-09-17 08:00:19.082067+00 direct_edit t t 1
+1400 2024-09-17 08:00:07.843568+00 direct_edit t t 1
+1399 2024-09-17 07:57:44.266739+00 direct_edit t t 1
+1398 2024-09-17 07:53:26.858845+00 direct_edit t f 1
+1412 2024-09-17 08:10:25.17003+00 direct_edit t t 1
+1411 2024-09-17 08:09:50.072073+00 direct_edit t t 1
+1410 2024-09-17 08:09:42.90533+00 direct_edit t t 1
+1416 2024-09-17 08:12:17.736897+00 direct_edit t t 1
+1415 2024-09-17 08:12:05.857031+00 direct_edit t t 1
+1414 2024-09-17 08:12:00.121251+00 direct_edit t t 1
+1413 2024-09-17 08:11:11.788843+00 direct_edit t t 1
+1417 2024-09-17 08:13:06.272245+00 direct_edit t t 1
+1418 2024-09-17 08:13:59.321358+00 direct_edit t t 1
+1421 2024-09-17 08:15:17.756792+00 direct_edit t t 1
+1420 2024-09-17 08:14:59.12088+00 direct_edit t t 1
+1419 2024-09-17 08:14:52.163509+00 direct_edit t t 1
+1423 2024-09-17 08:18:21.474712+00 direct_edit t t 1
+1422 2024-09-17 08:18:13.689605+00 direct_edit t t 1
+1424 2024-09-17 08:20:15.545646+00 direct_edit t t 1
+1447 2024-09-17 09:51:43.294892+00 direct_edit t t 1
+1446 2024-09-17 09:51:29.159128+00 direct_edit t f 1
+1445 2024-09-17 09:51:02.081944+00 direct_edit t f 1
+1444 2024-09-17 09:50:26.890106+00 direct_edit t t 1
+1443 2024-09-17 09:48:18.483833+00 direct_edit t t 1
+1442 2024-09-17 09:46:10.929869+00 direct_edit t t 1
+1441 2024-09-17 09:46:03.479578+00 direct_edit t t 1
+1440 2024-09-17 09:45:59.588099+00 direct_edit t t 1
+1439 2024-09-17 09:45:52.827538+00 direct_edit t t 1
+1438 2024-09-17 09:45:46.485474+00 direct_edit t t 1
+1437 2024-09-17 09:45:43.407182+00 direct_edit t t 1
+1436 2024-09-17 09:45:40.336744+00 direct_edit t t 1
+1435 2024-09-17 09:45:33.167597+00 direct_edit t t 1
+1434 2024-09-17 09:45:28.660578+00 direct_edit t t 1
+1433 2024-09-17 09:45:22.10772+00 direct_edit t t 1
+1432 2024-09-17 09:32:36.370708+00 direct_edit t f 1
+1431 2024-09-17 09:31:05.023255+00 direct_edit t f 1
+1430 2024-09-17 09:30:57.037458+00 direct_edit t f 1
+1429 2024-09-17 09:21:36.275858+00 direct_edit t f 1
+1428 2024-09-17 09:21:14.154067+00 direct_edit t f 1
+1427 2024-09-17 09:17:57.13612+00 direct_edit t t 1
+1426 2024-09-17 09:17:50.579633+00 direct_edit t f 1
+1425 2024-09-17 09:11:18.984082+00 direct_edit t f 1
+1450 2024-09-17 09:57:49.847976+00 direct_edit t t 1
+1449 2024-09-17 09:55:01.292517+00 direct_edit t t 1
+1448 2024-09-17 09:54:20.130126+00 direct_edit t t 1
+1462 2024-09-24 10:04:08.949053+00 management t t \N
+1464 2024-09-26 07:07:03.307946+00 management t t \N
+1466 2024-09-26 07:30:45.077639+00 management t t \N
+1475 2024-09-26 07:42:42.544684+00 direct_edit t f 1
+1484 2024-09-26 08:11:34.742136+00 management t t \N
+1493 2024-09-26 08:25:43.432671+00 management t t \N
+1502 2024-09-26 09:49:38.352906+00 direct_edit t t 1
+1538 2024-09-26 10:04:34.371102+00 direct_edit t t 1
+1529 2024-09-26 10:03:13.271285+00 direct_edit t f 1
+1520 2024-09-26 10:01:44.385284+00 direct_edit t f 1
+1511 2024-09-26 10:00:21.846249+00 direct_edit t f 1
+1547 2024-09-26 10:15:54.970891+00 direct_edit t t 1
+1565 2024-10-14 07:43:30.556651+00 direct_edit t f 1
+1556 2024-10-14 07:42:25.236643+00 direct_edit t f 1
+1574 2024-10-14 07:59:13.073095+00 direct_edit t f 1
+1583 2024-10-14 08:06:52.733014+00 direct_edit t f 1
+1646 2024-10-14 09:15:48.453187+00 direct_edit t f 1
+1637 2024-10-14 09:13:19.559871+00 direct_edit t f 1
+1628 2024-10-14 08:37:22.579852+00 direct_edit t f 1
+1619 2024-10-14 08:36:31.780933+00 direct_edit t f 1
+1610 2024-10-14 08:35:59.622567+00 direct_edit t f 1
+1601 2024-10-14 08:32:57.760393+00 direct_edit t f 1
+1592 2024-10-14 08:26:29.247563+00 direct_edit t f 1
+1655 2024-10-14 09:22:02.24729+00 direct_edit t f 1
+1664 2024-10-14 09:38:02.7512+00 direct_edit t f 1
+1673 2024-10-14 09:47:00.962367+00 management t t \N
+1682 2024-10-14 09:53:37.872442+00 direct_edit t f 1
+1691 2024-10-14 09:58:45.112624+00 management t t \N
+1467 2024-09-26 07:31:54.371969+00 management t t \N
+1476 2024-09-26 07:42:58.255982+00 management t t \N
+1485 2024-09-26 08:16:09.237281+00 direct_edit t t 1
+1494 2024-09-26 08:26:20.93681+00 direct_edit t t 1
+1503 2024-09-26 09:49:47.073889+00 direct_edit t t 1
+1539 2024-09-26 10:05:06.833964+00 management t t \N
+1530 2024-09-26 10:03:26.586659+00 direct_edit t f 1
+1521 2024-09-26 10:01:49.092846+00 direct_edit t f 1
+1512 2024-09-26 10:00:29.221148+00 direct_edit t f 1
+1548 2024-09-26 10:16:06.754154+00 management t t \N
+1566 2024-10-14 07:47:08.014453+00 management t t \N
+1557 2024-10-14 07:42:32.398147+00 direct_edit t f 1
+1575 2024-10-14 07:59:25.558589+00 management t t \N
+1584 2024-10-14 08:07:00.817526+00 management t t \N
+1647 2024-10-14 09:15:59.923983+00 direct_edit t f 1
+1638 2024-10-14 09:13:56.022618+00 direct_edit t f 1
+1629 2024-10-14 08:37:32.193879+00 direct_edit t f 1
+1620 2024-10-14 08:36:34.035541+00 direct_edit t f 1
+1611 2024-10-14 08:36:02.077794+00 direct_edit t f 1
+1602 2024-10-14 08:33:10.660786+00 direct_edit t f 1
+1593 2024-10-14 08:26:37.439362+00 direct_edit t f 1
+1656 2024-10-14 09:22:15.157528+00 direct_edit t f 1
+1665 2024-10-14 09:38:18.700802+00 management t t \N
+1674 2024-10-14 09:48:16.32765+00 direct_edit t f 1
+1683 2024-10-14 09:54:10.855695+00 direct_edit t f 1
+1692 2024-10-14 09:59:22.143816+00 direct_edit t f 1
+1468 2024-09-26 07:35:43.672033+00 management t t \N
+1477 2024-09-26 07:48:28.47175+00 direct_edit t t 1
+1486 2024-09-26 08:16:29.469269+00 direct_edit t t 1
+1495 2024-09-26 08:26:33.432951+00 direct_edit t t 1
+1504 2024-09-26 09:49:54.124328+00 direct_edit t t 1
+1531 2024-09-26 10:03:44.205265+00 direct_edit t f 1
+1522 2024-09-26 10:01:51.965332+00 direct_edit t f 1
+1513 2024-09-26 10:00:34.551498+00 direct_edit t f 1
+1540 2024-09-26 10:06:52.821557+00 direct_edit t t 1
+1558 2024-10-14 07:42:40.38506+00 direct_edit t f 1
+1549 2024-10-14 07:41:38.533546+00 direct_edit t f 1
+1567 2024-10-14 07:48:57.680573+00 direct_edit t f 1
+1576 2024-10-14 08:00:59.400395+00 direct_edit t f 1
+1585 2024-10-14 08:09:33.206094+00 direct_edit t f 1
+1648 2024-10-14 09:16:12.619615+00 direct_edit t f 1
+1639 2024-10-14 09:14:06.470297+00 direct_edit t f 1
+1630 2024-10-14 08:37:33.832333+00 direct_edit t f 1
+1621 2024-10-14 08:36:36.901217+00 direct_edit t f 1
+1612 2024-10-14 08:36:05.15603+00 direct_edit t f 1
+1603 2024-10-14 08:34:35.448399+00 direct_edit t t 1
+1594 2024-10-14 08:27:26.389106+00 direct_edit t f 1
+1657 2024-10-14 09:22:22.94894+00 management t t \N
+1666 2024-10-14 09:39:13.008294+00 direct_edit t f 1
+1675 2024-10-14 09:48:22.655548+00 management t t \N
+1684 2024-10-14 09:54:20.255639+00 management t t \N
+1693 2024-10-14 09:59:30.122254+00 management t t \N
+1469 2024-09-26 07:38:19.155151+00 direct_edit t t 1
+1478 2024-09-26 07:49:21.92287+00 direct_edit t t 1
+1487 2024-09-26 08:16:51.178104+00 direct_edit t t 1
+1496 2024-09-26 08:29:09.919491+00 direct_edit t t 1
+1505 2024-09-26 09:50:02.115388+00 direct_edit t t 1
+1532 2024-09-26 10:03:47.27035+00 direct_edit t f 1
+1523 2024-09-26 10:02:06.712112+00 direct_edit t f 1
+1514 2024-09-26 10:00:52.369591+00 direct_edit t f 1
+1541 2024-09-26 10:08:47.953783+00 management t t \N
+1559 2024-10-14 07:42:44.694661+00 direct_edit t f 1
+1550 2024-10-14 07:41:40.995795+00 direct_edit t f 1
+1568 2024-10-14 07:49:07.499496+00 direct_edit t f 1
+1577 2024-10-14 08:01:12.515093+00 direct_edit t f 1
+1586 2024-10-14 08:09:41.771586+00 management t t \N
+1649 2024-10-14 09:16:25.304951+00 management t t \N
+1640 2024-10-14 09:14:13.628584+00 direct_edit t f 1
+1631 2024-10-14 08:37:36.911522+00 direct_edit t f 1
+1622 2024-10-14 08:36:48.994384+00 direct_edit t f 1
+1613 2024-10-14 08:36:09.042423+00 direct_edit t f 1
+1604 2024-10-14 08:34:42.819696+00 direct_edit t f 1
+1595 2024-10-14 08:27:30.891749+00 direct_edit t f 1
+1658 2024-10-14 09:24:46.051051+00 direct_edit t f 1
+1667 2024-10-14 09:41:08.674406+00 management t t \N
+1676 2024-10-14 09:50:36.830452+00 direct_edit t f 1
+1685 2024-10-14 09:56:31.145849+00 direct_edit t f 1
+1470 2024-09-26 07:38:30.01308+00 management t t \N
+1479 2024-09-26 07:49:39.561913+00 direct_edit t t 1
+1488 2024-09-26 08:17:03.261658+00 direct_edit t t 1
+1497 2024-09-26 08:29:52.871375+00 management t t \N
+1506 2024-09-26 09:50:46.179522+00 direct_edit t f 1
+1533 2024-09-26 10:04:00.171117+00 direct_edit t f 1
+1524 2024-09-26 10:02:16.749619+00 direct_edit t f 1
+1515 2024-09-26 10:00:55.854845+00 direct_edit t f 1
+1542 2024-09-26 10:10:07.012276+00 direct_edit t t 1
+1560 2024-10-14 07:42:48.792562+00 direct_edit t f 1
+1551 2024-10-14 07:41:46.943402+00 direct_edit t t 1
+1569 2024-10-14 07:49:17.024828+00 direct_edit t f 1
+1578 2024-10-14 08:01:26.629597+00 direct_edit t f 1
+1587 2024-10-14 08:11:24.619805+00 direct_edit t f 1
+1641 2024-10-14 09:14:19.569443+00 direct_edit t f 1
+1632 2024-10-14 08:37:41.208229+00 direct_edit t f 1
+1623 2024-10-14 08:36:51.236409+00 direct_edit t f 1
+1614 2024-10-14 08:36:12.72773+00 direct_edit t f 1
+1605 2024-10-14 08:34:55.107253+00 direct_edit t f 1
+1596 2024-10-14 08:27:54.241424+00 direct_edit t f 1
+1650 2024-10-14 09:17:53.585831+00 direct_edit t f 1
+1659 2024-10-14 09:24:53.004838+00 management t t \N
+1668 2024-10-14 09:44:10.394599+00 direct_edit t f 1
+1677 2024-10-14 09:50:44.846528+00 management t t \N
+1686 2024-10-14 09:56:44.050708+00 direct_edit t f 1
+1471 2024-09-26 07:38:57.446861+00 direct_edit t f 1
+1480 2024-09-26 07:50:10.845706+00 direct_edit t t 1
+1489 2024-09-26 08:17:11.45662+00 direct_edit t t 1
+1498 2024-09-26 09:40:18.444027+00 direct_edit t t 1
+1507 2024-09-26 09:57:56.001745+00 management t t \N
+1534 2024-09-26 10:04:06.518797+00 direct_edit t f 1
+1525 2024-09-26 10:02:39.690126+00 direct_edit t f 1
+1516 2024-09-26 10:00:59.94124+00 direct_edit t f 1
+1543 2024-09-26 10:11:36.710816+00 direct_edit t f 1
+1561 2024-10-14 07:42:58.211412+00 direct_edit t f 1
+1552 2024-10-14 07:41:54.924809+00 direct_edit t f 1
+1570 2024-10-14 07:49:25.460115+00 management t t \N
+1579 2024-10-14 08:02:28.456476+00 direct_edit t t 1
+1588 2024-10-14 08:11:30.55195+00 management t t \N
+1642 2024-10-14 09:14:49.056757+00 direct_edit t f 1
+1633 2024-10-14 08:37:43.872311+00 direct_edit t f 1
+1624 2024-10-14 08:36:53.284849+00 direct_edit t f 1
+1615 2024-10-14 08:36:17.643729+00 direct_edit t f 1
+1606 2024-10-14 08:35:35.872762+00 direct_edit t t 1
+1597 2024-10-14 08:28:08.375584+00 direct_edit t f 1
+1651 2024-10-14 09:18:04.222893+00 management t t \N
+1660 2024-10-14 09:30:58.798038+00 direct_edit t f 1
+1669 2024-10-14 09:44:51.342677+00 management t t \N
+1678 2024-10-14 09:51:21.268761+00 direct_edit t f 1
+1687 2024-10-14 09:57:08.407394+00 direct_edit t f 1
+1472 2024-09-26 07:39:07.477781+00 management t t \N
+1481 2024-09-26 07:50:29.278483+00 direct_edit t t 1
+1490 2024-09-26 08:17:51.221735+00 direct_edit t t 1
+1499 2024-09-26 09:48:35.893205+00 management t t \N
+1535 2024-09-26 10:04:10.823677+00 direct_edit t f 1
+1526 2024-09-26 10:02:43.997566+00 direct_edit t f 1
+1517 2024-09-26 10:01:27.179627+00 direct_edit t f 1
+1508 2024-09-26 09:58:46.616902+00 direct_edit t t 1
+1544 2024-09-26 10:13:38.548988+00 direct_edit t t 1
+1562 2024-10-14 07:43:01.282515+00 direct_edit t f 1
+1553 2024-10-14 07:42:02.09414+00 direct_edit t f 1
+1571 2024-10-14 07:58:34.540077+00 direct_edit t f 1
+1580 2024-10-14 08:02:46.362294+00 management t t \N
+1643 2024-10-14 09:15:06.874703+00 direct_edit t f 1
+1634 2024-10-14 09:12:47.203034+00 direct_edit t f 1
+1625 2024-10-14 08:36:57.176022+00 direct_edit t f 1
+1616 2024-10-14 08:36:20.722192+00 direct_edit t f 1
+1607 2024-10-14 08:35:39.759403+00 direct_edit t t 1
+1598 2024-10-14 08:28:18.40645+00 direct_edit t f 1
+1589 2024-10-14 08:14:31.198129+00 direct_edit t f 1
+1652 2024-10-14 09:18:41.316411+00 direct_edit t f 1
+1661 2024-10-14 09:31:06.359922+00 management t t \N
+1670 2024-10-14 09:46:33.115552+00 direct_edit t f 1
+1679 2024-10-14 09:51:33.620681+00 management t t \N
+1688 2024-10-14 09:57:23.575567+00 direct_edit t f 1
+1473 2024-09-26 07:40:45.156097+00 management t t \N
+1482 2024-09-26 07:54:22.979359+00 direct_edit t t 1
+1491 2024-09-26 08:18:23.962267+00 direct_edit t t 1
+1500 2024-09-26 09:49:21.765432+00 direct_edit t t 1
+1536 2024-09-26 10:04:14.711941+00 direct_edit t f 1
+1527 2024-09-26 10:02:46.857999+00 direct_edit t f 1
+1518 2024-09-26 10:01:30.865264+00 direct_edit t f 1
+1509 2024-09-26 09:58:56.65741+00 direct_edit t t 1
+1545 2024-09-26 10:13:50.617381+00 direct_edit t t 1
+1563 2024-10-14 07:43:11.52314+00 direct_edit t f 1
+1554 2024-10-14 07:42:13.562517+00 direct_edit t f 1
+1572 2024-10-14 07:58:51.157162+00 direct_edit t f 1
+1581 2024-10-14 08:05:56.745213+00 direct_edit t t 1
+1644 2024-10-14 09:15:20.599362+00 direct_edit t f 1
+1635 2024-10-14 09:12:53.139439+00 direct_edit t f 1
+1626 2024-10-14 08:37:06.806701+00 direct_edit t f 1
+1617 2024-10-14 08:36:26.046949+00 direct_edit t f 1
+1608 2024-10-14 08:35:44.023856+00 direct_edit t f 1
+1599 2024-10-14 08:28:42.181576+00 direct_edit t f 1
+1590 2024-10-14 08:26:19.20971+00 direct_edit t f 1
+1653 2024-10-14 09:18:50.755437+00 management t t \N
+1662 2024-10-14 09:32:48.402875+00 direct_edit t f 1
+1671 2024-10-14 09:46:41.322179+00 direct_edit t f 1
+1680 2024-10-14 09:52:39.090567+00 direct_edit t f 1
+1689 2024-10-14 09:57:34.040624+00 management t t \N
+1474 2024-09-26 07:42:29.674239+00 direct_edit t t 1
+1483 2024-09-26 07:58:04.543571+00 management t t \N
+1492 2024-09-26 08:18:33.581381+00 direct_edit t t 1
+1501 2024-09-26 09:49:31.389063+00 direct_edit t t 1
+1537 2024-09-26 10:04:18.193127+00 direct_edit t f 1
+1528 2024-09-26 10:03:00.16993+00 direct_edit t f 1
+1519 2024-09-26 10:01:38.647719+00 direct_edit t f 1
+1510 2024-09-26 10:00:12.015625+00 direct_edit t f 1
+1546 2024-09-26 10:14:33.200347+00 management t t \N
+1564 2024-10-14 07:43:15.62323+00 direct_edit t f 1
+1555 2024-10-14 07:42:21.134923+00 direct_edit t f 1
+1573 2024-10-14 07:58:55.666249+00 direct_edit t f 1
+1582 2024-10-14 08:06:10.672704+00 management t t \N
+1645 2024-10-14 09:15:38.420506+00 direct_edit t f 1
+1636 2024-10-14 09:13:09.52928+00 direct_edit t f 1
+1627 2024-10-14 08:37:16.430538+00 direct_edit t f 1
+1618 2024-10-14 08:36:28.301877+00 direct_edit t f 1
+1609 2024-10-14 08:35:55.32481+00 direct_edit t t 1
+1600 2024-10-14 08:32:50.384939+00 direct_edit t f 1
+1591 2024-10-14 08:26:23.104212+00 direct_edit t f 1
+1654 2024-10-14 09:21:43.836395+00 direct_edit t f 1
+1663 2024-10-14 09:37:44.111677+00 direct_edit t t 1
+1672 2024-10-14 09:46:51.753904+00 direct_edit t f 1
+1681 2024-10-14 09:52:47.471178+00 management t t \N
+1690 2024-10-14 09:58:36.302143+00 direct_edit t f 1
+1465 2024-09-26 07:07:49.438347+00 management t t \N
+1694 2024-10-14 10:11:32.671043+00 management t t \N
+1696 2024-10-14 10:23:51.222383+00 management t t \N
+1695 2024-10-14 10:23:43.84118+00 direct_edit t f 1
+1699 2024-10-14 10:27:01.543045+00 management t t \N
+1698 2024-10-14 10:26:54.099375+00 direct_edit t f 1
+1697 2024-10-14 10:25:00.434511+00 direct_edit t f 1
+1700 2024-10-14 10:35:23.941986+00 management t t \N
+1702 2024-10-14 10:35:38.393384+00 management t t \N
+1701 2024-10-14 10:35:32.664991+00 direct_edit t f 1
+1704 2024-10-14 10:42:51.211+00 management t t \N
+1703 2024-10-14 10:42:42.736223+00 direct_edit t f 1
+1705 2024-10-14 10:44:39.470984+00 management t t \N
+1708 2024-10-14 10:48:06.994629+00 management t t \N
+1707 2024-10-14 10:47:59.978441+00 direct_edit t f 1
+1706 2024-10-14 10:45:22.311998+00 direct_edit t f 1
+1715 2024-10-14 10:54:23.789031+00 management t t \N
+1714 2024-10-14 10:53:54.304584+00 direct_edit t f 1
+1713 2024-10-14 10:53:24.396856+00 direct_edit t f 1
+1712 2024-10-14 10:52:59.410632+00 direct_edit t f 1
+1711 2024-10-14 10:50:59.146135+00 direct_edit t f 1
+1710 2024-10-14 10:50:26.011795+00 direct_edit t f 1
+1709 2024-10-14 10:49:52.428081+00 direct_edit t f 1
+1718 2024-10-14 12:20:16.611694+00 management t t \N
+1717 2024-10-14 12:20:09.09036+00 direct_edit t f 1
+1716 2024-10-14 12:19:37.95791+00 direct_edit t f 1
+1719 2024-10-14 12:22:02.195387+00 management t t \N
+1723 2024-10-14 12:30:31.691898+00 management t t \N
+1722 2024-10-14 12:29:01.759267+00 direct_edit t t 1
+1721 2024-10-14 12:28:17.949207+00 direct_edit t t 1
+1720 2024-10-14 12:27:25.927843+00 direct_edit t t 1
+1725 2024-10-14 12:31:30.893196+00 management t t \N
+1724 2024-10-14 12:31:17.535758+00 direct_edit t t 1
+1728 2024-10-14 12:32:27.748725+00 management t t \N
+1727 2024-10-14 12:32:20.084137+00 direct_edit t t 1
+1726 2024-10-14 12:32:14.473308+00 direct_edit t t 1
+1730 2024-10-14 12:36:00.833629+00 management t t \N
+1729 2024-10-14 12:35:14.527524+00 direct_edit t t 1
+1739 2024-10-14 12:40:18.251126+00 management t t \N
+1738 2024-10-14 12:40:10.044146+00 direct_edit t f 1
+1737 2024-10-14 12:39:50.589335+00 direct_edit t f 1
+1736 2024-10-14 12:39:34.197076+00 direct_edit t f 1
+1735 2024-10-14 12:39:23.352926+00 direct_edit t f 1
+1734 2024-10-14 12:39:01.422917+00 direct_edit t f 1
+1733 2024-10-14 12:37:02.267928+00 direct_edit t f 1
+1732 2024-10-14 12:36:53.043007+00 direct_edit t f 1
+1731 2024-10-14 12:36:48.538728+00 direct_edit t t 1
+1742 2024-10-14 12:48:23.395417+00 management t t \N
+1741 2024-10-14 12:44:17.439792+00 direct_edit t t 1
+1740 2024-10-14 12:44:09.447739+00 direct_edit t t 1
+1743 2024-10-14 12:48:34.637638+00 management t t \N
+1745 2024-10-14 12:54:08.270301+00 management t t \N
+1744 2024-10-14 12:52:21.005875+00 direct_edit t t 1
+1749 2024-10-14 12:56:39.387991+00 management t t \N
+1748 2024-10-14 12:56:32.352144+00 direct_edit t t 1
+1747 2024-10-14 12:55:09.746827+00 direct_edit t t 1
+1746 2024-10-14 12:54:37.171423+00 direct_edit t f 1
+1755 2024-10-14 12:59:57.859694+00 management t t \N
+1754 2024-10-14 12:58:48.262633+00 direct_edit t f 1
+1753 2024-10-14 12:58:22.049434+00 direct_edit t f 1
+1752 2024-10-14 12:57:49.279354+00 direct_edit t f 1
+1751 2024-10-14 12:57:33.507269+00 direct_edit t f 1
+1750 2024-10-14 12:57:24.493498+00 direct_edit t f 1
+1757 2024-10-24 13:16:51.718189+00 management t t \N
+1756 2024-10-18 09:49:53.311021+00 direct_edit t f 1
+1761 2024-10-24 13:20:06.907445+00 management t t \N
+1760 2024-10-24 13:19:56.019943+00 direct_edit t t 1
+1759 2024-10-24 13:18:53.332804+00 direct_edit t f 1
+1758 2024-10-24 13:17:52.697184+00 direct_edit t f 1
+1766 2024-10-24 13:24:02.57539+00 management t t \N
+1765 2024-10-24 13:23:54.202272+00 direct_edit t t 1
+1764 2024-10-24 13:23:14.444768+00 direct_edit t f 1
+1763 2024-10-24 13:22:22.251781+00 direct_edit t t 1
+1762 2024-10-24 13:21:45.137678+00 direct_edit t t 1
+1773 2024-10-24 13:29:43.594563+00 management t t \N
+1772 2024-10-24 13:29:36.025806+00 direct_edit t f 1
+1771 2024-10-24 13:29:17.595969+00 direct_edit t f 1
+1770 2024-10-24 13:28:59.98065+00 direct_edit t f 1
+1769 2024-10-24 13:28:29.852193+00 direct_edit t f 1
+1768 2024-10-24 13:28:22.598123+00 direct_edit t f 1
+1767 2024-10-24 13:28:09.564467+00 direct_edit t f 1
+1820 2024-10-25 10:03:45.949335+00 management t t \N
+1819 2024-10-25 10:03:24.25572+00 direct_edit t f 1
+1818 2024-10-25 10:03:18.725972+00 direct_edit t t 1
+1817 2024-10-25 10:03:07.249371+00 direct_edit t f 1
+1816 2024-10-25 10:02:38.999621+00 direct_edit t f 1
+1815 2024-10-25 10:02:28.138342+00 direct_edit t f 1
+1814 2024-10-25 10:02:18.922037+00 direct_edit t f 1
+1813 2024-10-25 10:02:16.260526+00 direct_edit t f 1
+1812 2024-10-25 10:02:13.400114+00 direct_edit t f 1
+1811 2024-10-25 10:02:09.706571+00 direct_edit t f 1
+1810 2024-10-25 10:01:58.851573+00 direct_edit t f 1
+1809 2024-10-25 10:01:54.961302+00 direct_edit t f 1
+1808 2024-10-25 10:01:51.068408+00 direct_edit t f 1
+1807 2024-10-25 10:01:40.216588+00 direct_edit t f 1
+1806 2024-10-25 10:01:33.052438+00 direct_edit t f 1
+1805 2024-10-25 10:01:25.674626+00 direct_edit t f 1
+1804 2024-10-25 10:01:12.970707+00 direct_edit t t 1
+1803 2024-10-25 10:01:09.082121+00 direct_edit t t 1
+1802 2024-10-25 10:00:55.156445+00 direct_edit t f 1
+1801 2024-10-25 10:00:50.650989+00 direct_edit t f 1
+1800 2024-10-25 10:00:34.671144+00 direct_edit t f 1
+1799 2024-10-25 10:00:29.962403+00 direct_edit t f 1
+1798 2024-10-25 10:00:25.456775+00 direct_edit t f 1
+1797 2024-10-25 10:00:11.325123+00 direct_edit t f 1
+1796 2024-10-25 10:00:03.757279+00 direct_edit t f 1
+1795 2024-10-25 10:00:01.296026+00 direct_edit t f 1
+1794 2024-10-25 09:59:56.994033+00 direct_edit t f 1
+1793 2024-10-25 09:59:37.327769+00 direct_edit t f 1
+1792 2024-10-25 09:59:22.991846+00 direct_edit t f 1
+1791 2024-10-25 09:58:53.711551+00 direct_edit t f 1
+1790 2024-10-25 09:58:50.45456+00 direct_edit t f 1
+1789 2024-10-25 09:58:46.136691+00 direct_edit t f 1
+1788 2024-10-25 09:58:37.323695+00 direct_edit t f 1
+1787 2024-10-25 09:58:26.681188+00 direct_edit t f 1
+1786 2024-10-25 09:58:20.533115+00 direct_edit t f 1
+1785 2024-10-25 09:57:57.180209+00 direct_edit t t 1
+1784 2024-10-25 09:57:36.728002+00 direct_edit t t 1
+1783 2024-10-25 09:56:45.337499+00 direct_edit t t 1
+1782 2024-10-25 09:55:27.487324+00 direct_edit t t 1
+1781 2024-10-25 09:54:14.962113+00 direct_edit t t 1
+1780 2024-10-25 09:53:59.333346+00 direct_edit t t 1
+1779 2024-10-25 09:52:11.513594+00 direct_edit t t 1
+1778 2024-10-25 09:50:00.644331+00 direct_edit t t 1
+1777 2024-10-25 09:49:30.695085+00 direct_edit t t 1
+1776 2024-10-25 09:49:25.774557+00 direct_edit t t 1
+1775 2024-10-25 09:49:07.764364+00 direct_edit t t 1
+1774 2024-10-25 09:48:15.789307+00 direct_edit t t 1
+1821 2024-10-25 10:05:31.268637+00 direct_edit t t 1
+1823 2024-10-27 10:10:35.458945+00 changeset t f 1
+1824 2024-10-28 10:35:30.293755+00 changeset t t 1
+1826 2024-10-28 10:55:32.591081+00 changeset t f 1
+1822 2024-10-25 10:45:52.97078+00 management t t \N
+1825 2024-10-28 10:40:03.615804+00 changeset t t 1
+1827 2024-10-28 12:43:01.236283+00 management f t \N
+\.
+
+
+--
+-- Data for Name: mapdata_obstacle; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_obstacle (id, geometry, height, space_id, import_tag, altitude, group_id) FROM stdin;
+3 {"type": "Polygon", "coordinates": [[[269.82, 138.73], [269.75, 139.48], [271.81, 139.67], [271.85, 139.25], [270.21, 139.1], [270.24, 138.76], [269.82, 138.73]]]} 1.50 61 \N 0.00 \N
+1 {"type": "Polygon", "coordinates": [[[249.64, 133.38], [248.93, 133.31], [249.62, 125.73], [250.35, 125.79], [250.32, 126.22], [250.0, 126.19], [249.38, 132.93], [249.67, 132.96], [249.64, 133.38]]]} 1.50 61 \N 0.00 \N
+4 {"type": "Polygon", "coordinates": [[[252.6, 137.91], [252.66, 137.14], [253.08, 137.18], [253.05, 137.53], [257.98, 137.97], [258.02, 137.64], [258.43, 137.68], [258.37, 138.43], [252.6, 137.91]]]} 1.60 61 \N 0.00 \N
+\.
+
+
+--
+-- Data for Name: mapdata_obstaclegroup; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_obstaclegroup (id, titles, color, in_legend) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_poi; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_poi (locationslug_ptr_id, titles, can_search, can_describe, geometry, access_restriction_id, space_id, import_tag, icon, label_overrides, label_settings_id, external_url, import_block_data, import_block_geom) FROM stdin;
+73 {"en": "Main Entrance"} t t {"type": "Point", "coordinates": [241.75, 129.06]} \N 61 \N \N {} 2 \N f f
+74 {"en": "Car Entrance"} t t {"type": "Point", "coordinates": [394.5, 125.44]} \N 60 \N \N {} 2 \N f f
+128 {"en": "Restaurant Alumix"} t f {"type": "Point", "coordinates": [199.57, 114.91]} \N 127 \N \N {} \N \N f f
+145 {"en": "Car Park Payment Machine"} t f {"type": "Point", "coordinates": [284.69, 180.06]} \N 14 \N \N {} \N \N f f
+146 {"en": "Car Park Payment Machine"} t f {"type": "Point", "coordinates": [272.67, 141.97]} \N 97 \N \N {} \N \N f f
+147 {"en": "Car Park Payment Machine"} t f {"type": "Point", "coordinates": [274.29, 153.72]} \N 35 \N \N {} \N \N f f
+149 {"en": "ATM"} t f {"type": "Point", "coordinates": [272.33, 142.92]} \N 95 \N \N {} \N \N f f
+72 {"en": "Entrance (A2)"} t t {"type": "Point", "coordinates": [428.38, 200.0]} \N 61 \N \N {} 2 \N f f
+153 {"en": "Crane Hall BOF meetings"} t t {"type": "Point", "coordinates": [222.31, 217.56]} \N 36 \N \N {} 1 https://www.sfscon.it/tracks/crane-hall-bof-meetings-2024/ f f
+106 {"en": "Access to President's Office (NOI Board)"} t t {"type": "Point", "coordinates": [273.99, 200.93]} \N 105 \N \N {} \N \N f f
+\.
+
+
+--
+-- Data for Name: mapdata_poi_groups; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_poi_groups (id, poi_id, locationgroup_id) FROM stdin;
+1 128 123
+2 145 144
+3 146 144
+4 147 144
+5 149 148
+\.
+
+
+--
+-- Data for Name: mapdata_position; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_position (id, name, secret, owner_id, coordinates_id, last_coordinates_update, timeout) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_ramp; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_ramp (id, geometry, space_id, import_tag) FROM stdin;
+4 {"type": "Polygon", "coordinates": [[[272.7, 181.71], [272.69, 185.46], [274.5, 185.46], [274.49, 181.71], [272.7, 181.71]]]} 20 \N
+3 {"type": "Polygon", "coordinates": [[[272.71, 201.56], [274.5, 201.56], [274.48, 192.1], [272.71, 192.1], [272.71, 201.56]]]} 20 \N
+2 {"type": "Polygon", "coordinates": [[[272.71, 204.02], [272.71, 211.63], [274.51, 211.63], [274.51, 204.02], [272.71, 204.02]]]} 20 \N
+1 {"type": "Polygon", "coordinates": [[[272.71, 223.13], [272.71, 213.55], [274.51, 213.55], [274.52, 223.13], [272.71, 223.13]]]} 20 \N
+7 {"type": "Polygon", "coordinates": [[[275.11, 219.93], [275.11, 205.42], [283.49, 205.42], [283.49, 219.95], [275.11, 219.93]]]} 33 \N
+8 {"type": "Polygon", "coordinates": [[[235.52, 203.75], [239.58, 203.75], [239.64, 211.51], [235.5, 211.5], [235.52, 203.75]]]} 58 \N
+\.
+
+
+--
+-- Data for Name: mapdata_rangingbeacon; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_rangingbeacon (id, import_tag, geometry, wifi_bssid, altitude, comment, space_id, bluetooth_address, ibeacon_major, ibeacon_minor, ibeacon_uuid, node_number, uwb_address) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_report; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_report (id, created, category, open, last_update, title, description, coordinates_id, origin_id, destination_id, route_options, titles, secret, assigned_to_id, author_id, location_id, import_tag) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_report_created_groups; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_report_created_groups (id, report_id, locationgroup_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_reportupdate; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_reportupdate (id, datetime, open, comment, public, assigned_to_id, author_id, report_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_source; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_source (id, bottom, "left", top, "right", name, access_restriction_id) FROM stdin;
+2 92.00 139.00 264.73 462.13 CAMPUS-piano-1.svg \N
+3 143.11 262.78 222.44 375.05 A1-piano-2-rot_FLM-P.-2.svg \N
+4 176.92 195.00 256.25 307.27 A1-piano0-rot_FLM-A1.0.svg \N
+5 158.81 324.25 238.14 436.52 A2-piano0-rot_FLM-A2.0.svg \N
+6 158.81 326.22 238.14 438.49 A2-piano1-rot_FLM-A2.1.svg \N
+7 162.95 326.22 242.28 438.49 A2-piano2-rot_FLM-A2.2.svg \N
+8 51.99 144.42 332.66 541.43 campus-piano0-rot.svg \N
+9 109.45 239.45 157.05 306.81 FLM-A4.0-rot.svg \N
+10 177.63 196.81 256.97 309.08 FLM-A1.1-rot.svg \N
+11 179.12 197.87 258.45 310.14 FLM-A1.2-rot.svg \N
+\.
+
+
+--
+-- Data for Name: mapdata_space; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_space (locationslug_ptr_id, titles, can_search, can_describe, geometry, height, outside, enter_description_i18n, base_mapdata_accessible, access_restriction_id, level_id, import_tag, icon, label_overrides, label_settings_id, external_url, import_block_data, import_block_geom) FROM stdin;
+14 {"en": "Car Park Level -1"} t t {"type": "Polygon", "coordinates": [[[367.13, 158.06], [367.13, 180.44], [350.0, 180.44], [350.0, 183.19], [299.12, 183.19], [299.12, 180.56], [283.56, 180.56], [283.56, 183.31], [274.81, 183.31], [274.81, 179.37], [272.69, 179.37], [272.69, 173.12], [268.0, 173.12], [268.0, 156.12], [269.88, 156.12], [269.88, 153.37], [334.06, 153.37], [334.06, 158.0], [367.13, 158.06]]]} \N f {} f \N 10 carpark \N {} \N \N f f
+19 {"en": "Barrier Free WC"} t t {"type": "Polygon", "coordinates": [[[277.44, 206.32], [277.44, 209.11], [275.1, 209.11], [275.1, 206.31], [277.44, 206.32]]]} \N f {} f \N 10 \N \N {} \N \N f f
+31 {"en": "Main Lobby"} t t {"type": "Polygon", "coordinates": [[[300.46, 222.51], [300.46, 229.81], [283.53, 229.81], [283.53, 234.31], [272.73, 234.31], [272.73, 224.88], [271.92, 224.88], [271.96, 223.61], [272.75, 223.59], [272.73, 222.44], [300.46, 222.51]]]} \N f {} f \N 2 \N \N {} \N \N f f
+16 {"en": "Floor -1 WC Men (A1)"} t t {"type": "Polygon", "coordinates": [[[283.48, 204.37], [283.48, 209.09], [277.63, 209.09], [277.63, 204.33], [283.48, 204.37]]]} \N f {} f \N 10 \N \N {} \N \N f f
+17 {"en": "Floor -1 WC Women (A1)"} t t {"type": "Polygon", "coordinates": [[[283.41, 204.08], [277.65, 204.08], [277.65, 199.72], [283.42, 199.72], [283.41, 204.08]]]} \N f {} f \N 10 \N \N {} \N \N f f
+33 {"en": "Entrance (A1)"} t t {"type": "Polygon", "coordinates": [[[272.65, 222.5], [283.68, 222.6], [283.68, 194.29], [272.66, 194.29], [272.65, 222.5]]]} \N t {} f \N 2 \N \N {} 2 \N f f
+27 {"en": "Seminar 1"} t t {"type": "Polygon", "coordinates": [[[302.25, 223.03], [315.52, 223.03], [315.52, 199.75], [302.16, 199.75], [302.25, 223.03]]]} \N f {} f \N 10 \N \N {} \N \N f f
+25 {"en": "Seminar 4"} t t {"type": "Polygon", "coordinates": [[[280.54, 234.09], [275.09, 234.09], [275.09, 245.24], [280.56, 245.24], [280.54, 234.09]]]} \N f {} f \N 10 \N \N {} \N \N f f
+24 {"en": "Seminar 3"} t t {"type": "Polygon", "coordinates": [[[275.82, 223.08], [283.49, 223.08], [283.49, 209.71], [275.81, 209.71], [275.82, 223.08]]]} \N f {} f \N 10 \N \N {} \N \N f f
+26 {"en": "Seminar 2"} t t {"type": "Polygon", "coordinates": [[[302.23, 230.0], [315.52, 230.0], [315.52, 244.57], [302.23, 244.57], [302.23, 230.0]]]} \N f {} f \N 10 \N \N {} \N https://maps.noi.bz.it/en/?shared=A1--1-03&lang=en f f
+22 {"en": "Foyer"} t t {"type": "Polygon", "coordinates": [[[272.79, 223.14], [272.79, 234.0], [274.49, 234.0], [274.49, 233.84], [280.82, 233.84], [280.84, 240.05], [301.62, 240.06], [301.62, 229.84], [316.04, 229.84], [316.04, 223.15], [299.94, 223.15], [299.94, 222.57], [284.05, 222.57], [284.05, 223.1], [272.79, 223.14]]]} \N f {} f \N 10 \N \N {} \N \N f f
+42 {"en": "WC for Men"} t t {"type": "Polygon", "coordinates": [[[266.26, 229.52], [268.74, 229.52], [268.72, 225.16], [266.27, 225.17], [266.26, 229.52]]]} \N f {} f \N 2 \N \N {} \N \N f f
+43 {"en": "Barrier Free WC"} t t {"type": "Polygon", "coordinates": [[[280.8, 240.29], [280.8, 243.05], [283.45, 243.05], [283.45, 240.23], [280.8, 240.29]]]} \N f {} f \N 10 \N \N {} \N \N f f
+30 {"en": "Maker Space"} t t {"type": "Polygon", "coordinates": [[[259.45, 200.52], [240.04, 200.52], [240.04, 192.41], [259.42, 192.41], [259.45, 200.52]]]} \N f {} f \N 2 \N \N {} 1 \N f f
+29 {"en": "NOISE"} t t {"type": "Polygon", "coordinates": [[[249.11, 246.06], [249.11, 234.45], [300.43, 234.45], [300.43, 246.07], [249.11, 246.06]]]} \N f {} f \N 2 \N \N {} 1 \N f f
+44 {"en": "NOI Techpark InfoDesk"} t t {"type": "Polygon", "coordinates": [[[272.65, 225.14], [269.09, 225.14], [269.09, 229.5], [272.65, 229.5], [272.65, 225.14]]]} \N f {} f \N 2 \N \N {} \N \N f f
+47 {"en": "WC"} t t {"type": "Polygon", "coordinates": [[[344.15, 207.31], [352.44, 207.31], [352.44, 201.31], [345.35, 201.31], [345.35, 197.45], [343.69, 197.45], [343.69, 200.94], [344.15, 200.94], [344.15, 207.31]]]} \N f {} f \N 2 \N \N {} \N \N f f
+51 {"en": "Open Theather"} t t {"type": "Polygon", "coordinates": [[[284.04, 222.39], [284.04, 211.96], [301.6, 211.96], [301.6, 222.42], [284.04, 222.39]]]} \N t {} f \N 10 \N \N {} \N \N f f
+127 {"en": "Alumix entrance"} f f {"type": "Polygon", "coordinates": [[[198.82, 114.05], [198.77, 115.5], [200.53, 115.55], [200.48, 114.05], [198.82, 114.05]]]} \N f {} f \N 2 \N \N {} \N \N f f
+49 {"en": "Corridor"} f t {"type": "Polygon", "coordinates": [[[338.78, 201.23], [338.78, 190.63], [343.28, 190.63], [343.34, 190.87], [348.51, 190.87], [348.51, 188.95], [350.88, 188.95], [350.88, 195.59], [343.29, 195.59], [343.29, 201.25], [338.78, 201.23]]]} \N f {} f \N 2 \N \N {} 2 \N f f
+46 {"en": "Multimedia Center"} f t {"type": "Polygon", "coordinates": [[[342.82, 207.55], [343.83, 207.55], [343.83, 207.2], [360.03, 207.2], [360.03, 197.25], [338.99, 197.25], [338.99, 197.45], [338.62, 197.45], [338.62, 202.5], [342.78, 202.5], [342.78, 203.22], [343.57, 203.22], [343.57, 205.37], [342.83, 205.37], [342.82, 207.55]]]} \N f {} f \N 38 \N \N {} \N \N f f
+40 {"en": "WC for Men"} t t {"type": "Polygon", "coordinates": [[[267.12, 206.09], [267.11, 207.16], [266.89, 207.16], [266.9, 208.67], [270.3, 208.68], [270.3, 206.08], [267.12, 206.09]]]} \N f {} f \N 2 \N \N {} \N \N f f
+54 {"en": "Barrier Free WC"} t t {"type": "Polygon", "coordinates": [[[259.85, 226.99], [262.01, 226.99], [262.01, 225.12], [259.82, 225.12], [259.85, 226.99]]]} \N f {} f \N 2 \N \N {} \N \N f f
+55 {"en": "WC for Women"} t t {"type": "Polygon", "coordinates": [[[263.44, 229.52], [265.89, 229.52], [265.89, 225.16], [263.44, 225.16], [263.44, 229.52]]]} \N f {} f \N 2 \N \N {} \N \N f f
+56 {"en": "WC for Women"} t t {"type": "Polygon", "coordinates": [[[260.14, 208.71], [260.14, 206.1], [263.73, 206.1], [263.73, 207.11], [264.21, 207.11], [264.21, 208.69], [260.14, 208.71]]]} \N f {} f \N 2 \N \N {} \N \N f f
+57 {"en": "Barrier Free WC"} t t {"type": "Polygon", "coordinates": [[[264.39, 208.67], [264.39, 207.17], [266.72, 207.17], [266.72, 208.66], [264.39, 208.67]]]} \N f {} f \N 2 \N \N {} \N \N f f
+58 {"en": "Corridor"} f t {"type": "Polygon", "coordinates": [[[235.53, 211.57], [235.53, 203.44], [215.82, 203.44], [215.82, 201.25], [235.34, 201.25], [235.34, 198.92], [239.73, 198.92], [239.73, 201.23], [269.44, 201.23], [269.44, 203.47], [266.94, 203.47], [266.94, 206.91], [263.91, 206.91], [263.91, 203.39], [239.59, 203.39], [239.59, 211.59], [235.53, 211.57]]]} \N f {} f \N 2 \N \N {} \N \N f f
+134 {"en": "A2 - Stairs A"} f f {"type": "Polygon", "coordinates": [[[421.64, 207.7], [421.64, 201.35], [426.99, 201.35], [426.99, 207.72], [421.64, 207.7]]]} \N f {} f \N 2 \N \N {} \N \N f f
+36 {"en": "Crane Hall"} t t {"type": "Polygon", "coordinates": [[[272.22, 223.22], [272.22, 211.96], [205.64, 211.96], [205.64, 223.14], [272.22, 223.22]]]} \N f {} f \N 2 \N \N {} 1 \N f f
+59 {"en": "Corridor"} t t {"type": "Polygon", "coordinates": [[[267.32, 194.29], [268.93, 194.28], [268.92, 198.23], [270.36, 198.24], [270.36, 194.29], [270.58, 194.29], [270.62, 201.23], [269.47, 201.23], [269.46, 203.47], [270.63, 203.47], [270.66, 211.77], [272.37, 211.77], [272.37, 192.83], [267.32, 192.84], [267.32, 194.29]]]} \N f {} f \N 2 \N \N {} \N \N f f
+71 {"en": "Stairs D - Level -1 to 0"} t t {"type": "Polygon", "coordinates": [[[268.93, 198.23], [268.71, 198.23], [268.7, 195.86], [267.42, 195.86], [267.44, 199.29], [270.36, 199.3], [270.36, 194.09], [268.93, 194.09], [268.93, 198.23]]]} \N f {} f \N 11 \N \N {} \N \N f f
+60 {"en": "Car access"} t t {"type": "Polygon", "coordinates": [[[353.88, 157.08], [343.89, 157.08], [343.88, 151.12], [354.13, 151.04], [364.71, 151.88], [386.49, 153.69], [389.56, 123.88], [399.94, 124.9], [396.01, 161.16], [353.88, 157.08]]]} \N t {} f \N 2 \N \N {} \N \N f f
+52 {"en": "Corridor"} t t {"type": "Polygon", "coordinates": [[[270.54, 192.77], [267.23, 192.76], [267.23, 195.92], [268.71, 195.91], [268.7, 194.21], [268.95, 194.23], [268.94, 194.87], [270.32, 194.87], [270.33, 194.29], [270.57, 194.28], [270.55, 207.92], [272.15, 207.92], [272.15, 191.91], [272.36, 191.91], [272.36, 184.39], [270.52, 184.39], [270.54, 192.77]]]} \N f {} f \N 10 \N \N {} \N \N f f
+64 {"en": "Stairs B"} t t {"type": "Polygon", "coordinates": [[[338.21, 201.08], [338.21, 207.65], [343.99, 207.64], [343.99, 201.08], [338.21, 201.08]]]} \N f {} f \N 2 \N \N {} \N \N f f
+89 {"en": "WC for Men"} t t {"type": "Polygon", "coordinates": [[[277.11, 120.32], [277.53, 115.88], [280.1, 116.13], [279.71, 120.55], [277.11, 120.32]]]} \N f {} f \N 2 \N \N {} \N \N f f
+98 {"en": "Mezzanine"} f f {"type": "Polygon", "coordinates": [[[272.11, 138.78], [274.29, 138.99], [274.02, 141.39], [276.48, 141.61], [276.85, 137.9], [278.21, 137.99], [278.53, 134.67], [272.53, 134.17], [272.11, 138.78]]]} \N f {} f \N 10 \N \N {} \N \N f f
+101 {"en": "Stairs B - Level -1 to 0"} t t {"type": "Polygon", "coordinates": [[[266.97, 233.92], [272.74, 233.92], [272.73, 232.33], [268.76, 232.33], [268.77, 231.89], [272.73, 231.89], [272.73, 230.31], [266.97, 230.31], [266.97, 233.92]]]} \N f {} f \N 11 \N \N {} \N \N f f
+103 {"en": "Stairs B - Level 0 to 1"} f f {"type": "Polygon", "coordinates": [[[266.97, 233.92], [272.74, 233.92], [272.73, 232.33], [268.76, 232.33], [268.77, 231.89], [272.73, 231.89], [272.73, 230.31], [266.97, 230.31], [266.97, 233.92]]]} \N f {} f \N 85 \N \N {} \N \N f f
+78 {"en": "Stairs D - Level -2 to -1"} t t {"type": "Polygon", "coordinates": [[[268.93, 198.23], [268.7, 198.23], [268.7, 196.11], [267.42, 196.11], [267.44, 199.29], [270.36, 199.3], [270.36, 195.22], [268.93, 195.22], [268.93, 198.23]]]} \N f {} f \N 77 \N \N {} \N \N f f
+20 {"en": "Corridor Car Park - Foyer"} f t {"type": "Polygon", "coordinates": [[[274.5, 203.23], [275.11, 203.2], [275.12, 206.09], [277.41, 206.11], [277.41, 199.69], [275.08, 199.68], [275.07, 201.79], [274.49, 201.83], [274.46, 179.37], [272.72, 179.37], [272.72, 223.14], [274.51, 223.14], [274.5, 203.23]]]} \N f {} f \N 10 \N \N {} \N \N f f
+75 {"en": "Corridor"} t t {"type": "Polygon", "coordinates": [[[274.54, 179.59], [274.54, 189.16], [272.22, 189.16], [272.21, 205.58], [270.75, 205.58], [270.65, 183.96], [272.76, 183.96], [272.76, 179.58], [274.54, 179.59]]]} \N f {} f \N 34 \N \N {} \N \N f f
+79 {"en": "Stairs D - Level -2"} t t {"type": "Polygon", "coordinates": [[[267.38, 197.91], [268.69, 197.91], [268.71, 194.37], [270.37, 194.36], [270.37, 192.56], [267.36, 192.56], [267.38, 197.91]]]} \N f {} f \N 34 \N \N {} \N \N f f
+104 {"en": "Corridor"} f f {"type": "Polygon", "coordinates": [[[272.65, 233.99], [283.6, 233.99], [283.6, 230.01], [272.65, 230.01], [272.65, 233.99]]]} \N f {} f \N 37 \N \N {} \N \N f f
+92 {"en": "Corridor"} f f {"type": "Polygon", "coordinates": [[[272.34, 137.49], [273.65, 122.59], [275.72, 122.77], [275.97, 120.33], [278.29, 120.53], [278.08, 123.02], [280.09, 123.21], [278.73, 138.08], [272.34, 137.49]]]} \N f {} f \N 2 \N \N {} \N \N f f
+105 {"en": "Corridor"} f f {"type": "Polygon", "coordinates": [[[272.62, 233.99], [283.48, 233.99], [283.48, 229.98], [274.53, 229.98], [274.53, 222.42], [274.66, 222.42], [274.66, 212.02], [274.47, 212.02], [274.47, 199.25], [272.71, 199.25], [272.62, 233.99]]]} \N f {} f \N 38 \N \N {} \N \N f f
+107 {"en": "Stairs B"} f f {"type": "Polygon", "coordinates": [[[266.97, 233.92], [272.74, 233.92], [272.73, 232.33], [268.76, 232.33], [268.77, 231.89], [272.73, 231.89], [272.73, 230.31], [266.97, 230.31], [266.97, 233.92]]]} \N f {} f \N 82 \N \N {} \N \N f f
+102 {} f f {"type": "Polygon", "coordinates": [[[266.97, 233.94], [272.75, 233.94], [272.75, 230.34], [266.97, 230.34], [266.97, 233.94]]]} \N f {} f \N 38 \N \N {} \N \N f f
+35 {"en": "Car Park Level -2"} t t {"type": "Polygon", "coordinates": [[[367.13, 157.98], [367.13, 180.44], [350.0, 180.44], [350.0, 183.19], [299.12, 183.19], [299.12, 180.56], [283.56, 180.56], [283.56, 183.31], [274.81, 183.31], [274.81, 179.37], [272.69, 179.37], [272.69, 173.12], [268.0, 173.12], [268.0, 156.12], [269.88, 156.12], [269.88, 153.37], [334.06, 153.37], [334.06, 157.98], [367.13, 157.98]]]} \N f {} f \N 34 carpark \N {} \N \N f f
+32 {"en": "Corridor Main Lobby - Crane Hall"} f t {"type": "Polygon", "coordinates": [[[271.86, 224.91], [259.65, 224.91], [259.65, 223.58], [271.86, 223.58], [271.86, 224.91]]]} \N f {} f \N 2 \N \N {} \N \N f f
+93 {"en": "Noisteria Bar"} t t {"type": "Polygon", "coordinates": [[[272.35, 137.07], [251.29, 135.14], [252.34, 124.92], [252.79, 124.22], [253.29, 123.74], [253.85, 123.36], [254.68, 122.99], [264.98, 123.97], [265.19, 121.84], [273.66, 122.61], [272.35, 137.07]]]} \N f {} f \N 2 \N \N {} \N \N f f
+80 {"en": "Car Ramp"} t t {"type": "Polygon", "coordinates": [[[335.8, 155.2], [335.2, 156.29], [334.55, 157.98], [341.05, 157.98], [341.05, 157.78], [342.07, 157.07], [343.12, 156.77], [350.82, 156.73], [353.91, 157.02], [354.92, 157.34], [355.44, 157.62], [355.84, 157.94], [355.84, 158.02], [362.3, 158.03], [361.84, 156.82], [361.26, 155.68], [360.56, 154.73], [359.63, 153.73], [358.53, 152.9], [357.19, 152.16], [355.89, 151.67], [354.83, 151.42], [351.13, 151.08], [343.14, 151.06], [341.79, 151.23], [340.49, 151.57], [339.46, 152.06], [338.54, 152.56], [336.83, 153.94], [335.8, 155.2]]]} \N f {} f \N 77 \N \N {} \N \N f f
+81 {"en": "Car Ramp"} t t {"type": "Polygon", "coordinates": [[[335.8, 155.2], [335.2, 156.29], [334.55, 157.98], [341.05, 157.98], [341.05, 157.78], [342.07, 157.07], [343.12, 156.77], [350.82, 156.73], [353.91, 157.02], [364.32, 158.05], [364.86, 152.13], [354.29, 151.1], [351.13, 151.08], [343.15, 151.04], [341.79, 151.23], [340.49, 151.57], [339.46, 152.06], [338.54, 152.56], [336.83, 153.94], [335.8, 155.2]]]} \N f {} f \N 11 \N \N {} \N \N f f
+86 {"en": "Stairs B"} t t {"type": "Polygon", "coordinates": [[[338.52, 203.55], [339.8, 203.55], [339.8, 206.23], [342.86, 206.24], [342.86, 207.6], [338.52, 207.6], [338.52, 203.55]]]} \N f {} f \N 85 \N \N {} \N \N f f
+84 {"en": "A2 - Stairs B"} f f {"type": "Polygon", "coordinates": [[[338.21, 201.08], [338.21, 207.65], [343.99, 207.64], [343.99, 201.08], [338.21, 201.08]]]} \N f {} f \N 37 \N \N {} \N \N f f
+87 {"en": "Stairs B"} f f {"type": "Polygon", "coordinates": [[[338.62, 202.49], [338.62, 207.6], [342.8, 207.6], [342.8, 205.38], [343.57, 205.38], [343.57, 203.28], [342.82, 203.28], [342.82, 202.52], [338.62, 202.49]]]} \N f {} f \N 38 \N \N {} \N \N f f
+91 {"en": "Barrier Free WC"} t t {"type": "Polygon", "coordinates": [[[273.72, 122.27], [273.93, 120.14], [275.85, 120.31], [275.64, 122.43], [273.72, 122.27]]]} \N f {} f \N 2 \N \N {} \N \N f f
+90 {"en": "WC for Women"} t t {"type": "Polygon", "coordinates": [[[273.92, 120.01], [274.35, 115.6], [277.36, 115.87], [276.97, 120.3], [273.92, 120.01]]]} \N f {} f \N 2 \N \N {} \N \N f f
+109 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[283.95, 231.93], [283.95, 230.23], [285.79, 230.23], [285.79, 231.93], [283.95, 231.93]]]} \N f {} f \N 11 \N elevator {} \N \N f f
+97 {"en": "Corridor Car Park (A4)"} f f {"type": "Polygon", "coordinates": [[[268.01, 155.99], [267.97, 149.0], [271.18, 148.99], [271.9, 141.19], [276.49, 141.59], [276.35, 143.25], [273.93, 143.04], [273.21, 150.85], [270.11, 150.87], [270.12, 153.04], [269.81, 153.04], [269.81, 155.98], [268.01, 155.99]]]} \N f {} f \N 10 \N \N {} \N \N f f
+99 {"en": "Stairs"} t t {"type": "Polygon", "coordinates": [[[277.05, 137.98], [278.0, 138.08], [277.59, 142.39], [276.64, 142.29], [277.05, 137.98]]]} \N f {} f \N 11 \N \N {} \N \N f f
+114 {"en": "WC for Women"} t t {"type": "Polygon", "coordinates": [[[260.14, 208.71], [260.14, 206.1], [263.73, 206.1], [263.73, 207.11], [264.21, 207.11], [264.21, 208.69], [260.14, 208.71]]]} \N f {} f \N 38 \N \N {} \N \N f f
+115 {"en": "Barrier Free WC"} t t {"type": "Polygon", "coordinates": [[[264.39, 208.67], [264.39, 207.17], [266.72, 207.17], [266.72, 208.66], [264.39, 208.67]]]} \N f {} f \N 38 \N \N {} \N \N f f
+116 {"en": "WC for Men"} t t {"type": "Polygon", "coordinates": [[[267.12, 206.09], [267.11, 207.16], [266.89, 207.16], [266.9, 208.67], [270.3, 208.68], [270.3, 206.08], [267.12, 206.09]]]} \N f {} f \N 38 \N \N {} \N \N f f
+118 {"en": "Open Theather Steps"} t t {"type": "Polygon", "coordinates": [[[284.05, 212.09], [284.05, 194.38], [301.53, 194.38], [301.53, 212.09], [284.05, 212.09]]]} \N f {} f \N 11 \N \N {} \N \N f f
+117 {"en": "Corridor"} f f {"type": "Polygon", "coordinates": [[[263.85, 207.03], [263.82, 201.33], [270.54, 201.3], [270.54, 199.69], [272.73, 199.69], [272.73, 203.64], [272.43, 203.64], [272.43, 205.89], [270.62, 205.89], [270.62, 203.47], [266.91, 203.47], [266.91, 207.0], [263.85, 207.03]]]} \N f {} f \N 38 \N \N {} \N \N f f
+94 {"en": "Noisteria Restaurant"} t t {"type": "Polygon", "coordinates": [[[277.93, 143.73], [278.45, 138.26], [278.8, 138.32], [280.22, 123.24], [300.23, 125.07], [298.3, 145.79], [277.93, 143.73]]]} \N f {} f \N 2 \N \N {} \N \N f f
+95 {"en": "Entrance"} f f {"type": "Polygon", "coordinates": [[[277.46, 143.69], [271.82, 143.16], [271.97, 141.6], [274.01, 141.78], [274.22, 139.46], [272.17, 139.25], [272.35, 137.59], [274.34, 137.77], [276.8, 138.01], [276.39, 142.09], [276.65, 142.12], [277.04, 137.98], [278.01, 138.07], [277.46, 143.69]]]} \N f {} f \N 2 \N \N {} \N \N f f
+135 {"en": "A2 - Corridor West"} f f {"type": "Polygon", "coordinates": [[[414.02, 190.85], [414.03, 189.37], [411.87, 189.36], [411.81, 195.58], [421.62, 195.58], [421.63, 200.44], [421.91, 200.44], [421.91, 201.15], [426.57, 201.15], [426.56, 190.86], [414.02, 190.85]]]} \N f {} f \N 2 \N \N {} \N \N f f
+48 {"en": "WC"} t t {"type": "Polygon", "coordinates": [[[419.81, 201.18], [412.0, 201.22], [412.0, 207.34], [420.99, 207.34], [420.99, 201.31], [420.77, 201.31], [420.77, 200.51], [421.34, 200.51], [421.34, 197.36], [419.78, 197.36], [419.81, 201.18]]]} \N f {} f \N 2 \N \N {} \N \N f f
+83 {"en": "A2 - Stairs B Floor 1 to 2"} f f {"type": "Polygon", "coordinates": [[[338.52, 201.23], [342.83, 201.23], [342.83, 202.48], [339.8, 202.47], [339.8, 206.23], [342.88, 206.24], [342.88, 207.6], [338.52, 207.6], [338.52, 201.23]]]} \N f {} f \N 82 \N \N {} \N \N f f
+139 {"en": "A2 - Stairs A"} f f {"type": "Polygon", "coordinates": [[[422.85, 207.52], [422.82, 205.37], [422.08, 205.35], [422.1, 203.22], [422.8, 203.16], [422.86, 202.42], [427.08, 202.42], [427.08, 207.54], [422.85, 207.52]]]} \N f {} f \N 38 \N \N {} \N \N f f
+39 {"en": "Auditorium"} t t {"type": "Polygon", "coordinates": [[[403.54, 197.3], [403.68, 207.16], [422.38, 207.2], [422.38, 207.52], [422.85, 207.52], [422.82, 205.38], [422.08, 205.35], [422.1, 203.22], [422.8, 203.16], [422.86, 202.42], [427.08, 202.42], [427.08, 197.3], [403.54, 197.3]]]} \N f {} f \N 38 \N \N {} 1 \N f f
+136 {"en": "A2 - Stairs A Floor 0 to 1"} f f {"type": "Polygon", "coordinates": [[[425.75, 203.58], [425.75, 206.55], [423.63, 206.54], [423.63, 207.68], [426.91, 207.68], [426.91, 203.58], [425.75, 203.58]]]} \N f {} f \N 85 \N \N {} \N \N f f
+137 {"en": "A2 - Stairs A"} f f {"type": "Polygon", "coordinates": [[[421.64, 207.7], [421.64, 201.35], [426.99, 201.35], [426.99, 207.72], [421.64, 207.7]]]} \N f {} f \N 37 \N \N {} \N \N f f
+138 {"en": "A2 - Stairs A Floor 1 to 2"} t t {"type": "Polygon", "coordinates": [[[426.91, 207.68], [422.6, 207.68], [422.6, 206.43], [425.63, 206.44], [425.63, 202.68], [422.57, 202.67], [422.57, 201.31], [426.91, 201.31], [426.91, 207.68]]]} \N f {} f \N 82 \N \N {} \N \N f f
+5 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[283.95, 231.93], [283.95, 230.23], [285.79, 230.23], [285.79, 231.93], [283.95, 231.93]]]} \N f {} f \N 85 \N elevator {} \N \N f f
+4 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[285.79, 234.0], [285.79, 232.3], [283.95, 232.3], [283.95, 234.0], [285.79, 234.0]]]} \N f {} f \N 85 \N elevator {} \N \N f f
+41 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[267.26, 205.83], [267.26, 203.71], [270.4, 203.71], [270.4, 205.8], [267.26, 205.83]]]} \N f {} f \N 2 \N elevator {} \N \N f f
+50 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[346.42, 190.69], [346.42, 188.99], [348.27, 188.99], [348.27, 190.69], [346.42, 190.69]]]} \N f {} f \N 85 \N elevator {} \N \N f f
+100 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[272.01, 140.98], [272.17, 139.27], [273.94, 139.44], [273.77, 141.14], [272.01, 140.98]]]} \N f {} f \N 11 \N elevator {} \N \N f f
+96 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[272.01, 141.37], [272.17, 139.5], [273.93, 139.67], [273.77, 141.54], [272.01, 141.37]]]} \N f {} f \N 2 \N elevator {} \N \N f f
+110 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[285.79, 234.0], [285.79, 232.3], [283.95, 232.3], [283.95, 234.0], [285.79, 234.0]]]} \N f {} f \N 82 \N elevator {} \N \N f f
+108 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[285.79, 234.0], [285.79, 232.3], [283.95, 232.3], [283.95, 234.0], [285.79, 234.0]]]} \N f {} f \N 11 \N elevator {} \N \N f f
+76 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[267.36, 205.58], [270.36, 205.58], [270.36, 203.59], [267.36, 203.59], [267.36, 205.58]]]} \N f {} f \N 77 \N elevator {} \N \N f f
+88 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[346.42, 190.69], [346.42, 188.99], [348.27, 188.99], [348.27, 190.69], [346.42, 190.69]]]} \N f {} f \N 38 \N elevator {} \N \N f f
+111 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[283.95, 231.93], [283.95, 230.23], [285.79, 230.23], [285.79, 231.93], [283.95, 231.93]]]} \N f {} f \N 82 \N elevator {} \N \N f f
+113 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[283.95, 231.93], [283.95, 230.23], [285.79, 230.23], [285.79, 231.93], [283.95, 231.93]]]} \N f {} f \N 38 \N elevator {} \N \N f f
+112 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[285.79, 234.0], [285.79, 232.3], [283.95, 232.3], [283.95, 234.0], [285.79, 234.0]]]} \N f {} f \N 38 \N elevator {} \N \N f f
+142 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[267.36, 205.58], [270.36, 205.58], [270.36, 203.59], [267.36, 203.59], [267.36, 205.58]]]} \N f {} f \N 11 \N elevator {} \N \N f f
+61 {"en": "Piazza"} t t {"type": "Polygon", "coordinates": [[[271.2, 143.67], [271.9, 138.0], [250.26, 135.96], [250.89, 129.75], [231.46, 127.99], [231.31, 139.99], [229.09, 144.68], [225.1, 149.11], [218.76, 151.9], [210.52, 151.46], [210.71, 194.43], [302.38, 194.13], [302.41, 200.83], [338.25, 200.75], [338.25, 185.5], [352.38, 185.5], [352.38, 180.37], [422.1, 180.52], [422.1, 184.79], [427.34, 184.8], [427.5, 201.0], [440.17, 201.0], [440.19, 164.3], [353.88, 157.25], [343.62, 157.25], [343.62, 150.0], [298.72, 146.28], [271.2, 143.67]]]} \N t {} f \N 2 \N \N {} \N \N f f
+150 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[411.86, 189.21], [411.86, 186.02], [414.01, 186.02], [414.01, 189.21], [411.86, 189.21]]]} \N f {} f \N 2 \N \N {} \N \N f f
+151 {"en": "Elevator"} t f {"type": "Polygon", "coordinates": [[[411.86, 189.21], [411.86, 186.02], [414.01, 186.02], [414.01, 189.21], [411.86, 189.21]]]} \N f {} f \N 38 \N \N {} \N \N f f
+45 {"en": "Corridor"} t t {"type": "Polygon", "coordinates": [[[422.17, 197.1], [426.54, 197.11], [426.53, 195.42], [427.24, 195.42], [427.24, 190.83], [414.01, 190.8], [414.01, 189.46], [411.87, 189.46], [411.87, 190.78], [350.56, 190.78], [350.58, 189.04], [348.54, 189.04], [348.54, 190.64], [349.83, 190.64], [349.83, 190.78], [339.26, 190.78], [339.29, 197.11], [343.46, 197.11], [343.48, 195.47], [422.14, 195.49], [422.17, 197.1]]]} \N f {} f \N 38 \N \N {} \N \N f f
+\.
+
+
+--
+-- Data for Name: mapdata_space_groups; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_space_groups (id, space_id, locationgroup_id) FROM stdin;
+1 4 3
+2 5 3
+3 14 13
+4 16 9
+5 16 7
+6 17 8
+7 17 9
+8 19 9
+9 19 18
+10 22 21
+11 24 23
+12 25 23
+13 26 23
+15 29 28
+16 30 28
+17 35 13
+18 39 23
+19 40 9
+20 40 7
+21 41 3
+22 42 9
+23 42 7
+24 43 9
+25 43 18
+27 27 23
+28 47 8
+29 47 9
+30 47 18
+31 47 7
+32 48 8
+33 48 9
+34 48 18
+35 48 7
+36 50 3
+38 54 9
+39 54 18
+40 55 8
+41 55 9
+42 56 8
+43 56 9
+44 57 9
+45 57 18
+14 89 7
+26 90 9
+37 89 9
+46 91 9
+47 91 18
+48 90 8
+49 100 3
+50 109 3
+51 108 3
+52 110 3
+53 111 3
+54 112 3
+55 113 3
+56 114 8
+57 114 9
+58 115 9
+59 115 18
+60 116 9
+61 116 7
+62 94 123
+63 93 123
+64 36 21
+65 27 21
+66 26 21
+67 25 21
+68 24 21
+69 39 21
+70 142 3
+71 76 3
+73 150 3
+74 151 3
+75 88 3
+\.
+
+
+--
+-- Data for Name: mapdata_stair; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_stair (id, geometry, space_id, import_tag) FROM stdin;
+108 {"type": "LineString", "coordinates": [[267.2, 198.2], [268.73, 198.2]]} 71 \N
+109 {"type": "LineString", "coordinates": [[267.2, 197.9], [268.73, 197.9]]} 71 \N
+12 {"type": "LineString", "coordinates": [[267.4, 197], [268.73, 197]]} 78 \N
+13 {"type": "LineString", "coordinates": [[267.4, 197.3], [268.73, 197.3]]} 78 \N
+110 {"type": "LineString", "coordinates": [[267.2, 197.6], [268.73, 197.6]]} 71 \N
+14 {"type": "LineString", "coordinates": [[267.4, 197.6], [268.73, 197.6]]} 78 \N
+111 {"type": "LineString", "coordinates": [[267.2, 197.3], [268.73, 197.3]]} 71 \N
+112 {"type": "LineString", "coordinates": [[267.2, 197], [268.73, 197]]} 71 \N
+113 {"type": "LineString", "coordinates": [[267.2, 196.7], [268.73, 196.7]]} 71 \N
+114 {"type": "LineString", "coordinates": [[267.2, 196.4], [268.73, 196.4]]} 71 \N
+15 {"type": "LineString", "coordinates": [[267.4, 197.9], [268.73, 197.9]]} 78 \N
+115 {"type": "LineString", "coordinates": [[267.2, 196.1], [268.73, 196.1]]} 71 \N
+121 {"type": "LineString", "coordinates": [[268.93, 198.2], [270.38, 198.2]]} 78 \N
+122 {"type": "LineString", "coordinates": [[268.93, 197.9], [270.38, 197.9]]} 78 \N
+123 {"type": "LineString", "coordinates": [[268.93, 197.6], [270.38, 197.6]]} 78 \N
+124 {"type": "LineString", "coordinates": [[268.93, 197.3], [270.38, 197.3]]} 78 \N
+125 {"type": "LineString", "coordinates": [[268.93, 197], [270.38, 197]]} 78 \N
+10 {"type": "LineString", "coordinates": [[267.4, 196.4], [268.73, 196.4]]} 78 \N
+11 {"type": "LineString", "coordinates": [[267.4, 196.7], [268.73, 196.7]]} 78 \N
+126 {"type": "LineString", "coordinates": [[268.93, 196.7], [270.38, 196.7]]} 78 \N
+127 {"type": "LineString", "coordinates": [[268.93, 196.4], [270.38, 196.4]]} 78 \N
+128 {"type": "LineString", "coordinates": [[268.93, 196.1], [270.38, 196.1]]} 78 \N
+129 {"type": "LineString", "coordinates": [[268.93, 195.8], [270.38, 195.8]]} 78 \N
+130 {"type": "LineString", "coordinates": [[268.93, 195.5], [270.38, 195.5]]} 78 \N
+215 {"type": "LineString", "coordinates": [[276.88, 139.57], [277.86, 139.66]]} 99 \N
+167 {"type": "LineString", "coordinates": [[342.12, 207.62], [342.12, 206.19]]} 83 \N
+168 {"type": "LineString", "coordinates": [[342.43, 207.62], [342.43, 206.19]]} 83 \N
+169 {"type": "LineString", "coordinates": [[342.75, 207.62], [342.75, 206.19]]} 83 \N
+199 {"type": "LineString", "coordinates": [[274.02, 141.24], [276.51, 141.47]]} 98 \N
+201 {"type": "LineString", "coordinates": [[274.08, 140.68], [276.57, 140.91]]} 98 \N
+203 {"type": "LineString", "coordinates": [[274.14, 140.12], [276.62, 140.35]]} 98 \N
+205 {"type": "LineString", "coordinates": [[274.19, 139.55], [276.68, 139.78]]} 98 \N
+207 {"type": "LineString", "coordinates": [[274.24, 138.99], [276.74, 139.22]]} 98 \N
+209 {"type": "LineString", "coordinates": [[276.68, 141.73], [277.67, 141.82]]} 99 \N
+211 {"type": "LineString", "coordinates": [[276.74, 141.18], [277.71, 141.28]]} 99 \N
+213 {"type": "LineString", "coordinates": [[276.78, 140.65], [277.76, 140.74]]} 99 \N
+217 {"type": "LineString", "coordinates": [[276.93, 139.03], [277.92, 139.12]]} 99 \N
+219 {"type": "LineString", "coordinates": [[276.99, 138.49], [277.96, 138.59]]} 99 \N
+226 {"type": "LineString", "coordinates": [[258.39, 137.74], [269.85, 138.8]]} 61 \N
+195 {"type": "LineString", "coordinates": [[274.09, 140.47], [276.56, 140.7]]} 95 \N
+2 {"type": "LineString", "coordinates": [[272.64, 207.92], [274.61, 207.93]]} 33 \N
+1 {"type": "LineString", "coordinates": [[274.58, 211.98], [272.63, 211.99]]} 33 \N
+197 {"type": "LineString", "coordinates": [[274.04, 141.01], [276.51, 141.24]]} 95 \N
+200 {"type": "LineString", "coordinates": [[274.05, 140.96], [276.54, 141.19]]} 98 \N
+174 {"type": "LineString", "coordinates": [[338.5, 203.83], [339.83, 203.83]]} 86 \N
+175 {"type": "LineString", "coordinates": [[338.5, 204.12], [339.83, 204.12]]} 86 \N
+176 {"type": "LineString", "coordinates": [[338.5, 204.41], [339.83, 204.41]]} 86 \N
+177 {"type": "LineString", "coordinates": [[338.5, 204.69], [339.83, 204.69]]} 86 \N
+178 {"type": "LineString", "coordinates": [[338.5, 204.98], [339.83, 204.98]]} 86 \N
+179 {"type": "LineString", "coordinates": [[338.5, 205.27], [339.83, 205.27]]} 86 \N
+180 {"type": "LineString", "coordinates": [[338.5, 205.56], [339.83, 205.56]]} 86 \N
+181 {"type": "LineString", "coordinates": [[338.5, 205.84], [339.83, 205.84]]} 86 \N
+182 {"type": "LineString", "coordinates": [[338.5, 206.13], [339.83, 206.13]]} 86 \N
+183 {"type": "LineString", "coordinates": [[339.9, 207.62], [339.9, 206.19]]} 86 \N
+184 {"type": "LineString", "coordinates": [[340.22, 207.62], [340.22, 206.19]]} 86 \N
+185 {"type": "LineString", "coordinates": [[340.53, 207.62], [340.53, 206.19]]} 86 \N
+186 {"type": "LineString", "coordinates": [[340.85, 207.62], [340.85, 206.19]]} 86 \N
+187 {"type": "LineString", "coordinates": [[341.17, 207.62], [341.17, 206.19]]} 86 \N
+188 {"type": "LineString", "coordinates": [[341.48, 207.62], [341.48, 206.19]]} 86 \N
+189 {"type": "LineString", "coordinates": [[341.8, 207.62], [341.8, 206.19]]} 86 \N
+190 {"type": "LineString", "coordinates": [[342.12, 207.62], [342.12, 206.19]]} 86 \N
+191 {"type": "LineString", "coordinates": [[342.43, 207.62], [342.43, 206.19]]} 86 \N
+192 {"type": "LineString", "coordinates": [[342.75, 207.62], [342.75, 206.19]]} 86 \N
+202 {"type": "LineString", "coordinates": [[274.1, 140.4], [276.59, 140.63]]} 98 \N
+204 {"type": "LineString", "coordinates": [[274.16, 139.83], [276.65, 140.06]]} 98 \N
+206 {"type": "LineString", "coordinates": [[274.23, 139.27], [276.71, 139.5]]} 98 \N
+208 {"type": "LineString", "coordinates": [[276.66, 142.0], [277.64, 142.09]]} 99 \N
+210 {"type": "LineString", "coordinates": [[276.71, 141.46], [277.69, 141.55]]} 99 \N
+212 {"type": "LineString", "coordinates": [[276.76, 140.92], [277.75, 141.02]]} 99 \N
+214 {"type": "LineString", "coordinates": [[276.85, 139.85], [277.86, 139.94]]} 99 \N
+216 {"type": "LineString", "coordinates": [[276.91, 139.3], [277.89, 139.39]]} 99 \N
+218 {"type": "LineString", "coordinates": [[276.96, 138.77], [277.94, 138.86]]} 99 \N
+225 {"type": "LineString", "coordinates": [[249.58, 133.34], [249.25, 136.9], [252.69, 137.21]]} 61 \N
+227 {"type": "LineString", "coordinates": [[258.38, 138.01], [269.85, 139.08]]} 61 \N
+228 {"type": "LineString", "coordinates": [[258.34, 138.29], [269.88, 139.34]]} 61 \N
+229 {"type": "LineString", "coordinates": [[258.05, 138.37], [258.04, 138.53], [269.97, 139.65], [269.99, 139.43]]} 61 \N
+230 {"type": "LineString", "coordinates": [[270.27, 139.44], [270.22, 139.92], [257.73, 138.78], [257.77, 138.34]]} 61 \N
+231 {"type": "LineString", "coordinates": [[257.51, 138.32], [257.45, 139.03], [270.48, 140.23], [270.54, 139.49]]} 61 \N
+193 {"type": "LineString", "coordinates": [[274.09, 139.92], [276.64, 140.15]]} 95 \N
+194 {"type": "LineString", "coordinates": [[274.11, 140.19], [276.6, 140.42]]} 95 \N
+196 {"type": "LineString", "coordinates": [[274.07, 140.74], [276.54, 140.97]]} 95 \N
+198 {"type": "LineString", "coordinates": [[274.02, 141.28], [276.46, 141.51]]} 95 \N
+94 {"type": "LineString", "coordinates": [[268.93, 198.2], [270.38, 198.2]]} 71 \N
+95 {"type": "LineString", "coordinates": [[268.93, 197.9], [270.38, 197.9]]} 71 \N
+96 {"type": "LineString", "coordinates": [[268.93, 197.6], [270.38, 197.6]]} 71 \N
+97 {"type": "LineString", "coordinates": [[268.93, 197.3], [270.38, 197.3]]} 71 \N
+98 {"type": "LineString", "coordinates": [[268.93, 197], [270.38, 197]]} 71 \N
+99 {"type": "LineString", "coordinates": [[268.93, 196.7], [270.38, 196.7]]} 71 \N
+100 {"type": "LineString", "coordinates": [[268.93, 196.4], [270.38, 196.4]]} 71 \N
+101 {"type": "LineString", "coordinates": [[268.93, 196.1], [270.38, 196.1]]} 71 \N
+102 {"type": "LineString", "coordinates": [[268.93, 195.8], [270.38, 195.8]]} 71 \N
+103 {"type": "LineString", "coordinates": [[268.93, 195.5], [270.38, 195.5]]} 71 \N
+104 {"type": "LineString", "coordinates": [[268.93, 195.2], [270.38, 195.2]]} 71 \N
+105 {"type": "LineString", "coordinates": [[268.93, 194.9], [270.38, 194.9]]} 71 \N
+106 {"type": "LineString", "coordinates": [[268.93, 194.6], [270.38, 194.6]]} 71 \N
+107 {"type": "LineString", "coordinates": [[268.93, 194.3], [270.38, 194.3]]} 71 \N
+138 {"type": "LineString", "coordinates": [[342.64, 202.49], [342.64, 201.22]]} 83 \N
+139 {"type": "LineString", "coordinates": [[342.35, 202.49], [342.35, 201.22]]} 83 \N
+140 {"type": "LineString", "coordinates": [[342.06, 202.49], [342.06, 201.22]]} 83 \N
+141 {"type": "LineString", "coordinates": [[341.77, 202.49], [341.77, 201.22]]} 83 \N
+142 {"type": "LineString", "coordinates": [[341.48, 202.49], [341.48, 201.22]]} 83 \N
+143 {"type": "LineString", "coordinates": [[341.18, 202.49], [341.18, 201.22]]} 83 \N
+144 {"type": "LineString", "coordinates": [[340.89, 202.49], [340.89, 201.22]]} 83 \N
+145 {"type": "LineString", "coordinates": [[340.6, 202.49], [340.6, 201.22]]} 83 \N
+146 {"type": "LineString", "coordinates": [[340.31, 202.49], [340.31, 201.22]]} 83 \N
+147 {"type": "LineString", "coordinates": [[338.5, 202.68], [339.83, 202.68]]} 83 \N
+148 {"type": "LineString", "coordinates": [[338.5, 202.97], [339.83, 202.97]]} 83 \N
+149 {"type": "LineString", "coordinates": [[338.5, 203.26], [339.83, 203.26]]} 83 \N
+150 {"type": "LineString", "coordinates": [[338.5, 203.54], [339.83, 203.54]]} 83 \N
+151 {"type": "LineString", "coordinates": [[338.5, 203.83], [339.83, 203.83]]} 83 \N
+152 {"type": "LineString", "coordinates": [[338.5, 204.12], [339.83, 204.12]]} 83 \N
+153 {"type": "LineString", "coordinates": [[338.5, 204.41], [339.83, 204.41]]} 83 \N
+154 {"type": "LineString", "coordinates": [[338.5, 204.69], [339.83, 204.69]]} 83 \N
+155 {"type": "LineString", "coordinates": [[338.5, 204.98], [339.83, 204.98]]} 83 \N
+156 {"type": "LineString", "coordinates": [[338.5, 205.27], [339.83, 205.27]]} 83 \N
+157 {"type": "LineString", "coordinates": [[338.5, 205.56], [339.83, 205.56]]} 83 \N
+158 {"type": "LineString", "coordinates": [[338.5, 205.84], [339.83, 205.84]]} 83 \N
+159 {"type": "LineString", "coordinates": [[338.5, 206.13], [339.83, 206.13]]} 83 \N
+160 {"type": "LineString", "coordinates": [[339.9, 207.62], [339.9, 206.19]]} 83 \N
+161 {"type": "LineString", "coordinates": [[340.22, 207.62], [340.22, 206.19]]} 83 \N
+162 {"type": "LineString", "coordinates": [[340.53, 207.62], [340.53, 206.19]]} 83 \N
+163 {"type": "LineString", "coordinates": [[340.85, 207.62], [340.85, 206.19]]} 83 \N
+164 {"type": "LineString", "coordinates": [[341.17, 207.62], [341.17, 206.19]]} 83 \N
+165 {"type": "LineString", "coordinates": [[341.48, 207.62], [341.48, 206.19]]} 83 \N
+166 {"type": "LineString", "coordinates": [[341.8, 207.62], [341.8, 206.19]]} 83 \N
+232 {"type": "LineString", "coordinates": [[272.63, 211.71], [274.58, 211.71]]} 33 \N
+233 {"type": "LineString", "coordinates": [[272.64, 211.43], [274.56, 211.43]]} 33 \N
+234 {"type": "LineString", "coordinates": [[272.64, 207.65], [274.59, 207.65]]} 33 \N
+235 {"type": "LineString", "coordinates": [[272.64, 207.36], [274.59, 207.36]]} 33 \N
+240 {"type": "LineString", "coordinates": [[269.03, 231.92], [269.03, 230.29]]} 101 \N
+241 {"type": "LineString", "coordinates": [[269.31, 231.92], [269.31, 230.29]]} 101 \N
+242 {"type": "LineString", "coordinates": [[269.59, 231.92], [269.59, 230.29]]} 101 \N
+243 {"type": "LineString", "coordinates": [[269.87, 231.92], [269.87, 230.29]]} 101 \N
+244 {"type": "LineString", "coordinates": [[270.15, 231.92], [270.15, 230.29]]} 101 \N
+245 {"type": "LineString", "coordinates": [[270.43, 231.92], [270.43, 230.29]]} 101 \N
+246 {"type": "LineString", "coordinates": [[270.71, 231.92], [270.71, 230.29]]} 101 \N
+247 {"type": "LineString", "coordinates": [[270.99, 231.92], [270.99, 230.29]]} 101 \N
+248 {"type": "LineString", "coordinates": [[271.27, 231.92], [271.27, 230.29]]} 101 \N
+249 {"type": "LineString", "coordinates": [[271.55, 231.92], [271.55, 230.29]]} 101 \N
+250 {"type": "LineString", "coordinates": [[271.83, 231.92], [271.83, 230.29]]} 101 \N
+251 {"type": "LineString", "coordinates": [[272.11, 231.92], [272.11, 230.29]]} 101 \N
+252 {"type": "LineString", "coordinates": [[272.39, 231.92], [272.39, 230.29]]} 101 \N
+253 {"type": "LineString", "coordinates": [[269.03, 233.94], [269.03, 232.3]]} 101 \N
+254 {"type": "LineString", "coordinates": [[269.31, 233.94], [269.31, 232.3]]} 101 \N
+255 {"type": "LineString", "coordinates": [[269.59, 233.94], [269.59, 232.3]]} 101 \N
+256 {"type": "LineString", "coordinates": [[269.87, 233.94], [269.87, 232.3]]} 101 \N
+257 {"type": "LineString", "coordinates": [[270.15, 233.94], [270.15, 232.3]]} 101 \N
+258 {"type": "LineString", "coordinates": [[270.43, 233.94], [270.43, 232.3]]} 101 \N
+259 {"type": "LineString", "coordinates": [[270.71, 233.94], [270.71, 232.3]]} 101 \N
+260 {"type": "LineString", "coordinates": [[270.99, 233.94], [270.99, 232.3]]} 101 \N
+261 {"type": "LineString", "coordinates": [[271.27, 233.94], [271.27, 232.3]]} 101 \N
+262 {"type": "LineString", "coordinates": [[271.55, 233.94], [271.55, 232.3]]} 101 \N
+263 {"type": "LineString", "coordinates": [[271.83, 233.94], [271.83, 232.3]]} 101 \N
+264 {"type": "LineString", "coordinates": [[272.11, 233.94], [272.11, 232.3]]} 101 \N
+265 {"type": "LineString", "coordinates": [[272.39, 233.94], [272.39, 232.3]]} 101 \N
+266 {"type": "LineString", "coordinates": [[272.67, 233.94], [272.67, 232.3]]} 101 \N
+267 {"type": "LineString", "coordinates": [[269.03, 231.92], [269.03, 230.29]]} 103 \N
+268 {"type": "LineString", "coordinates": [[269.31, 231.92], [269.31, 230.29]]} 103 \N
+269 {"type": "LineString", "coordinates": [[269.59, 231.92], [269.59, 230.29]]} 103 \N
+270 {"type": "LineString", "coordinates": [[269.87, 231.92], [269.87, 230.29]]} 103 \N
+271 {"type": "LineString", "coordinates": [[270.15, 231.92], [270.15, 230.29]]} 103 \N
+272 {"type": "LineString", "coordinates": [[270.43, 231.92], [270.43, 230.29]]} 103 \N
+273 {"type": "LineString", "coordinates": [[270.71, 231.92], [270.71, 230.29]]} 103 \N
+274 {"type": "LineString", "coordinates": [[270.99, 231.92], [270.99, 230.29]]} 103 \N
+275 {"type": "LineString", "coordinates": [[271.27, 231.92], [271.27, 230.29]]} 103 \N
+276 {"type": "LineString", "coordinates": [[271.55, 231.92], [271.55, 230.29]]} 103 \N
+277 {"type": "LineString", "coordinates": [[271.83, 231.92], [271.83, 230.29]]} 103 \N
+278 {"type": "LineString", "coordinates": [[272.11, 231.92], [272.11, 230.29]]} 103 \N
+279 {"type": "LineString", "coordinates": [[272.39, 231.92], [272.39, 230.29]]} 103 \N
+280 {"type": "LineString", "coordinates": [[269.03, 233.94], [269.03, 232.3]]} 103 \N
+281 {"type": "LineString", "coordinates": [[269.31, 233.94], [269.31, 232.3]]} 103 \N
+282 {"type": "LineString", "coordinates": [[269.59, 233.94], [269.59, 232.3]]} 103 \N
+283 {"type": "LineString", "coordinates": [[269.87, 233.94], [269.87, 232.3]]} 103 \N
+284 {"type": "LineString", "coordinates": [[270.15, 233.94], [270.15, 232.3]]} 103 \N
+285 {"type": "LineString", "coordinates": [[270.43, 233.94], [270.43, 232.3]]} 103 \N
+286 {"type": "LineString", "coordinates": [[270.71, 233.94], [270.71, 232.3]]} 103 \N
+287 {"type": "LineString", "coordinates": [[270.99, 233.94], [270.99, 232.3]]} 103 \N
+288 {"type": "LineString", "coordinates": [[271.27, 233.94], [271.27, 232.3]]} 103 \N
+289 {"type": "LineString", "coordinates": [[271.55, 233.94], [271.55, 232.3]]} 103 \N
+290 {"type": "LineString", "coordinates": [[271.83, 233.94], [271.83, 232.3]]} 103 \N
+291 {"type": "LineString", "coordinates": [[272.11, 233.94], [272.11, 232.3]]} 103 \N
+292 {"type": "LineString", "coordinates": [[272.39, 233.94], [272.39, 232.3]]} 103 \N
+293 {"type": "LineString", "coordinates": [[272.67, 233.94], [272.67, 232.3]]} 103 \N
+294 {"type": "LineString", "coordinates": [[269.03, 231.92], [269.03, 230.29]]} 107 \N
+295 {"type": "LineString", "coordinates": [[269.31, 231.92], [269.31, 230.29]]} 107 \N
+296 {"type": "LineString", "coordinates": [[269.59, 231.92], [269.59, 230.29]]} 107 \N
+297 {"type": "LineString", "coordinates": [[269.87, 231.92], [269.87, 230.29]]} 107 \N
+298 {"type": "LineString", "coordinates": [[270.15, 231.92], [270.15, 230.29]]} 107 \N
+299 {"type": "LineString", "coordinates": [[270.43, 231.92], [270.43, 230.29]]} 107 \N
+300 {"type": "LineString", "coordinates": [[270.71, 231.92], [270.71, 230.29]]} 107 \N
+301 {"type": "LineString", "coordinates": [[270.99, 231.92], [270.99, 230.29]]} 107 \N
+302 {"type": "LineString", "coordinates": [[271.27, 231.92], [271.27, 230.29]]} 107 \N
+303 {"type": "LineString", "coordinates": [[271.55, 231.92], [271.55, 230.29]]} 107 \N
+304 {"type": "LineString", "coordinates": [[271.83, 231.92], [271.83, 230.29]]} 107 \N
+305 {"type": "LineString", "coordinates": [[272.11, 231.92], [272.11, 230.29]]} 107 \N
+306 {"type": "LineString", "coordinates": [[272.39, 231.92], [272.39, 230.29]]} 107 \N
+307 {"type": "LineString", "coordinates": [[269.03, 233.94], [269.03, 232.3]]} 107 \N
+308 {"type": "LineString", "coordinates": [[269.31, 233.94], [269.31, 232.3]]} 107 \N
+309 {"type": "LineString", "coordinates": [[269.59, 233.94], [269.59, 232.3]]} 107 \N
+310 {"type": "LineString", "coordinates": [[269.87, 233.94], [269.87, 232.3]]} 107 \N
+311 {"type": "LineString", "coordinates": [[270.15, 233.94], [270.15, 232.3]]} 107 \N
+312 {"type": "LineString", "coordinates": [[270.43, 233.94], [270.43, 232.3]]} 107 \N
+313 {"type": "LineString", "coordinates": [[270.71, 233.94], [270.71, 232.3]]} 107 \N
+314 {"type": "LineString", "coordinates": [[270.99, 233.94], [270.99, 232.3]]} 107 \N
+315 {"type": "LineString", "coordinates": [[271.27, 233.94], [271.27, 232.3]]} 107 \N
+316 {"type": "LineString", "coordinates": [[271.55, 233.94], [271.55, 232.3]]} 107 \N
+317 {"type": "LineString", "coordinates": [[271.83, 233.94], [271.83, 232.3]]} 107 \N
+318 {"type": "LineString", "coordinates": [[272.11, 233.94], [272.11, 232.3]]} 107 \N
+319 {"type": "LineString", "coordinates": [[272.39, 233.94], [272.39, 232.3]]} 107 \N
+320 {"type": "LineString", "coordinates": [[272.67, 233.94], [272.67, 232.3]]} 107 \N
+323 {"type": "LineString", "coordinates": [[284.02, 195.77], [301.55, 195.77]]} 118 \N
+324 {"type": "LineString", "coordinates": [[284.02, 197.12], [301.55, 197.12]]} 118 \N
+325 {"type": "LineString", "coordinates": [[284.02, 198.48], [301.55, 198.48]]} 118 \N
+326 {"type": "LineString", "coordinates": [[284.02, 199.83], [301.55, 199.83]]} 118 \N
+327 {"type": "LineString", "coordinates": [[284.02, 201.19], [301.55, 201.19]]} 118 \N
+328 {"type": "LineString", "coordinates": [[284.02, 202.54], [301.55, 202.54]]} 118 \N
+329 {"type": "LineString", "coordinates": [[284.02, 203.9], [301.55, 203.9]]} 118 \N
+330 {"type": "LineString", "coordinates": [[284.02, 205.25], [301.55, 205.25]]} 118 \N
+331 {"type": "LineString", "coordinates": [[284.02, 206.6], [301.55, 206.6]]} 118 \N
+332 {"type": "LineString", "coordinates": [[284.02, 207.96], [301.55, 207.96]]} 118 \N
+333 {"type": "LineString", "coordinates": [[284.02, 209.31], [301.55, 209.31]]} 118 \N
+334 {"type": "LineString", "coordinates": [[284.02, 210.67], [301.55, 210.67]]} 118 \N
+335 {"type": "LineString", "coordinates": [[284.02, 212.02], [301.55, 212.02]]} 118 \N
+336 {"type": "LineString", "coordinates": [[270.62, 207.07], [272.39, 207.07]]} 59 \N
+337 {"type": "LineString", "coordinates": [[270.63, 206.76], [272.4, 206.76]]} 59 \N
+338 {"type": "LineString", "coordinates": [[270.63, 206.46], [272.39, 206.46]]} 59 \N
+339 {"type": "LineString", "coordinates": [[270.63, 206.15], [272.39, 206.15]]} 59 \N
+340 {"type": "LineString", "coordinates": [[249.04, 133.31], [248.66, 137.4], [252.63, 137.77]]} 61 \N
+341 {"type": "LineString", "coordinates": [[249.3, 133.32], [248.95, 137.15], [252.64, 137.5]]} 61 \N
+342 {"type": "LineString", "coordinates": [[248.98, 133.05], [248.79, 133.04], [248.37, 137.64], [252.89, 138.06], [252.91, 137.9]]} 61 \N
+343 {"type": "LineString", "coordinates": [[248.99, 132.78], [248.55, 132.74], [248.07, 137.88], [253.14, 138.35], [253.18, 137.95]]} 61 \N
+344 {"type": "LineString", "coordinates": [[249.02, 132.51], [248.29, 132.44], [247.78, 138.13], [253.37, 138.64], [253.44, 137.96]]} 61 \N
+352 {"type": "LineString", "coordinates": [[423.79, 207.72], [423.79, 206.48]]} 136 \N
+353 {"type": "LineString", "coordinates": [[425.71, 207.73], [425.71, 206.46]]} 136 \N
+356 {"type": "LineString", "coordinates": [[426.95, 203.7], [425.67, 203.7]]} 136 \N
+357 {"type": "LineString", "coordinates": [[426.95, 204.04], [425.67, 204.04]]} 136 \N
+358 {"type": "LineString", "coordinates": [[426.95, 204.38], [425.67, 204.38]]} 136 \N
+359 {"type": "LineString", "coordinates": [[426.95, 204.71], [425.67, 204.71]]} 136 \N
+360 {"type": "LineString", "coordinates": [[426.95, 205.05], [425.67, 205.05]]} 136 \N
+361 {"type": "LineString", "coordinates": [[426.95, 205.39], [425.67, 205.39]]} 136 \N
+362 {"type": "LineString", "coordinates": [[426.95, 205.73], [425.67, 205.73]]} 136 \N
+363 {"type": "LineString", "coordinates": [[426.95, 206.06], [425.67, 206.06]]} 136 \N
+364 {"type": "LineString", "coordinates": [[426.95, 206.4], [425.67, 206.4]]} 136 \N
+365 {"type": "LineString", "coordinates": [[424, 207.73], [424, 206.46]]} 136 \N
+366 {"type": "LineString", "coordinates": [[424.22, 207.73], [424.22, 206.46]]} 136 \N
+367 {"type": "LineString", "coordinates": [[424.43, 207.73], [424.43, 206.46]]} 136 \N
+368 {"type": "LineString", "coordinates": [[424.64, 207.73], [424.64, 206.46]]} 136 \N
+369 {"type": "LineString", "coordinates": [[424.86, 207.73], [424.86, 206.46]]} 136 \N
+370 {"type": "LineString", "coordinates": [[425.07, 207.73], [425.07, 206.46]]} 136 \N
+371 {"type": "LineString", "coordinates": [[425.28, 207.73], [425.28, 206.46]]} 136 \N
+372 {"type": "LineString", "coordinates": [[425.5, 207.73], [425.5, 206.46]]} 136 \N
+379 {"type": "LineString", "coordinates": [[422.78, 202.7], [422.78, 201.24]]} 138 \N
+380 {"type": "LineString", "coordinates": [[423.06, 202.7], [423.06, 201.24]]} 138 \N
+381 {"type": "LineString", "coordinates": [[423.34, 202.7], [423.34, 201.24]]} 138 \N
+382 {"type": "LineString", "coordinates": [[423.62, 202.7], [423.62, 201.24]]} 138 \N
+383 {"type": "LineString", "coordinates": [[423.9, 202.7], [423.9, 201.24]]} 138 \N
+384 {"type": "LineString", "coordinates": [[424.17, 202.7], [424.17, 201.24]]} 138 \N
+385 {"type": "LineString", "coordinates": [[424.45, 202.7], [424.45, 201.24]]} 138 \N
+386 {"type": "LineString", "coordinates": [[424.73, 202.7], [424.73, 201.24]]} 138 \N
+387 {"type": "LineString", "coordinates": [[425.01, 202.7], [425.01, 201.24]]} 138 \N
+388 {"type": "LineString", "coordinates": [[425.61, 202.72], [426.94, 202.72]]} 138 \N
+389 {"type": "LineString", "coordinates": [[425.61, 203.01], [426.94, 203.01]]} 138 \N
+390 {"type": "LineString", "coordinates": [[425.61, 203.3], [426.94, 203.3]]} 138 \N
+391 {"type": "LineString", "coordinates": [[425.61, 203.59], [426.94, 203.59]]} 138 \N
+392 {"type": "LineString", "coordinates": [[425.61, 203.88], [426.94, 203.88]]} 138 \N
+393 {"type": "LineString", "coordinates": [[425.61, 204.17], [426.94, 204.17]]} 138 \N
+394 {"type": "LineString", "coordinates": [[425.61, 204.46], [426.94, 204.46]]} 138 \N
+395 {"type": "LineString", "coordinates": [[425.61, 204.74], [426.94, 204.74]]} 138 \N
+396 {"type": "LineString", "coordinates": [[425.61, 205.03], [426.94, 205.03]]} 138 \N
+397 {"type": "LineString", "coordinates": [[425.61, 205.32], [426.94, 205.32]]} 138 \N
+398 {"type": "LineString", "coordinates": [[425.61, 205.61], [426.94, 205.61]]} 138 \N
+399 {"type": "LineString", "coordinates": [[425.61, 205.9], [426.94, 205.9]]} 138 \N
+400 {"type": "LineString", "coordinates": [[425.61, 206.19], [426.94, 206.19]]} 138 \N
+401 {"type": "LineString", "coordinates": [[425.55, 206.39], [425.55, 207.71]]} 138 \N
+402 {"type": "LineString", "coordinates": [[425.23, 206.39], [425.23, 207.71]]} 138 \N
+403 {"type": "LineString", "coordinates": [[424.91, 206.39], [424.91, 207.71]]} 138 \N
+404 {"type": "LineString", "coordinates": [[424.6, 206.39], [424.6, 207.71]]} 138 \N
+405 {"type": "LineString", "coordinates": [[424.28, 206.39], [424.28, 207.71]]} 138 \N
+406 {"type": "LineString", "coordinates": [[423.96, 206.39], [423.96, 207.71]]} 138 \N
+407 {"type": "LineString", "coordinates": [[423.64, 206.39], [423.64, 207.71]]} 138 \N
+408 {"type": "LineString", "coordinates": [[423.33, 206.39], [423.33, 207.71]]} 138 \N
+409 {"type": "LineString", "coordinates": [[423.01, 206.39], [423.01, 207.71]]} 138 \N
+410 {"type": "LineString", "coordinates": [[422.69, 206.39], [422.69, 207.71]]} 138 \N
+\.
+
+
+--
+-- Data for Name: mapdata_theme; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_theme (id, titles, description, public, color_background, color_wall_fill, color_wall_border, color_door_fill, color_ground_fill, color_obstacles_default_fill, color_obstacles_default_border, last_updated, color_css_grid, color_css_header_background, color_css_header_text, color_css_header_text_hover, color_css_initial, color_css_modal_backdrop, color_css_overlay_background, color_css_primary, color_css_quaternary, color_css_quinary, color_css_route_dots_shadow, color_css_secondary, color_css_shadow, color_css_tertiary, color_logo, dark, "default", extra_css, funky, high_contrast, randomize_primary_color, icon_path, leaflet_marker_config) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_themelocationgroupbackgroundcolor; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_themelocationgroupbackgroundcolor (id, fill_color, border_color, location_group_id, theme_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_themeobstaclegroupbackgroundcolor; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_themeobstaclegroupbackgroundcolor (id, fill_color, border_color, obstacle_group_id, theme_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mapdata_waytype; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mapdata_waytype (id, titles, titles_plural, join_edges, up_separate, walk, color, icon_name, extra_seconds, speed, description_i18n, speed_up, description_up_i18n, level_change_description_i18n) FROM stdin;
+1 {"en": "Stairway"} {"en": "Stairways"} t t t #acea52 stairs 0 1.0 {"en": "Take the stairs downwards"} 1.0 {"en": "Take the stairs upwards"} {"en": "Level change description"}
+2 {"en": "Elevator"} {"en": "Elevators"} t t f #ffffcc elevator 0 1.0 {"en": "Take the elevator and {level_change_description}"} 1.0 {"en": "Take the elevator and {level_change_description}"} {"en": "go to {level}"}
+\.
+
+
+--
+-- Data for Name: mesh_firmwarebuild; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mesh_firmwarebuild (id, variant, chip, sha256_hash, project_description, "binary", version_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mesh_firmwarebuildboard; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mesh_firmwarebuildboard (id, board, build_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mesh_firmwareversion; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mesh_firmwareversion (id, project_name, version, idf_version, created, uploader_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mesh_meshnode; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mesh_meshnode (address, first_seen, last_signin, uplink_id, upstream_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mesh_meshuplink; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mesh_meshuplink (id, name, started, last_ping, end_reason, node_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mesh_nodemessage; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mesh_nodemessage (id, datetime, data, src_node_id, message_type, uplink_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mesh_otaupdate; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mesh_otaupdate (id, created, build_id) FROM stdin;
+\.
+
+
+--
+-- Data for Name: mesh_otaupdaterecipient; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.mesh_otaupdaterecipient (id, node_id, update_id, status) FROM stdin;
+\.
+
+
+--
+-- Data for Name: routing_routeoptions; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.routing_routeoptions (user_id, data) FROM stdin;
+1 {"mode": "fastest", "waytype_1": "avoid", "waytype_2": "allow", "walk_speed": "slow", "restrictions": "normal"}
+\.
+
+
+--
+-- Data for Name: site_announcement; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.site_announcement (id, created, active_until, active, author_id, text_i18n) FROM stdin;
+\.
+
+
+--
+-- Data for Name: site_siteupdate; Type: TABLE DATA; Schema: public; Owner: -
+--
+
+COPY public.site_siteupdate (id, created) FROM stdin;
+1 2024-09-24 09:23:14.436108+00
+\.
+
+
+--
+-- Name: api_secret_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.api_secret_id_seq', 1, false);
+
+
+--
+-- Name: api_token_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.api_token_id_seq', 1, false);
+
+
+--
+-- Name: auth_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.auth_group_id_seq', 1, false);
+
+
+--
+-- Name: auth_group_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.auth_group_permissions_id_seq', 1, false);
+
+
+--
+-- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.auth_permission_id_seq', 264, true);
+
+
+--
+-- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 1, false);
+
+
+--
+-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.auth_user_user_permissions_id_seq', 1, false);
+
+
+--
+-- Name: control_userpermissions_review_group_reports_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.control_userpermissions_review_group_reports_id_seq', 1, false);
+
+
+--
+-- Name: control_userspaceaccess_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.control_userspaceaccess_id_seq', 1, false);
+
+
+--
+-- Name: django_admin_log_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.django_admin_log_id_seq', 1, false);
+
+
+--
+-- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.django_content_type_id_seq', 66, true);
+
+
+--
+-- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.django_migrations_id_seq', 201, true);
+
+
+--
+-- Name: editor_changedobject_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.editor_changedobject_id_seq', 28, true);
+
+
+--
+-- Name: editor_changeset_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.editor_changeset_id_seq', 8, true);
+
+
+--
+-- Name: editor_changesetupdate_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.editor_changesetupdate_id_seq', 31, true);
+
+
+--
+-- Name: mapdata_accesspermission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_accesspermission_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_accesspermissionssogrant_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_accesspermissionssogrant_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_accesspermissiontoken_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_accesspermissiontoken_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_accessrestriction_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_accessrestriction_groups_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_accessrestriction_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_accessrestriction_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_accessrestrictiongroup_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_accessrestrictiongroup_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_altitudearea_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_altitudearea_id_seq', 364, true);
+
+
+--
+-- Name: mapdata_altitudemarker_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_altitudemarker_id_seq', 63, true);
+
+
+--
+-- Name: mapdata_area_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_area_groups_id_seq', 8, true);
+
+
+--
+-- Name: mapdata_building_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_building_id_seq', 16, true);
+
+
+--
+-- Name: mapdata_column_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_column_id_seq', 40, true);
+
+
+--
+-- Name: mapdata_crossdescription_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_crossdescription_id_seq', 1, true);
+
+
+--
+-- Name: mapdata_door_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_door_id_seq', 69, true);
+
+
+--
+-- Name: mapdata_dynamiclocation_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_dynamiclocation_groups_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_graphedge_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_graphedge_id_seq', 618, true);
+
+
+--
+-- Name: mapdata_graphnode_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_graphnode_id_seq', 234, true);
+
+
+--
+-- Name: mapdata_groundaltitude_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_groundaltitude_id_seq', 14, true);
+
+
+--
+-- Name: mapdata_hole_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_hole_id_seq', 11, true);
+
+
+--
+-- Name: mapdata_labelsettings_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_labelsettings_id_seq', 3, true);
+
+
+--
+-- Name: mapdata_leavedescription_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_leavedescription_id_seq', 1, true);
+
+
+--
+-- Name: mapdata_level_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_level_groups_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_lineobstacle_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_lineobstacle_id_seq', 9, true);
+
+
+--
+-- Name: mapdata_locationgroupcategory_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_locationgroupcategory_id_seq', 5, true);
+
+
+--
+-- Name: mapdata_locationslug_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_locationslug_id_seq', 153, true);
+
+
+--
+-- Name: mapdata_mapupdate_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_mapupdate_id_seq', 1827, true);
+
+
+--
+-- Name: mapdata_obstacle_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_obstacle_id_seq', 5, true);
+
+
+--
+-- Name: mapdata_obstaclegroup_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_obstaclegroup_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_poi_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_poi_groups_id_seq', 5, true);
+
+
+--
+-- Name: mapdata_position_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_position_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_ramp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_ramp_id_seq', 9, true);
+
+
+--
+-- Name: mapdata_rangingbeacon_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_rangingbeacon_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_report_created_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_report_created_groups_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_report_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_report_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_reportupdate_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_reportupdate_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_source_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_source_id_seq', 11, true);
+
+
+--
+-- Name: mapdata_space_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_space_groups_id_seq', 75, true);
+
+
+--
+-- Name: mapdata_stair_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_stair_id_seq', 410, true);
+
+
+--
+-- Name: mapdata_theme_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_theme_id_seq', 1, true);
+
+
+--
+-- Name: mapdata_themelocationgroupbackgroundcolor_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_themelocationgroupbackgroundcolor_id_seq', 8, true);
+
+
+--
+-- Name: mapdata_themeobstaclegroupbackgroundcolor_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_themeobstaclegroupbackgroundcolor_id_seq', 1, false);
+
+
+--
+-- Name: mapdata_waytype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_waytype_id_seq', 2, true);
+
+
+--
+-- Name: mapdata_wifimeasurement_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mapdata_wifimeasurement_id_seq', 1, false);
+
+
+--
+-- Name: mesh_firmwarebuild_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mesh_firmwarebuild_id_seq', 1, false);
+
+
+--
+-- Name: mesh_firmwarebuildboard_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mesh_firmwarebuildboard_id_seq', 1, false);
+
+
+--
+-- Name: mesh_firmwareversion_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mesh_firmwareversion_id_seq', 1, false);
+
+
+--
+-- Name: mesh_meshuplink_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mesh_meshuplink_id_seq', 1, false);
+
+
+--
+-- Name: mesh_nodemessage_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mesh_nodemessage_id_seq', 1, false);
+
+
+--
+-- Name: mesh_otaupdate_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mesh_otaupdate_id_seq', 1, false);
+
+
+--
+-- Name: mesh_otaupdaterecipient_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.mesh_otaupdaterecipient_id_seq', 1, false);
+
+
+--
+-- Name: site_announcement_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.site_announcement_id_seq', 1, false);
+
+
+--
+-- Name: site_siteupdate_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
+--
+
+SELECT pg_catalog.setval('public.site_siteupdate_id_seq', 1, true);
+
+
+--
+-- Name: api_secret api_secret_api_secret_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.api_secret
+ ADD CONSTRAINT api_secret_api_secret_key UNIQUE (api_secret);
+
+
+--
+-- Name: api_secret api_secret_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.api_secret
+ ADD CONSTRAINT api_secret_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: api_secret api_secret_user_id_name_21b4a70e_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.api_secret
+ ADD CONSTRAINT api_secret_user_id_name_21b4a70e_uniq UNIQUE (user_id, name);
+
+
+--
+-- Name: api_logintoken api_token_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.api_logintoken
+ ADD CONSTRAINT api_token_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_group auth_group_name_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_group
+ ADD CONSTRAINT auth_group_name_key UNIQUE (name);
+
+
+--
+-- Name: auth_group_permissions auth_group_permissions_group_id_permission_id_0cd325b0_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_group_permissions
+ ADD CONSTRAINT auth_group_permissions_group_id_permission_id_0cd325b0_uniq UNIQUE (group_id, permission_id);
+
+
+--
+-- Name: auth_group_permissions auth_group_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_group_permissions
+ ADD CONSTRAINT auth_group_permissions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_group auth_group_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_group
+ ADD CONSTRAINT auth_group_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_permission auth_permission_content_type_id_codename_01ab375a_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_permission
+ ADD CONSTRAINT auth_permission_content_type_id_codename_01ab375a_uniq UNIQUE (content_type_id, codename);
+
+
+--
+-- Name: auth_permission auth_permission_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_permission
+ ADD CONSTRAINT auth_permission_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_groups auth_user_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_user_groups
+ ADD CONSTRAINT auth_user_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_groups auth_user_groups_user_id_group_id_94350c0c_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_user_groups
+ ADD CONSTRAINT auth_user_groups_user_id_group_id_94350c0c_uniq UNIQUE (user_id, group_id);
+
+
+--
+-- Name: auth_user_user_permissions auth_user_user_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_user_user_permissions
+ ADD CONSTRAINT auth_user_user_permissions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_user_permissions auth_user_user_permissions_user_id_permission_id_14a6b632_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_user_user_permissions
+ ADD CONSTRAINT auth_user_user_permissions_user_id_permission_id_14a6b632_uniq UNIQUE (user_id, permission_id);
+
+
+--
+-- Name: control_userpermissions_review_group_reports control_userpermissions__userpermissions_id_locat_17cbbd3d_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userpermissions_review_group_reports
+ ADD CONSTRAINT control_userpermissions__userpermissions_id_locat_17cbbd3d_uniq UNIQUE (userpermissions_id, locationgroup_id);
+
+
+--
+-- Name: control_userpermissions control_userpermissions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userpermissions
+ ADD CONSTRAINT control_userpermissions_pkey PRIMARY KEY (user_id);
+
+
+--
+-- Name: control_userpermissions_review_group_reports control_userpermissions_review_group_reports_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userpermissions_review_group_reports
+ ADD CONSTRAINT control_userpermissions_review_group_reports_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: control_userspaceaccess control_userspaceaccess_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userspaceaccess
+ ADD CONSTRAINT control_userspaceaccess_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: control_userspaceaccess control_userspaceaccess_user_id_space_id_224c3409_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userspaceaccess
+ ADD CONSTRAINT control_userspaceaccess_user_id_space_id_224c3409_uniq UNIQUE (user_id, space_id);
+
+
+--
+-- Name: django_admin_log django_admin_log_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.django_admin_log
+ ADD CONSTRAINT django_admin_log_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_content_type django_content_type_app_label_model_76bd3d3b_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.django_content_type
+ ADD CONSTRAINT django_content_type_app_label_model_76bd3d3b_uniq UNIQUE (app_label, model);
+
+
+--
+-- Name: django_content_type django_content_type_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.django_content_type
+ ADD CONSTRAINT django_content_type_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_migrations django_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.django_migrations
+ ADD CONSTRAINT django_migrations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_session django_session_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.django_session
+ ADD CONSTRAINT django_session_pkey PRIMARY KEY (session_key);
+
+
+--
+-- Name: editor_changedobject editor_changedobject_changeset_id_content_typ_30a7cdb1_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changedobject
+ ADD CONSTRAINT editor_changedobject_changeset_id_content_typ_30a7cdb1_uniq UNIQUE (changeset_id, content_type_id, existing_object_pk);
+
+
+--
+-- Name: editor_changedobject editor_changedobject_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changedobject
+ ADD CONSTRAINT editor_changedobject_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: editor_changeset editor_changeset_map_update_id_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_map_update_id_key UNIQUE (map_update_id);
+
+
+--
+-- Name: editor_changeset editor_changeset_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: editor_changesetupdate editor_changesetupdate_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changesetupdate
+ ADD CONSTRAINT editor_changesetupdate_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_accesspermission mapdata_accesspermission_author_id_unique_key_0644d161_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermission
+ ADD CONSTRAINT mapdata_accesspermission_author_id_unique_key_0644d161_uniq UNIQUE (author_id, unique_key);
+
+
+--
+-- Name: mapdata_accesspermission mapdata_accesspermission_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermission
+ ADD CONSTRAINT mapdata_accesspermission_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_accesspermissionssogrant mapdata_accesspermission_provider_group_access_re_bf15c068_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermissionssogrant
+ ADD CONSTRAINT mapdata_accesspermission_provider_group_access_re_bf15c068_uniq UNIQUE (provider, "group", access_restriction_id, access_restriction_group_id);
+
+
+--
+-- Name: mapdata_accesspermissionssogrant mapdata_accesspermissionssogrant_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermissionssogrant
+ ADD CONSTRAINT mapdata_accesspermissionssogrant_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_accesspermissiontoken mapdata_accesspermissiontoken_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermissiontoken
+ ADD CONSTRAINT mapdata_accesspermissiontoken_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_accesspermissiontoken mapdata_accesspermissiontoken_token_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermissiontoken
+ ADD CONSTRAINT mapdata_accesspermissiontoken_token_key UNIQUE (token);
+
+
+--
+-- Name: mapdata_accessrestriction_groups mapdata_accessrestrictio_accessrestriction_id_acc_1dbcda69_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accessrestriction_groups
+ ADD CONSTRAINT mapdata_accessrestrictio_accessrestriction_id_acc_1dbcda69_uniq UNIQUE (accessrestriction_id, accessrestrictiongroup_id);
+
+
+--
+-- Name: mapdata_accessrestriction_groups mapdata_accessrestriction_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accessrestriction_groups
+ ADD CONSTRAINT mapdata_accessrestriction_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_accessrestriction mapdata_accessrestriction_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accessrestriction
+ ADD CONSTRAINT mapdata_accessrestriction_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_accessrestrictiongroup mapdata_accessrestrictiongroup_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accessrestrictiongroup
+ ADD CONSTRAINT mapdata_accessrestrictiongroup_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_altitudearea mapdata_altitudearea_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_altitudearea
+ ADD CONSTRAINT mapdata_altitudearea_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_altitudemarker mapdata_altitudemarker_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_altitudemarker
+ ADD CONSTRAINT mapdata_altitudemarker_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_area_groups mapdata_area_groups_area_id_locationgroup_id_573c1a07_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area_groups
+ ADD CONSTRAINT mapdata_area_groups_area_id_locationgroup_id_573c1a07_uniq UNIQUE (area_id, locationgroup_id);
+
+
+--
+-- Name: mapdata_area_groups mapdata_area_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area_groups
+ ADD CONSTRAINT mapdata_area_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_area mapdata_area_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area
+ ADD CONSTRAINT mapdata_area_pkey PRIMARY KEY (locationslug_ptr_id);
+
+
+--
+-- Name: mapdata_building mapdata_building_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_building
+ ADD CONSTRAINT mapdata_building_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_column mapdata_column_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_column
+ ADD CONSTRAINT mapdata_column_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_crossdescription mapdata_crossdescription_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_crossdescription
+ ADD CONSTRAINT mapdata_crossdescription_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_crossdescription mapdata_crossdescription_space_id_origin_space_id_0efa52a4_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_crossdescription
+ ADD CONSTRAINT mapdata_crossdescription_space_id_origin_space_id_0efa52a4_uniq UNIQUE (space_id, origin_space_id, target_space_id);
+
+
+--
+-- Name: mapdata_door mapdata_door_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_door
+ ADD CONSTRAINT mapdata_door_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_dynamiclocation_groups mapdata_dynamiclocation__dynamiclocation_id_locat_d1a2f283_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_dynamiclocation_groups
+ ADD CONSTRAINT mapdata_dynamiclocation__dynamiclocation_id_locat_d1a2f283_uniq UNIQUE (dynamiclocation_id, locationgroup_id);
+
+
+--
+-- Name: mapdata_dynamiclocation_groups mapdata_dynamiclocation_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_dynamiclocation_groups
+ ADD CONSTRAINT mapdata_dynamiclocation_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_dynamiclocation mapdata_dynamiclocation_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_dynamiclocation
+ ADD CONSTRAINT mapdata_dynamiclocation_pkey PRIMARY KEY (locationslug_ptr_id);
+
+
+--
+-- Name: mapdata_graphedge mapdata_graphedge_from_node_id_to_node_id_69dfc18a_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_graphedge
+ ADD CONSTRAINT mapdata_graphedge_from_node_id_to_node_id_69dfc18a_uniq UNIQUE (from_node_id, to_node_id);
+
+
+--
+-- Name: mapdata_graphedge mapdata_graphedge_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_graphedge
+ ADD CONSTRAINT mapdata_graphedge_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_graphnode mapdata_graphnode_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_graphnode
+ ADD CONSTRAINT mapdata_graphnode_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_groundaltitude mapdata_groundaltitude_name_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_groundaltitude
+ ADD CONSTRAINT mapdata_groundaltitude_name_key UNIQUE (name);
+
+
+--
+-- Name: mapdata_groundaltitude mapdata_groundaltitude_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_groundaltitude
+ ADD CONSTRAINT mapdata_groundaltitude_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_hole mapdata_hole_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_hole
+ ADD CONSTRAINT mapdata_hole_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_labelsettings mapdata_labelsettings_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_labelsettings
+ ADD CONSTRAINT mapdata_labelsettings_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_leavedescription mapdata_leavedescription_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_leavedescription
+ ADD CONSTRAINT mapdata_leavedescription_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_leavedescription mapdata_leavedescription_space_id_target_space_id_91b3fce3_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_leavedescription
+ ADD CONSTRAINT mapdata_leavedescription_space_id_target_space_id_91b3fce3_uniq UNIQUE (space_id, target_space_id);
+
+
+--
+-- Name: mapdata_level mapdata_level_base_altitude_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level
+ ADD CONSTRAINT mapdata_level_base_altitude_key UNIQUE (base_altitude);
+
+
+--
+-- Name: mapdata_level_groups mapdata_level_groups_level_id_locationgroup_id_a6e17493_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level_groups
+ ADD CONSTRAINT mapdata_level_groups_level_id_locationgroup_id_a6e17493_uniq UNIQUE (level_id, locationgroup_id);
+
+
+--
+-- Name: mapdata_level_groups mapdata_level_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level_groups
+ ADD CONSTRAINT mapdata_level_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_level mapdata_level_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level
+ ADD CONSTRAINT mapdata_level_pkey PRIMARY KEY (locationslug_ptr_id);
+
+
+--
+-- Name: mapdata_level mapdata_level_short_label_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level
+ ADD CONSTRAINT mapdata_level_short_label_key UNIQUE (short_label);
+
+
+--
+-- Name: mapdata_lineobstacle mapdata_lineobstacle_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_lineobstacle
+ ADD CONSTRAINT mapdata_lineobstacle_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_locationgroup mapdata_locationgroup_hub_import_type_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationgroup
+ ADD CONSTRAINT mapdata_locationgroup_hub_import_type_key UNIQUE (hub_import_type);
+
+
+--
+-- Name: mapdata_locationgroup mapdata_locationgroup_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationgroup
+ ADD CONSTRAINT mapdata_locationgroup_pkey PRIMARY KEY (locationslug_ptr_id);
+
+
+--
+-- Name: mapdata_locationgroupcategory mapdata_locationgroupcategory_name_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationgroupcategory
+ ADD CONSTRAINT mapdata_locationgroupcategory_name_key UNIQUE (name);
+
+
+--
+-- Name: mapdata_locationgroupcategory mapdata_locationgroupcategory_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationgroupcategory
+ ADD CONSTRAINT mapdata_locationgroupcategory_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_locationredirect mapdata_locationredirect_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationredirect
+ ADD CONSTRAINT mapdata_locationredirect_pkey PRIMARY KEY (locationslug_ptr_id);
+
+
+--
+-- Name: mapdata_locationslug mapdata_locationslug_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationslug
+ ADD CONSTRAINT mapdata_locationslug_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_locationslug mapdata_locationslug_slug_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationslug
+ ADD CONSTRAINT mapdata_locationslug_slug_key UNIQUE (slug);
+
+
+--
+-- Name: mapdata_mapupdate mapdata_mapupdate_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_mapupdate
+ ADD CONSTRAINT mapdata_mapupdate_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_obstacle mapdata_obstacle_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_obstacle
+ ADD CONSTRAINT mapdata_obstacle_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_obstaclegroup mapdata_obstaclegroup_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_obstaclegroup
+ ADD CONSTRAINT mapdata_obstaclegroup_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_poi_groups mapdata_poi_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi_groups
+ ADD CONSTRAINT mapdata_poi_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_poi_groups mapdata_poi_groups_poi_id_locationgroup_id_e97cd00b_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi_groups
+ ADD CONSTRAINT mapdata_poi_groups_poi_id_locationgroup_id_e97cd00b_uniq UNIQUE (poi_id, locationgroup_id);
+
+
+--
+-- Name: mapdata_poi mapdata_poi_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi
+ ADD CONSTRAINT mapdata_poi_pkey PRIMARY KEY (locationslug_ptr_id);
+
+
+--
+-- Name: mapdata_position mapdata_position_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_position
+ ADD CONSTRAINT mapdata_position_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_position mapdata_position_secret_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_position
+ ADD CONSTRAINT mapdata_position_secret_key UNIQUE (secret);
+
+
+--
+-- Name: mapdata_ramp mapdata_ramp_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_ramp
+ ADD CONSTRAINT mapdata_ramp_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_rangingbeacon mapdata_rangingbeacon_bluetooth_address_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_rangingbeacon
+ ADD CONSTRAINT mapdata_rangingbeacon_bluetooth_address_key UNIQUE (bluetooth_address);
+
+
+--
+-- Name: mapdata_rangingbeacon mapdata_rangingbeacon_bssid_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_rangingbeacon
+ ADD CONSTRAINT mapdata_rangingbeacon_bssid_key UNIQUE (wifi_bssid);
+
+
+--
+-- Name: mapdata_rangingbeacon mapdata_rangingbeacon_node_number_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_rangingbeacon
+ ADD CONSTRAINT mapdata_rangingbeacon_node_number_key UNIQUE (node_number);
+
+
+--
+-- Name: mapdata_rangingbeacon mapdata_rangingbeacon_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_rangingbeacon
+ ADD CONSTRAINT mapdata_rangingbeacon_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_rangingbeacon mapdata_rangingbeacon_uwb_address_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_rangingbeacon
+ ADD CONSTRAINT mapdata_rangingbeacon_uwb_address_key UNIQUE (uwb_address);
+
+
+--
+-- Name: mapdata_report_created_groups mapdata_report_created_g_report_id_locationgroup__27469fb6_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_report_created_groups
+ ADD CONSTRAINT mapdata_report_created_g_report_id_locationgroup__27469fb6_uniq UNIQUE (report_id, locationgroup_id);
+
+
+--
+-- Name: mapdata_report_created_groups mapdata_report_created_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_report_created_groups
+ ADD CONSTRAINT mapdata_report_created_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_report mapdata_report_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_report
+ ADD CONSTRAINT mapdata_report_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_reportupdate mapdata_reportupdate_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_reportupdate
+ ADD CONSTRAINT mapdata_reportupdate_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_source mapdata_source_name_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_source
+ ADD CONSTRAINT mapdata_source_name_key UNIQUE (name);
+
+
+--
+-- Name: mapdata_source mapdata_source_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_source
+ ADD CONSTRAINT mapdata_source_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_space_groups mapdata_space_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space_groups
+ ADD CONSTRAINT mapdata_space_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_space_groups mapdata_space_groups_space_id_locationgroup_id_170f4e14_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space_groups
+ ADD CONSTRAINT mapdata_space_groups_space_id_locationgroup_id_170f4e14_uniq UNIQUE (space_id, locationgroup_id);
+
+
+--
+-- Name: mapdata_space mapdata_space_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space
+ ADD CONSTRAINT mapdata_space_pkey PRIMARY KEY (locationslug_ptr_id);
+
+
+--
+-- Name: mapdata_stair mapdata_stair_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_stair
+ ADD CONSTRAINT mapdata_stair_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_theme mapdata_theme_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_theme
+ ADD CONSTRAINT mapdata_theme_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_themelocationgroupbackgroundcolor mapdata_themelocationgroupbackgroundcolor_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_themelocationgroupbackgroundcolor
+ ADD CONSTRAINT mapdata_themelocationgroupbackgroundcolor_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_themeobstaclegroupbackgroundcolor mapdata_themeobstaclegroupbackgroundcolor_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_themeobstaclegroupbackgroundcolor
+ ADD CONSTRAINT mapdata_themeobstaclegroupbackgroundcolor_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_waytype mapdata_waytype_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_waytype
+ ADD CONSTRAINT mapdata_waytype_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mapdata_beaconmeasurement mapdata_wifimeasurement_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_beaconmeasurement
+ ADD CONSTRAINT mapdata_wifimeasurement_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mesh_firmwarebuild mesh_firmwarebuild_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwarebuild
+ ADD CONSTRAINT mesh_firmwarebuild_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mesh_firmwarebuild mesh_firmwarebuild_sha256_hash_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwarebuild
+ ADD CONSTRAINT mesh_firmwarebuild_sha256_hash_key UNIQUE (sha256_hash);
+
+
+--
+-- Name: mesh_firmwarebuild mesh_firmwarebuild_version_id_variant_0930ed52_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwarebuild
+ ADD CONSTRAINT mesh_firmwarebuild_version_id_variant_0930ed52_uniq UNIQUE (version_id, variant);
+
+
+--
+-- Name: mesh_firmwarebuildboard mesh_firmwarebuildboard_build_id_board_e38ac95f_uniq; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwarebuildboard
+ ADD CONSTRAINT mesh_firmwarebuildboard_build_id_board_e38ac95f_uniq UNIQUE (build_id, board);
+
+
+--
+-- Name: mesh_firmwarebuildboard mesh_firmwarebuildboard_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwarebuildboard
+ ADD CONSTRAINT mesh_firmwarebuildboard_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mesh_firmwareversion mesh_firmwareversion_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwareversion
+ ADD CONSTRAINT mesh_firmwareversion_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mesh_firmwareversion mesh_firmwareversion_version_key; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwareversion
+ ADD CONSTRAINT mesh_firmwareversion_version_key UNIQUE (version);
+
+
+--
+-- Name: mesh_meshnode mesh_meshnode_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_meshnode
+ ADD CONSTRAINT mesh_meshnode_pkey PRIMARY KEY (address);
+
+
+--
+-- Name: mesh_meshuplink mesh_meshuplink_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_meshuplink
+ ADD CONSTRAINT mesh_meshuplink_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mesh_nodemessage mesh_nodemessage_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_nodemessage
+ ADD CONSTRAINT mesh_nodemessage_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mesh_otaupdate mesh_otaupdate_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_otaupdate
+ ADD CONSTRAINT mesh_otaupdate_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: mesh_otaupdaterecipient mesh_otaupdaterecipient_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_otaupdaterecipient
+ ADD CONSTRAINT mesh_otaupdaterecipient_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: routing_routeoptions routing_routeoptions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.routing_routeoptions
+ ADD CONSTRAINT routing_routeoptions_pkey PRIMARY KEY (user_id);
+
+
+--
+-- Name: site_announcement site_announcement_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.site_announcement
+ ADD CONSTRAINT site_announcement_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: site_siteupdate site_siteupdate_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.site_siteupdate
+ ADD CONSTRAINT site_siteupdate_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: api_secret_api_secret_e655122c_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX api_secret_api_secret_e655122c_like ON public.api_secret USING btree (api_secret varchar_pattern_ops);
+
+
+--
+-- Name: api_secret_user_id_74e5b7a6; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX api_secret_user_id_74e5b7a6 ON public.api_secret USING btree (user_id);
+
+
+--
+-- Name: api_token_user_id_b646d2e7; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX api_token_user_id_b646d2e7 ON public.api_logintoken USING btree (user_id);
+
+
+--
+-- Name: auth_group_name_a6ea08ec_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX auth_group_name_a6ea08ec_like ON public.auth_group USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: auth_group_permissions_group_id_b120cbf9; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX auth_group_permissions_group_id_b120cbf9 ON public.auth_group_permissions USING btree (group_id);
+
+
+--
+-- Name: auth_group_permissions_permission_id_84c5c92e; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX auth_group_permissions_permission_id_84c5c92e ON public.auth_group_permissions USING btree (permission_id);
+
+
+--
+-- Name: auth_permission_content_type_id_2f476e4b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX auth_permission_content_type_id_2f476e4b ON public.auth_permission USING btree (content_type_id);
+
+
+--
+-- Name: auth_user_groups_group_id_97559544; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX auth_user_groups_group_id_97559544 ON public.auth_user_groups USING btree (group_id);
+
+
+--
+-- Name: auth_user_groups_user_id_6a12ed8b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX auth_user_groups_user_id_6a12ed8b ON public.auth_user_groups USING btree (user_id);
+
+
+--
+-- Name: auth_user_user_permissions_permission_id_1fbb5f2c; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX auth_user_user_permissions_permission_id_1fbb5f2c ON public.auth_user_user_permissions USING btree (permission_id);
+
+
+--
+-- Name: auth_user_user_permissions_user_id_a95ead1b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX auth_user_user_permissions_user_id_a95ead1b ON public.auth_user_user_permissions USING btree (user_id);
+
+
+--
+-- Name: control_userpermissions_re_locationgroup_id_96a3102b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX control_userpermissions_re_locationgroup_id_96a3102b ON public.control_userpermissions_review_group_reports USING btree (locationgroup_id);
+
+
+--
+-- Name: control_userpermissions_re_userpermissions_id_3d2fb35b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX control_userpermissions_re_userpermissions_id_3d2fb35b ON public.control_userpermissions_review_group_reports USING btree (userpermissions_id);
+
+
+--
+-- Name: control_userspaceaccess_space_id_c22914b2; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX control_userspaceaccess_space_id_c22914b2 ON public.control_userspaceaccess USING btree (space_id);
+
+
+--
+-- Name: control_userspaceaccess_user_id_4ad6da16; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX control_userspaceaccess_user_id_4ad6da16 ON public.control_userspaceaccess USING btree (user_id);
+
+
+--
+-- Name: django_admin_log_content_type_id_c4bce8eb; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX django_admin_log_content_type_id_c4bce8eb ON public.django_admin_log USING btree (content_type_id);
+
+
+--
+-- Name: django_admin_log_user_id_c564eba6; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX django_admin_log_user_id_c564eba6 ON public.django_admin_log USING btree (user_id);
+
+
+--
+-- Name: django_session_expire_date_a5c62663; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX django_session_expire_date_a5c62663 ON public.django_session USING btree (expire_date);
+
+
+--
+-- Name: django_session_session_key_c0390e0f_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX django_session_session_key_c0390e0f_like ON public.django_session USING btree (session_key varchar_pattern_ops);
+
+
+--
+-- Name: editor_changedobject_changeset_id_0692bc40; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changedobject_changeset_id_0692bc40 ON public.editor_changedobject USING btree (changeset_id);
+
+
+--
+-- Name: editor_changedobject_content_type_id_aa981231; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changedobject_content_type_id_aa981231 ON public.editor_changedobject USING btree (content_type_id);
+
+
+--
+-- Name: editor_changeset_assigned_to_id_3afcfbb7; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changeset_assigned_to_id_3afcfbb7 ON public.editor_changeset USING btree (assigned_to_id);
+
+
+--
+-- Name: editor_changeset_author_id_f4bf3c7f; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changeset_author_id_f4bf3c7f ON public.editor_changeset USING btree (author_id);
+
+
+--
+-- Name: editor_changeset_last_change_id_5be51ccf; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changeset_last_change_id_5be51ccf ON public.editor_changeset USING btree (last_change_id);
+
+
+--
+-- Name: editor_changeset_last_cleaned_with_id_d5214743; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changeset_last_cleaned_with_id_d5214743 ON public.editor_changeset USING btree (last_cleaned_with_id);
+
+
+--
+-- Name: editor_changeset_last_state_update_id_292a8530; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changeset_last_state_update_id_292a8530 ON public.editor_changeset USING btree (last_state_update_id);
+
+
+--
+-- Name: editor_changeset_last_update_id_e0d77297; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changeset_last_update_id_e0d77297 ON public.editor_changeset USING btree (last_update_id);
+
+
+--
+-- Name: editor_changeset_state_5a7a590f; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changeset_state_5a7a590f ON public.editor_changeset USING btree (state);
+
+
+--
+-- Name: editor_changeset_state_5a7a590f_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changeset_state_5a7a590f_like ON public.editor_changeset USING btree (state varchar_pattern_ops);
+
+
+--
+-- Name: editor_changesetupdate_assigned_to_id_373deb2a; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changesetupdate_assigned_to_id_373deb2a ON public.editor_changesetupdate USING btree (assigned_to_id);
+
+
+--
+-- Name: editor_changesetupdate_changeset_id_aedbc5fb; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changesetupdate_changeset_id_aedbc5fb ON public.editor_changesetupdate USING btree (changeset_id);
+
+
+--
+-- Name: editor_changesetupdate_state_ed535412; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changesetupdate_state_ed535412 ON public.editor_changesetupdate USING btree (state);
+
+
+--
+-- Name: editor_changesetupdate_state_ed535412_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changesetupdate_state_ed535412_like ON public.editor_changesetupdate USING btree (state varchar_pattern_ops);
+
+
+--
+-- Name: editor_changesetupdate_user_id_cd2202c2; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX editor_changesetupdate_user_id_cd2202c2 ON public.editor_changesetupdate USING btree (user_id);
+
+
+--
+-- Name: mapdata_accesspermission_access_restriction_group_id_194c451d; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermission_access_restriction_group_id_194c451d ON public.mapdata_accesspermission USING btree (access_restriction_group_id);
+
+
+--
+-- Name: mapdata_accesspermission_access_restriction_id_6cf436d8; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermission_access_restriction_id_6cf436d8 ON public.mapdata_accesspermission USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_accesspermission_author_id_f42ef447; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermission_author_id_f42ef447 ON public.mapdata_accesspermission USING btree (author_id);
+
+
+--
+-- Name: mapdata_accesspermission_sso_grant_id_425b2515; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermission_sso_grant_id_425b2515 ON public.mapdata_accesspermission USING btree (sso_grant_id);
+
+
+--
+-- Name: mapdata_accesspermission_token_id_e3647d7b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermission_token_id_e3647d7b ON public.mapdata_accesspermission USING btree (token_id);
+
+
+--
+-- Name: mapdata_accesspermission_user_id_0160fe04; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermission_user_id_0160fe04 ON public.mapdata_accesspermission USING btree (user_id);
+
+
+--
+-- Name: mapdata_accesspermissionss_access_restriction_group_i_960b8494; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermissionss_access_restriction_group_i_960b8494 ON public.mapdata_accesspermissionssogrant USING btree (access_restriction_group_id);
+
+
+--
+-- Name: mapdata_accesspermissionssogrant_access_restriction_id_d94eb926; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermissionssogrant_access_restriction_id_d94eb926 ON public.mapdata_accesspermissionssogrant USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_accesspermissiontoken_author_id_4ae5d792; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermissiontoken_author_id_4ae5d792 ON public.mapdata_accesspermissiontoken USING btree (author_id);
+
+
+--
+-- Name: mapdata_accesspermissiontoken_can_grant_9d37516f; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermissiontoken_can_grant_9d37516f ON public.mapdata_accesspermissiontoken USING btree (can_grant);
+
+
+--
+-- Name: mapdata_accesspermissiontoken_redeemed_d5cc5d44; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermissiontoken_redeemed_d5cc5d44 ON public.mapdata_accesspermissiontoken USING btree (redeemed);
+
+
+--
+-- Name: mapdata_accesspermissiontoken_unlimited_2f438422; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermissiontoken_unlimited_2f438422 ON public.mapdata_accesspermissiontoken USING btree (unlimited);
+
+
+--
+-- Name: mapdata_accesspermissiontoken_valid_until_beec34ec; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accesspermissiontoken_valid_until_beec34ec ON public.mapdata_accesspermissiontoken USING btree (valid_until);
+
+
+--
+-- Name: mapdata_accessrestriction__accessrestrictiongroup_id_fcb1eea5; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accessrestriction__accessrestrictiongroup_id_fcb1eea5 ON public.mapdata_accessrestriction_groups USING btree (accessrestrictiongroup_id);
+
+
+--
+-- Name: mapdata_accessrestriction_groups_accessrestriction_id_c6318580; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_accessrestriction_groups_accessrestriction_id_c6318580 ON public.mapdata_accessrestriction_groups USING btree (accessrestriction_id);
+
+
+--
+-- Name: mapdata_altitudearea_level_id_b1320e34; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_altitudearea_level_id_b1320e34 ON public.mapdata_altitudearea USING btree (level_id);
+
+
+--
+-- Name: mapdata_altitudemarker_groundaltitude_id_13c52aa1; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_altitudemarker_groundaltitude_id_13c52aa1 ON public.mapdata_altitudemarker USING btree (groundaltitude_id);
+
+
+--
+-- Name: mapdata_altitudemarker_space_id_cea7cf47; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_altitudemarker_space_id_cea7cf47 ON public.mapdata_altitudemarker USING btree (space_id);
+
+
+--
+-- Name: mapdata_area_access_restriction_id_a549eda1; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_area_access_restriction_id_a549eda1 ON public.mapdata_area USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_area_groups_area_id_68ea7b48; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_area_groups_area_id_68ea7b48 ON public.mapdata_area_groups USING btree (area_id);
+
+
+--
+-- Name: mapdata_area_groups_locationgroup_id_8cc32166; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_area_groups_locationgroup_id_8cc32166 ON public.mapdata_area_groups USING btree (locationgroup_id);
+
+
+--
+-- Name: mapdata_area_label_settings_id_7ccf6168; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_area_label_settings_id_7ccf6168 ON public.mapdata_area USING btree (label_settings_id);
+
+
+--
+-- Name: mapdata_area_space_id_c0461a4c; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_area_space_id_c0461a4c ON public.mapdata_area USING btree (space_id);
+
+
+--
+-- Name: mapdata_building_level_id_0e322f7a; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_building_level_id_0e322f7a ON public.mapdata_building USING btree (level_id);
+
+
+--
+-- Name: mapdata_column_access_restriction_id_e09dd08f; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_column_access_restriction_id_e09dd08f ON public.mapdata_column USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_column_space_id_4f64c0d4; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_column_space_id_4f64c0d4 ON public.mapdata_column USING btree (space_id);
+
+
+--
+-- Name: mapdata_crossdescription_origin_space_id_88f8ef46; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_crossdescription_origin_space_id_88f8ef46 ON public.mapdata_crossdescription USING btree (origin_space_id);
+
+
+--
+-- Name: mapdata_crossdescription_space_id_5b117c2d; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_crossdescription_space_id_5b117c2d ON public.mapdata_crossdescription USING btree (space_id);
+
+
+--
+-- Name: mapdata_crossdescription_target_space_id_8f82991b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_crossdescription_target_space_id_8f82991b ON public.mapdata_crossdescription USING btree (target_space_id);
+
+
+--
+-- Name: mapdata_door_access_restriction_id_2bfd4081; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_door_access_restriction_id_2bfd4081 ON public.mapdata_door USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_door_level_id_f6d894b2; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_door_level_id_f6d894b2 ON public.mapdata_door USING btree (level_id);
+
+
+--
+-- Name: mapdata_dynamiclocation_access_restriction_id_aadb0fd6; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_dynamiclocation_access_restriction_id_aadb0fd6 ON public.mapdata_dynamiclocation USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_dynamiclocation_groups_dynamiclocation_id_e7af76aa; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_dynamiclocation_groups_dynamiclocation_id_e7af76aa ON public.mapdata_dynamiclocation_groups USING btree (dynamiclocation_id);
+
+
+--
+-- Name: mapdata_dynamiclocation_groups_locationgroup_id_3212157f; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_dynamiclocation_groups_locationgroup_id_3212157f ON public.mapdata_dynamiclocation_groups USING btree (locationgroup_id);
+
+
+--
+-- Name: mapdata_dynamiclocation_label_settings_id_3ae9d026; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_dynamiclocation_label_settings_id_3ae9d026 ON public.mapdata_dynamiclocation USING btree (label_settings_id);
+
+
+--
+-- Name: mapdata_graphedge_access_restriction_id_cccddf9b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_graphedge_access_restriction_id_cccddf9b ON public.mapdata_graphedge USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_graphedge_from_node_id_98a76645; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_graphedge_from_node_id_98a76645 ON public.mapdata_graphedge USING btree (from_node_id);
+
+
+--
+-- Name: mapdata_graphedge_to_node_id_ba97ebb9; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_graphedge_to_node_id_ba97ebb9 ON public.mapdata_graphedge USING btree (to_node_id);
+
+
+--
+-- Name: mapdata_graphedge_waytype_id_2f0d449d; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_graphedge_waytype_id_2f0d449d ON public.mapdata_graphedge USING btree (waytype_id);
+
+
+--
+-- Name: mapdata_graphnode_space_id_6c55bd00; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_graphnode_space_id_6c55bd00 ON public.mapdata_graphnode USING btree (space_id);
+
+
+--
+-- Name: mapdata_groundaltitude_name_cf324830_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_groundaltitude_name_cf324830_like ON public.mapdata_groundaltitude USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_hole_space_id_20336b94; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_hole_space_id_20336b94 ON public.mapdata_hole USING btree (space_id);
+
+
+--
+-- Name: mapdata_leavedescription_space_id_33695534; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_leavedescription_space_id_33695534 ON public.mapdata_leavedescription USING btree (space_id);
+
+
+--
+-- Name: mapdata_leavedescription_target_space_id_31053028; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_leavedescription_target_space_id_31053028 ON public.mapdata_leavedescription USING btree (target_space_id);
+
+
+--
+-- Name: mapdata_level_access_restriction_id_22d67a77; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_level_access_restriction_id_22d67a77 ON public.mapdata_level USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_level_groups_level_id_e60fa7db; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_level_groups_level_id_e60fa7db ON public.mapdata_level_groups USING btree (level_id);
+
+
+--
+-- Name: mapdata_level_groups_locationgroup_id_b712e10d; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_level_groups_locationgroup_id_b712e10d ON public.mapdata_level_groups USING btree (locationgroup_id);
+
+
+--
+-- Name: mapdata_level_label_settings_id_6617bb7b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_level_label_settings_id_6617bb7b ON public.mapdata_level USING btree (label_settings_id);
+
+
+--
+-- Name: mapdata_level_on_top_of_id_10a0cb32; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_level_on_top_of_id_10a0cb32 ON public.mapdata_level USING btree (on_top_of_id);
+
+
+--
+-- Name: mapdata_level_short_label_4b45d051_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_level_short_label_4b45d051_like ON public.mapdata_level USING btree (short_label varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_lineobstacle_group_id_62d35458; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_lineobstacle_group_id_62d35458 ON public.mapdata_lineobstacle USING btree (group_id);
+
+
+--
+-- Name: mapdata_lineobstacle_space_id_b9ab6bf6; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_lineobstacle_space_id_b9ab6bf6 ON public.mapdata_lineobstacle USING btree (space_id);
+
+
+--
+-- Name: mapdata_locationgroup_access_restriction_id_0f7d4828; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroup_access_restriction_id_0f7d4828 ON public.mapdata_locationgroup USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_locationgroup_category_id_96775229; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroup_category_id_96775229 ON public.mapdata_locationgroup USING btree (category_id);
+
+
+--
+-- Name: mapdata_locationgroup_hierarchy_accf714c; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroup_hierarchy_accf714c ON public.mapdata_locationgroup USING btree (hierarchy);
+
+
+--
+-- Name: mapdata_locationgroup_hub_import_type_4926843d_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroup_hub_import_type_4926843d_like ON public.mapdata_locationgroup USING btree (hub_import_type varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_locationgroup_label_settings_id_bc60e3cf; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroup_label_settings_id_bc60e3cf ON public.mapdata_locationgroup USING btree (label_settings_id);
+
+
+--
+-- Name: mapdata_locationgroup_priority_44e13f62; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroup_priority_44e13f62 ON public.mapdata_locationgroup USING btree (priority);
+
+
+--
+-- Name: mapdata_locationgroupcategory_allow_areas_68afeb0a; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroupcategory_allow_areas_68afeb0a ON public.mapdata_locationgroupcategory USING btree (allow_areas);
+
+
+--
+-- Name: mapdata_locationgroupcategory_allow_dynamic_locations_ced914d1; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroupcategory_allow_dynamic_locations_ced914d1 ON public.mapdata_locationgroupcategory USING btree (allow_dynamic_locations);
+
+
+--
+-- Name: mapdata_locationgroupcategory_allow_levels_fcf0f4ee; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroupcategory_allow_levels_fcf0f4ee ON public.mapdata_locationgroupcategory USING btree (allow_levels);
+
+
+--
+-- Name: mapdata_locationgroupcategory_allow_pois_4efc5134; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroupcategory_allow_pois_4efc5134 ON public.mapdata_locationgroupcategory USING btree (allow_pois);
+
+
+--
+-- Name: mapdata_locationgroupcategory_allow_spaces_1085c8dd; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroupcategory_allow_spaces_1085c8dd ON public.mapdata_locationgroupcategory USING btree (allow_spaces);
+
+
+--
+-- Name: mapdata_locationgroupcategory_name_5b0451cf_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroupcategory_name_5b0451cf_like ON public.mapdata_locationgroupcategory USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_locationgroupcategory_priority_a21c67cd; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationgroupcategory_priority_a21c67cd ON public.mapdata_locationgroupcategory USING btree (priority);
+
+
+--
+-- Name: mapdata_locationredirect_target_id_29d1b3d7; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationredirect_target_id_29d1b3d7 ON public.mapdata_locationredirect USING btree (target_id);
+
+
+--
+-- Name: mapdata_locationslug_slug_1c195013_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_locationslug_slug_1c195013_like ON public.mapdata_locationslug USING btree (slug varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_mapupdate_datetime_750ec913; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_mapupdate_datetime_750ec913 ON public.mapdata_mapupdate USING btree (datetime);
+
+
+--
+-- Name: mapdata_mapupdate_user_id_faec6f5a; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_mapupdate_user_id_faec6f5a ON public.mapdata_mapupdate USING btree (user_id);
+
+
+--
+-- Name: mapdata_obstacle_group_id_a59d9b9b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_obstacle_group_id_a59d9b9b ON public.mapdata_obstacle USING btree (group_id);
+
+
+--
+-- Name: mapdata_obstacle_space_id_0aa1260c; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_obstacle_space_id_0aa1260c ON public.mapdata_obstacle USING btree (space_id);
+
+
+--
+-- Name: mapdata_poi_access_restriction_id_a6d0faf9; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_poi_access_restriction_id_a6d0faf9 ON public.mapdata_poi USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_poi_groups_locationgroup_id_46758a1e; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_poi_groups_locationgroup_id_46758a1e ON public.mapdata_poi_groups USING btree (locationgroup_id);
+
+
+--
+-- Name: mapdata_poi_groups_poi_id_a7128a8c; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_poi_groups_poi_id_a7128a8c ON public.mapdata_poi_groups USING btree (poi_id);
+
+
+--
+-- Name: mapdata_poi_label_settings_id_18a6c1cf; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_poi_label_settings_id_18a6c1cf ON public.mapdata_poi USING btree (label_settings_id);
+
+
+--
+-- Name: mapdata_poi_space_id_dcb9f571; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_poi_space_id_dcb9f571 ON public.mapdata_poi USING btree (space_id);
+
+
+--
+-- Name: mapdata_position_owner_id_8ad6b67c; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_position_owner_id_8ad6b67c ON public.mapdata_position USING btree (owner_id);
+
+
+--
+-- Name: mapdata_position_secret_fef1b916_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_position_secret_fef1b916_like ON public.mapdata_position USING btree (secret varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_ramp_space_id_e6f57e61; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_ramp_space_id_e6f57e61 ON public.mapdata_ramp USING btree (space_id);
+
+
+--
+-- Name: mapdata_rangingbeacon_bluetooth_address_20e06b93_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_rangingbeacon_bluetooth_address_20e06b93_like ON public.mapdata_rangingbeacon USING btree (bluetooth_address varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_rangingbeacon_bssid_e2cf3255_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_rangingbeacon_bssid_e2cf3255_like ON public.mapdata_rangingbeacon USING btree (wifi_bssid varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_rangingbeacon_space_id_2c6b1efe; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_rangingbeacon_space_id_2c6b1efe ON public.mapdata_rangingbeacon USING btree (space_id);
+
+
+--
+-- Name: mapdata_rangingbeacon_uwb_address_9d8771d7_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_rangingbeacon_uwb_address_9d8771d7_like ON public.mapdata_rangingbeacon USING btree (uwb_address varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_report_assigned_to_id_fd3a8aab; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_report_assigned_to_id_fd3a8aab ON public.mapdata_report USING btree (assigned_to_id);
+
+
+--
+-- Name: mapdata_report_author_id_1dd5fc14; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_report_author_id_1dd5fc14 ON public.mapdata_report USING btree (author_id);
+
+
+--
+-- Name: mapdata_report_category_b3157148; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_report_category_b3157148 ON public.mapdata_report USING btree (category);
+
+
+--
+-- Name: mapdata_report_category_b3157148_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_report_category_b3157148_like ON public.mapdata_report USING btree (category varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_report_created_groups_locationgroup_id_07a66aea; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_report_created_groups_locationgroup_id_07a66aea ON public.mapdata_report_created_groups USING btree (locationgroup_id);
+
+
+--
+-- Name: mapdata_report_created_groups_report_id_e8da1176; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_report_created_groups_report_id_e8da1176 ON public.mapdata_report_created_groups USING btree (report_id);
+
+
+--
+-- Name: mapdata_report_location_id_a1b9eef3; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_report_location_id_a1b9eef3 ON public.mapdata_report USING btree (location_id);
+
+
+--
+-- Name: mapdata_reportupdate_assigned_to_id_7af867b4; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_reportupdate_assigned_to_id_7af867b4 ON public.mapdata_reportupdate USING btree (assigned_to_id);
+
+
+--
+-- Name: mapdata_reportupdate_author_id_b0e6e04b; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_reportupdate_author_id_b0e6e04b ON public.mapdata_reportupdate USING btree (author_id);
+
+
+--
+-- Name: mapdata_reportupdate_report_id_ac2b4e37; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_reportupdate_report_id_ac2b4e37 ON public.mapdata_reportupdate USING btree (report_id);
+
+
+--
+-- Name: mapdata_source_access_restriction_id_10e0a307; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_source_access_restriction_id_10e0a307 ON public.mapdata_source USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_source_name_626b3547_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_source_name_626b3547_like ON public.mapdata_source USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: mapdata_space_access_restriction_id_c295dd70; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_space_access_restriction_id_c295dd70 ON public.mapdata_space USING btree (access_restriction_id);
+
+
+--
+-- Name: mapdata_space_groups_locationgroup_id_352f0e89; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_space_groups_locationgroup_id_352f0e89 ON public.mapdata_space_groups USING btree (locationgroup_id);
+
+
+--
+-- Name: mapdata_space_groups_space_id_d9bb3827; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_space_groups_space_id_d9bb3827 ON public.mapdata_space_groups USING btree (space_id);
+
+
+--
+-- Name: mapdata_space_label_settings_id_b26b4945; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_space_label_settings_id_b26b4945 ON public.mapdata_space USING btree (label_settings_id);
+
+
+--
+-- Name: mapdata_space_level_id_b635bbeb; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_space_level_id_b635bbeb ON public.mapdata_space USING btree (level_id);
+
+
+--
+-- Name: mapdata_stair_space_id_6dd3ccb0; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_stair_space_id_6dd3ccb0 ON public.mapdata_stair USING btree (space_id);
+
+
+--
+-- Name: mapdata_themelocationgroup_location_group_id_2b664e23; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_themelocationgroup_location_group_id_2b664e23 ON public.mapdata_themelocationgroupbackgroundcolor USING btree (location_group_id);
+
+
+--
+-- Name: mapdata_themelocationgroupbackgroundcolor_theme_id_9baff4da; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_themelocationgroupbackgroundcolor_theme_id_9baff4da ON public.mapdata_themelocationgroupbackgroundcolor USING btree (theme_id);
+
+
+--
+-- Name: mapdata_themeobstaclegroup_obstacle_group_id_6a51b028; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_themeobstaclegroup_obstacle_group_id_6a51b028 ON public.mapdata_themeobstaclegroupbackgroundcolor USING btree (obstacle_group_id);
+
+
+--
+-- Name: mapdata_themeobstaclegroupbackgroundcolor_theme_id_629c5bc7; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_themeobstaclegroupbackgroundcolor_theme_id_629c5bc7 ON public.mapdata_themeobstaclegroupbackgroundcolor USING btree (theme_id);
+
+
+--
+-- Name: mapdata_wifimeasurement_author_id_e4b5352e; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_wifimeasurement_author_id_e4b5352e ON public.mapdata_beaconmeasurement USING btree (author_id);
+
+
+--
+-- Name: mapdata_wifimeasurement_space_id_1d127e47; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mapdata_wifimeasurement_space_id_1d127e47 ON public.mapdata_beaconmeasurement USING btree (space_id);
+
+
+--
+-- Name: mesh_firmwarebuild_chip_f56e2ddf; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_firmwarebuild_chip_f56e2ddf ON public.mesh_firmwarebuild USING btree (chip);
+
+
+--
+-- Name: mesh_firmwarebuild_sha256_hash_627d7144_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_firmwarebuild_sha256_hash_627d7144_like ON public.mesh_firmwarebuild USING btree (sha256_hash varchar_pattern_ops);
+
+
+--
+-- Name: mesh_firmwarebuild_version_id_93e4b318; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_firmwarebuild_version_id_93e4b318 ON public.mesh_firmwarebuild USING btree (version_id);
+
+
+--
+-- Name: mesh_firmwarebuildboard_board_711484ba; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_firmwarebuildboard_board_711484ba ON public.mesh_firmwarebuildboard USING btree (board);
+
+
+--
+-- Name: mesh_firmwarebuildboard_board_711484ba_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_firmwarebuildboard_board_711484ba_like ON public.mesh_firmwarebuildboard USING btree (board varchar_pattern_ops);
+
+
+--
+-- Name: mesh_firmwarebuildboard_build_id_902517a9; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_firmwarebuildboard_build_id_902517a9 ON public.mesh_firmwarebuildboard USING btree (build_id);
+
+
+--
+-- Name: mesh_firmwareversion_uploader_id_30c14fe3; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_firmwareversion_uploader_id_30c14fe3 ON public.mesh_firmwareversion USING btree (uploader_id);
+
+
+--
+-- Name: mesh_firmwareversion_version_5d057b34_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_firmwareversion_version_5d057b34_like ON public.mesh_firmwareversion USING btree (version varchar_pattern_ops);
+
+
+--
+-- Name: mesh_meshnode_address_bbb2a884_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_meshnode_address_bbb2a884_like ON public.mesh_meshnode USING btree (address varchar_pattern_ops);
+
+
+--
+-- Name: mesh_meshnode_uplink_id_cf6b04db; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_meshnode_uplink_id_cf6b04db ON public.mesh_meshnode USING btree (uplink_id);
+
+
+--
+-- Name: mesh_meshnode_upstream_id_c946622a; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_meshnode_upstream_id_c946622a ON public.mesh_meshnode USING btree (upstream_id);
+
+
+--
+-- Name: mesh_meshnode_upstream_id_c946622a_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_meshnode_upstream_id_c946622a_like ON public.mesh_meshnode USING btree (upstream_id varchar_pattern_ops);
+
+
+--
+-- Name: mesh_meshuplink_node_id_e0c94b45; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_meshuplink_node_id_e0c94b45 ON public.mesh_meshuplink USING btree (node_id);
+
+
+--
+-- Name: mesh_meshuplink_node_id_e0c94b45_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_meshuplink_node_id_e0c94b45_like ON public.mesh_meshuplink USING btree (node_id varchar_pattern_ops);
+
+
+--
+-- Name: mesh_nodemessage_datetime_5b8e7dce; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_nodemessage_datetime_5b8e7dce ON public.mesh_nodemessage USING btree (datetime);
+
+
+--
+-- Name: mesh_nodemessage_message_type_17e37336; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_nodemessage_message_type_17e37336 ON public.mesh_nodemessage USING btree (message_type);
+
+
+--
+-- Name: mesh_nodemessage_message_type_17e37336_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_nodemessage_message_type_17e37336_like ON public.mesh_nodemessage USING btree (message_type varchar_pattern_ops);
+
+
+--
+-- Name: mesh_nodemessage_src_node_id_2754ac40; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_nodemessage_src_node_id_2754ac40 ON public.mesh_nodemessage USING btree (src_node_id);
+
+
+--
+-- Name: mesh_nodemessage_src_node_id_2754ac40_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_nodemessage_src_node_id_2754ac40_like ON public.mesh_nodemessage USING btree (src_node_id varchar_pattern_ops);
+
+
+--
+-- Name: mesh_nodemessage_uplink_id_22f38887; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_nodemessage_uplink_id_22f38887 ON public.mesh_nodemessage USING btree (uplink_id);
+
+
+--
+-- Name: mesh_otaupdate_build_id_af114c77; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_otaupdate_build_id_af114c77 ON public.mesh_otaupdate USING btree (build_id);
+
+
+--
+-- Name: mesh_otaupdaterecipient_node_id_0fd5e307; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_otaupdaterecipient_node_id_0fd5e307 ON public.mesh_otaupdaterecipient USING btree (node_id);
+
+
+--
+-- Name: mesh_otaupdaterecipient_node_id_0fd5e307_like; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_otaupdaterecipient_node_id_0fd5e307_like ON public.mesh_otaupdaterecipient USING btree (node_id varchar_pattern_ops);
+
+
+--
+-- Name: mesh_otaupdaterecipient_update_id_95637e8a; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX mesh_otaupdaterecipient_update_id_95637e8a ON public.mesh_otaupdaterecipient USING btree (update_id);
+
+
+--
+-- Name: only_one_active_ota; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX only_one_active_ota ON public.mesh_otaupdaterecipient USING btree (node_id) WHERE ((status)::text = 'running'::text);
+
+
+--
+-- Name: only_one_active_uplink; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE UNIQUE INDEX only_one_active_uplink ON public.mesh_meshuplink USING btree (node_id) WHERE (end_reason IS NULL);
+
+
+--
+-- Name: site_announcement_author_id_136858c5; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX site_announcement_author_id_136858c5 ON public.site_announcement USING btree (author_id);
+
+
+--
+-- Name: api_secret api_secret_user_id_74e5b7a6_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.api_secret
+ ADD CONSTRAINT api_secret_user_id_74e5b7a6_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: api_logintoken api_token_user_id_b646d2e7_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.api_logintoken
+ ADD CONSTRAINT api_token_user_id_b646d2e7_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_group_permissions auth_group_permissio_permission_id_84c5c92e_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_group_permissions
+ ADD CONSTRAINT auth_group_permissio_permission_id_84c5c92e_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_group_permissions auth_group_permissions_group_id_b120cbf9_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_group_permissions
+ ADD CONSTRAINT auth_group_permissions_group_id_b120cbf9_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_permission auth_permission_content_type_id_2f476e4b_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_permission
+ ADD CONSTRAINT auth_permission_content_type_id_2f476e4b_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_groups auth_user_groups_group_id_97559544_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_user_groups
+ ADD CONSTRAINT auth_user_groups_group_id_97559544_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_groups auth_user_groups_user_id_6a12ed8b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_user_groups
+ ADD CONSTRAINT auth_user_groups_user_id_6a12ed8b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_user_permissions auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_user_user_permissions
+ ADD CONSTRAINT auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_user_permissions auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.auth_user_user_permissions
+ ADD CONSTRAINT auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: control_userpermissions_review_group_reports control_userpermissi_locationgroup_id_96a3102b_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userpermissions_review_group_reports
+ ADD CONSTRAINT control_userpermissi_locationgroup_id_96a3102b_fk_mapdata_l FOREIGN KEY (locationgroup_id) REFERENCES public.mapdata_locationgroup(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: control_userpermissions_review_group_reports control_userpermissi_userpermissions_id_3d2fb35b_fk_control_u; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userpermissions_review_group_reports
+ ADD CONSTRAINT control_userpermissi_userpermissions_id_3d2fb35b_fk_control_u FOREIGN KEY (userpermissions_id) REFERENCES public.control_userpermissions(user_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: control_userpermissions control_userpermissions_user_id_6003ff4e_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userpermissions
+ ADD CONSTRAINT control_userpermissions_user_id_6003ff4e_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: control_userspaceaccess control_userspaceacc_space_id_c22914b2_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userspaceaccess
+ ADD CONSTRAINT control_userspaceacc_space_id_c22914b2_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: control_userspaceaccess control_userspaceaccess_user_id_4ad6da16_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.control_userspaceaccess
+ ADD CONSTRAINT control_userspaceaccess_user_id_4ad6da16_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: django_admin_log django_admin_log_content_type_id_c4bce8eb_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.django_admin_log
+ ADD CONSTRAINT django_admin_log_content_type_id_c4bce8eb_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: django_admin_log django_admin_log_user_id_c564eba6_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.django_admin_log
+ ADD CONSTRAINT django_admin_log_user_id_c564eba6_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changedobject editor_changedobject_changeset_id_0692bc40_fk_editor_ch; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changedobject
+ ADD CONSTRAINT editor_changedobject_changeset_id_0692bc40_fk_editor_ch FOREIGN KEY (changeset_id) REFERENCES public.editor_changeset(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changedobject editor_changedobject_content_type_id_aa981231_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changedobject
+ ADD CONSTRAINT editor_changedobject_content_type_id_aa981231_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changeset editor_changeset_assigned_to_id_3afcfbb7_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_assigned_to_id_3afcfbb7_fk_auth_user_id FOREIGN KEY (assigned_to_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changeset editor_changeset_author_id_f4bf3c7f_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_author_id_f4bf3c7f_fk_auth_user_id FOREIGN KEY (author_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changeset editor_changeset_last_change_id_5be51ccf_fk_editor_ch; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_last_change_id_5be51ccf_fk_editor_ch FOREIGN KEY (last_change_id) REFERENCES public.editor_changesetupdate(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changeset editor_changeset_last_cleaned_with_id_d5214743_fk_mapdata_m; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_last_cleaned_with_id_d5214743_fk_mapdata_m FOREIGN KEY (last_cleaned_with_id) REFERENCES public.mapdata_mapupdate(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changeset editor_changeset_last_state_update_id_292a8530_fk_editor_ch; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_last_state_update_id_292a8530_fk_editor_ch FOREIGN KEY (last_state_update_id) REFERENCES public.editor_changesetupdate(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changeset editor_changeset_last_update_id_e0d77297_fk_editor_ch; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_last_update_id_e0d77297_fk_editor_ch FOREIGN KEY (last_update_id) REFERENCES public.editor_changesetupdate(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changeset editor_changeset_map_update_id_aaecae3b_fk_mapdata_mapupdate_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changeset
+ ADD CONSTRAINT editor_changeset_map_update_id_aaecae3b_fk_mapdata_mapupdate_id FOREIGN KEY (map_update_id) REFERENCES public.mapdata_mapupdate(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changesetupdate editor_changesetupda_changeset_id_aedbc5fb_fk_editor_ch; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changesetupdate
+ ADD CONSTRAINT editor_changesetupda_changeset_id_aedbc5fb_fk_editor_ch FOREIGN KEY (changeset_id) REFERENCES public.editor_changeset(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changesetupdate editor_changesetupdate_assigned_to_id_373deb2a_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changesetupdate
+ ADD CONSTRAINT editor_changesetupdate_assigned_to_id_373deb2a_fk_auth_user_id FOREIGN KEY (assigned_to_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: editor_changesetupdate editor_changesetupdate_user_id_cd2202c2_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.editor_changesetupdate
+ ADD CONSTRAINT editor_changesetupdate_user_id_cd2202c2_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermission mapdata_accesspermis_access_restriction_g_194c451d_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermission
+ ADD CONSTRAINT mapdata_accesspermis_access_restriction_g_194c451d_fk_mapdata_a FOREIGN KEY (access_restriction_group_id) REFERENCES public.mapdata_accessrestrictiongroup(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermissionssogrant mapdata_accesspermis_access_restriction_g_960b8494_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermissionssogrant
+ ADD CONSTRAINT mapdata_accesspermis_access_restriction_g_960b8494_fk_mapdata_a FOREIGN KEY (access_restriction_group_id) REFERENCES public.mapdata_accessrestrictiongroup(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermission mapdata_accesspermis_access_restriction_i_6cf436d8_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermission
+ ADD CONSTRAINT mapdata_accesspermis_access_restriction_i_6cf436d8_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermissionssogrant mapdata_accesspermis_access_restriction_i_d94eb926_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermissionssogrant
+ ADD CONSTRAINT mapdata_accesspermis_access_restriction_i_d94eb926_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermissiontoken mapdata_accesspermis_author_id_4ae5d792_fk_auth_user; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermissiontoken
+ ADD CONSTRAINT mapdata_accesspermis_author_id_4ae5d792_fk_auth_user FOREIGN KEY (author_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermission mapdata_accesspermis_sso_grant_id_425b2515_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermission
+ ADD CONSTRAINT mapdata_accesspermis_sso_grant_id_425b2515_fk_mapdata_a FOREIGN KEY (sso_grant_id) REFERENCES public.mapdata_accesspermissionssogrant(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermission mapdata_accesspermis_token_id_e3647d7b_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermission
+ ADD CONSTRAINT mapdata_accesspermis_token_id_e3647d7b_fk_mapdata_a FOREIGN KEY (token_id) REFERENCES public.mapdata_accesspermissiontoken(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermission mapdata_accesspermission_author_id_f42ef447_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermission
+ ADD CONSTRAINT mapdata_accesspermission_author_id_f42ef447_fk_auth_user_id FOREIGN KEY (author_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accesspermission mapdata_accesspermission_user_id_0160fe04_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accesspermission
+ ADD CONSTRAINT mapdata_accesspermission_user_id_0160fe04_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accessrestriction_groups mapdata_accessrestri_accessrestriction_id_c6318580_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accessrestriction_groups
+ ADD CONSTRAINT mapdata_accessrestri_accessrestriction_id_c6318580_fk_mapdata_a FOREIGN KEY (accessrestriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_accessrestriction_groups mapdata_accessrestri_accessrestrictiongro_fcb1eea5_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_accessrestriction_groups
+ ADD CONSTRAINT mapdata_accessrestri_accessrestrictiongro_fcb1eea5_fk_mapdata_a FOREIGN KEY (accessrestrictiongroup_id) REFERENCES public.mapdata_accessrestrictiongroup(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_altitudearea mapdata_altitudearea_level_id_b1320e34_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_altitudearea
+ ADD CONSTRAINT mapdata_altitudearea_level_id_b1320e34_fk_mapdata_l FOREIGN KEY (level_id) REFERENCES public.mapdata_level(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_altitudemarker mapdata_altitudemark_groundaltitude_id_13c52aa1_fk_mapdata_g; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_altitudemarker
+ ADD CONSTRAINT mapdata_altitudemark_groundaltitude_id_13c52aa1_fk_mapdata_g FOREIGN KEY (groundaltitude_id) REFERENCES public.mapdata_groundaltitude(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_altitudemarker mapdata_altitudemark_space_id_cea7cf47_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_altitudemarker
+ ADD CONSTRAINT mapdata_altitudemark_space_id_cea7cf47_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_area mapdata_area_access_restriction_i_a549eda1_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area
+ ADD CONSTRAINT mapdata_area_access_restriction_i_a549eda1_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_area_groups mapdata_area_groups_area_id_68ea7b48_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area_groups
+ ADD CONSTRAINT mapdata_area_groups_area_id_68ea7b48_fk_mapdata_a FOREIGN KEY (area_id) REFERENCES public.mapdata_area(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_area_groups mapdata_area_groups_locationgroup_id_8cc32166_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area_groups
+ ADD CONSTRAINT mapdata_area_groups_locationgroup_id_8cc32166_fk_mapdata_l FOREIGN KEY (locationgroup_id) REFERENCES public.mapdata_locationgroup(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_area mapdata_area_label_settings_id_7ccf6168_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area
+ ADD CONSTRAINT mapdata_area_label_settings_id_7ccf6168_fk_mapdata_l FOREIGN KEY (label_settings_id) REFERENCES public.mapdata_labelsettings(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_area mapdata_area_locationslug_ptr_id_41901eb8_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area
+ ADD CONSTRAINT mapdata_area_locationslug_ptr_id_41901eb8_fk_mapdata_l FOREIGN KEY (locationslug_ptr_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_area mapdata_area_space_id_c0461a4c_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_area
+ ADD CONSTRAINT mapdata_area_space_id_c0461a4c_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_building mapdata_building_level_id_0e322f7a_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_building
+ ADD CONSTRAINT mapdata_building_level_id_0e322f7a_fk_mapdata_l FOREIGN KEY (level_id) REFERENCES public.mapdata_level(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_column mapdata_column_access_restriction_i_e09dd08f_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_column
+ ADD CONSTRAINT mapdata_column_access_restriction_i_e09dd08f_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_column mapdata_column_space_id_4f64c0d4_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_column
+ ADD CONSTRAINT mapdata_column_space_id_4f64c0d4_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_crossdescription mapdata_crossdescrip_origin_space_id_88f8ef46_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_crossdescription
+ ADD CONSTRAINT mapdata_crossdescrip_origin_space_id_88f8ef46_fk_mapdata_s FOREIGN KEY (origin_space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_crossdescription mapdata_crossdescrip_space_id_5b117c2d_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_crossdescription
+ ADD CONSTRAINT mapdata_crossdescrip_space_id_5b117c2d_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_crossdescription mapdata_crossdescrip_target_space_id_8f82991b_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_crossdescription
+ ADD CONSTRAINT mapdata_crossdescrip_target_space_id_8f82991b_fk_mapdata_s FOREIGN KEY (target_space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_door mapdata_door_access_restriction_i_2bfd4081_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_door
+ ADD CONSTRAINT mapdata_door_access_restriction_i_2bfd4081_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_door mapdata_door_level_id_f6d894b2_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_door
+ ADD CONSTRAINT mapdata_door_level_id_f6d894b2_fk_mapdata_l FOREIGN KEY (level_id) REFERENCES public.mapdata_level(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_dynamiclocation mapdata_dynamiclocat_access_restriction_i_aadb0fd6_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_dynamiclocation
+ ADD CONSTRAINT mapdata_dynamiclocat_access_restriction_i_aadb0fd6_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_dynamiclocation_groups mapdata_dynamiclocat_dynamiclocation_id_e7af76aa_fk_mapdata_d; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_dynamiclocation_groups
+ ADD CONSTRAINT mapdata_dynamiclocat_dynamiclocation_id_e7af76aa_fk_mapdata_d FOREIGN KEY (dynamiclocation_id) REFERENCES public.mapdata_dynamiclocation(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_dynamiclocation mapdata_dynamiclocat_label_settings_id_3ae9d026_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_dynamiclocation
+ ADD CONSTRAINT mapdata_dynamiclocat_label_settings_id_3ae9d026_fk_mapdata_l FOREIGN KEY (label_settings_id) REFERENCES public.mapdata_labelsettings(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_dynamiclocation_groups mapdata_dynamiclocat_locationgroup_id_3212157f_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_dynamiclocation_groups
+ ADD CONSTRAINT mapdata_dynamiclocat_locationgroup_id_3212157f_fk_mapdata_l FOREIGN KEY (locationgroup_id) REFERENCES public.mapdata_locationgroup(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_dynamiclocation mapdata_dynamiclocat_locationslug_ptr_id_d18ebf9f_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_dynamiclocation
+ ADD CONSTRAINT mapdata_dynamiclocat_locationslug_ptr_id_d18ebf9f_fk_mapdata_l FOREIGN KEY (locationslug_ptr_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_graphedge mapdata_graphedge_access_restriction_i_cccddf9b_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_graphedge
+ ADD CONSTRAINT mapdata_graphedge_access_restriction_i_cccddf9b_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_graphedge mapdata_graphedge_from_node_id_98a76645_fk_mapdata_graphnode_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_graphedge
+ ADD CONSTRAINT mapdata_graphedge_from_node_id_98a76645_fk_mapdata_graphnode_id FOREIGN KEY (from_node_id) REFERENCES public.mapdata_graphnode(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_graphedge mapdata_graphedge_to_node_id_ba97ebb9_fk_mapdata_graphnode_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_graphedge
+ ADD CONSTRAINT mapdata_graphedge_to_node_id_ba97ebb9_fk_mapdata_graphnode_id FOREIGN KEY (to_node_id) REFERENCES public.mapdata_graphnode(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_graphedge mapdata_graphedge_waytype_id_2f0d449d_fk_mapdata_waytype_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_graphedge
+ ADD CONSTRAINT mapdata_graphedge_waytype_id_2f0d449d_fk_mapdata_waytype_id FOREIGN KEY (waytype_id) REFERENCES public.mapdata_waytype(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_graphnode mapdata_graphnode_space_id_6c55bd00_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_graphnode
+ ADD CONSTRAINT mapdata_graphnode_space_id_6c55bd00_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_hole mapdata_hole_space_id_20336b94_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_hole
+ ADD CONSTRAINT mapdata_hole_space_id_20336b94_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_leavedescription mapdata_leavedescrip_space_id_33695534_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_leavedescription
+ ADD CONSTRAINT mapdata_leavedescrip_space_id_33695534_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_leavedescription mapdata_leavedescrip_target_space_id_31053028_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_leavedescription
+ ADD CONSTRAINT mapdata_leavedescrip_target_space_id_31053028_fk_mapdata_s FOREIGN KEY (target_space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_level mapdata_level_access_restriction_i_22d67a77_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level
+ ADD CONSTRAINT mapdata_level_access_restriction_i_22d67a77_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_level_groups mapdata_level_groups_level_id_e60fa7db_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level_groups
+ ADD CONSTRAINT mapdata_level_groups_level_id_e60fa7db_fk_mapdata_l FOREIGN KEY (level_id) REFERENCES public.mapdata_level(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_level_groups mapdata_level_groups_locationgroup_id_b712e10d_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level_groups
+ ADD CONSTRAINT mapdata_level_groups_locationgroup_id_b712e10d_fk_mapdata_l FOREIGN KEY (locationgroup_id) REFERENCES public.mapdata_locationgroup(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_level mapdata_level_label_settings_id_6617bb7b_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level
+ ADD CONSTRAINT mapdata_level_label_settings_id_6617bb7b_fk_mapdata_l FOREIGN KEY (label_settings_id) REFERENCES public.mapdata_labelsettings(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_level mapdata_level_locationslug_ptr_id_ba5858ed_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level
+ ADD CONSTRAINT mapdata_level_locationslug_ptr_id_ba5858ed_fk_mapdata_l FOREIGN KEY (locationslug_ptr_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_level mapdata_level_on_top_of_id_10a0cb32_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_level
+ ADD CONSTRAINT mapdata_level_on_top_of_id_10a0cb32_fk_mapdata_l FOREIGN KEY (on_top_of_id) REFERENCES public.mapdata_level(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_lineobstacle mapdata_lineobstacle_group_id_62d35458_fk_mapdata_o; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_lineobstacle
+ ADD CONSTRAINT mapdata_lineobstacle_group_id_62d35458_fk_mapdata_o FOREIGN KEY (group_id) REFERENCES public.mapdata_obstaclegroup(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_lineobstacle mapdata_lineobstacle_space_id_b9ab6bf6_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_lineobstacle
+ ADD CONSTRAINT mapdata_lineobstacle_space_id_b9ab6bf6_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_locationgroup mapdata_locationgrou_access_restriction_i_0f7d4828_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationgroup
+ ADD CONSTRAINT mapdata_locationgrou_access_restriction_i_0f7d4828_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_locationgroup mapdata_locationgrou_category_id_96775229_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationgroup
+ ADD CONSTRAINT mapdata_locationgrou_category_id_96775229_fk_mapdata_l FOREIGN KEY (category_id) REFERENCES public.mapdata_locationgroupcategory(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_locationgroup mapdata_locationgrou_label_settings_id_bc60e3cf_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationgroup
+ ADD CONSTRAINT mapdata_locationgrou_label_settings_id_bc60e3cf_fk_mapdata_l FOREIGN KEY (label_settings_id) REFERENCES public.mapdata_labelsettings(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_locationgroup mapdata_locationgrou_locationslug_ptr_id_5f0e4ebb_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationgroup
+ ADD CONSTRAINT mapdata_locationgrou_locationslug_ptr_id_5f0e4ebb_fk_mapdata_l FOREIGN KEY (locationslug_ptr_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_locationredirect mapdata_locationredi_locationslug_ptr_id_81cda0c9_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationredirect
+ ADD CONSTRAINT mapdata_locationredi_locationslug_ptr_id_81cda0c9_fk_mapdata_l FOREIGN KEY (locationslug_ptr_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_locationredirect mapdata_locationredi_target_id_29d1b3d7_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_locationredirect
+ ADD CONSTRAINT mapdata_locationredi_target_id_29d1b3d7_fk_mapdata_l FOREIGN KEY (target_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_obstacle mapdata_obstacle_group_id_a59d9b9b_fk_mapdata_obstaclegroup_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_obstacle
+ ADD CONSTRAINT mapdata_obstacle_group_id_a59d9b9b_fk_mapdata_obstaclegroup_id FOREIGN KEY (group_id) REFERENCES public.mapdata_obstaclegroup(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_obstacle mapdata_obstacle_space_id_0aa1260c_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_obstacle
+ ADD CONSTRAINT mapdata_obstacle_space_id_0aa1260c_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_poi mapdata_poi_access_restriction_i_a6d0faf9_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi
+ ADD CONSTRAINT mapdata_poi_access_restriction_i_a6d0faf9_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_poi_groups mapdata_poi_groups_locationgroup_id_46758a1e_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi_groups
+ ADD CONSTRAINT mapdata_poi_groups_locationgroup_id_46758a1e_fk_mapdata_l FOREIGN KEY (locationgroup_id) REFERENCES public.mapdata_locationgroup(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_poi_groups mapdata_poi_groups_poi_id_a7128a8c_fk_mapdata_p; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi_groups
+ ADD CONSTRAINT mapdata_poi_groups_poi_id_a7128a8c_fk_mapdata_p FOREIGN KEY (poi_id) REFERENCES public.mapdata_poi(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_poi mapdata_poi_label_settings_id_18a6c1cf_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi
+ ADD CONSTRAINT mapdata_poi_label_settings_id_18a6c1cf_fk_mapdata_l FOREIGN KEY (label_settings_id) REFERENCES public.mapdata_labelsettings(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_poi mapdata_poi_locationslug_ptr_id_22498ca8_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi
+ ADD CONSTRAINT mapdata_poi_locationslug_ptr_id_22498ca8_fk_mapdata_l FOREIGN KEY (locationslug_ptr_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_poi mapdata_poi_space_id_dcb9f571_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_poi
+ ADD CONSTRAINT mapdata_poi_space_id_dcb9f571_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_position mapdata_position_owner_id_8ad6b67c_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_position
+ ADD CONSTRAINT mapdata_position_owner_id_8ad6b67c_fk_auth_user_id FOREIGN KEY (owner_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_ramp mapdata_ramp_space_id_e6f57e61_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_ramp
+ ADD CONSTRAINT mapdata_ramp_space_id_e6f57e61_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_rangingbeacon mapdata_rangingbeaco_space_id_2c6b1efe_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_rangingbeacon
+ ADD CONSTRAINT mapdata_rangingbeaco_space_id_2c6b1efe_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_report mapdata_report_assigned_to_id_fd3a8aab_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_report
+ ADD CONSTRAINT mapdata_report_assigned_to_id_fd3a8aab_fk_auth_user_id FOREIGN KEY (assigned_to_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_report mapdata_report_author_id_1dd5fc14_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_report
+ ADD CONSTRAINT mapdata_report_author_id_1dd5fc14_fk_auth_user_id FOREIGN KEY (author_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_report_created_groups mapdata_report_creat_locationgroup_id_07a66aea_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_report_created_groups
+ ADD CONSTRAINT mapdata_report_creat_locationgroup_id_07a66aea_fk_mapdata_l FOREIGN KEY (locationgroup_id) REFERENCES public.mapdata_locationgroup(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_report_created_groups mapdata_report_creat_report_id_e8da1176_fk_mapdata_r; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_report_created_groups
+ ADD CONSTRAINT mapdata_report_creat_report_id_e8da1176_fk_mapdata_r FOREIGN KEY (report_id) REFERENCES public.mapdata_report(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_report mapdata_report_location_id_a1b9eef3_fk_mapdata_locationslug_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_report
+ ADD CONSTRAINT mapdata_report_location_id_a1b9eef3_fk_mapdata_locationslug_id FOREIGN KEY (location_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_reportupdate mapdata_reportupdate_assigned_to_id_7af867b4_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_reportupdate
+ ADD CONSTRAINT mapdata_reportupdate_assigned_to_id_7af867b4_fk_auth_user_id FOREIGN KEY (assigned_to_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_reportupdate mapdata_reportupdate_author_id_b0e6e04b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_reportupdate
+ ADD CONSTRAINT mapdata_reportupdate_author_id_b0e6e04b_fk_auth_user_id FOREIGN KEY (author_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_reportupdate mapdata_reportupdate_report_id_ac2b4e37_fk_mapdata_report_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_reportupdate
+ ADD CONSTRAINT mapdata_reportupdate_report_id_ac2b4e37_fk_mapdata_report_id FOREIGN KEY (report_id) REFERENCES public.mapdata_report(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_source mapdata_source_access_restriction_i_10e0a307_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_source
+ ADD CONSTRAINT mapdata_source_access_restriction_i_10e0a307_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_space mapdata_space_access_restriction_i_c295dd70_fk_mapdata_a; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space
+ ADD CONSTRAINT mapdata_space_access_restriction_i_c295dd70_fk_mapdata_a FOREIGN KEY (access_restriction_id) REFERENCES public.mapdata_accessrestriction(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_space_groups mapdata_space_groups_locationgroup_id_352f0e89_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space_groups
+ ADD CONSTRAINT mapdata_space_groups_locationgroup_id_352f0e89_fk_mapdata_l FOREIGN KEY (locationgroup_id) REFERENCES public.mapdata_locationgroup(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_space_groups mapdata_space_groups_space_id_d9bb3827_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space_groups
+ ADD CONSTRAINT mapdata_space_groups_space_id_d9bb3827_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_space mapdata_space_label_settings_id_b26b4945_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space
+ ADD CONSTRAINT mapdata_space_label_settings_id_b26b4945_fk_mapdata_l FOREIGN KEY (label_settings_id) REFERENCES public.mapdata_labelsettings(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_space mapdata_space_level_id_b635bbeb_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space
+ ADD CONSTRAINT mapdata_space_level_id_b635bbeb_fk_mapdata_l FOREIGN KEY (level_id) REFERENCES public.mapdata_level(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_space mapdata_space_locationslug_ptr_id_228ac56f_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_space
+ ADD CONSTRAINT mapdata_space_locationslug_ptr_id_228ac56f_fk_mapdata_l FOREIGN KEY (locationslug_ptr_id) REFERENCES public.mapdata_locationslug(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_stair mapdata_stair_space_id_6dd3ccb0_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_stair
+ ADD CONSTRAINT mapdata_stair_space_id_6dd3ccb0_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_themelocationgroupbackgroundcolor mapdata_themelocatio_location_group_id_2b664e23_fk_mapdata_l; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_themelocationgroupbackgroundcolor
+ ADD CONSTRAINT mapdata_themelocatio_location_group_id_2b664e23_fk_mapdata_l FOREIGN KEY (location_group_id) REFERENCES public.mapdata_locationgroup(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_themelocationgroupbackgroundcolor mapdata_themelocatio_theme_id_9baff4da_fk_mapdata_t; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_themelocationgroupbackgroundcolor
+ ADD CONSTRAINT mapdata_themelocatio_theme_id_9baff4da_fk_mapdata_t FOREIGN KEY (theme_id) REFERENCES public.mapdata_theme(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_themeobstaclegroupbackgroundcolor mapdata_themeobstacl_obstacle_group_id_6a51b028_fk_mapdata_o; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_themeobstaclegroupbackgroundcolor
+ ADD CONSTRAINT mapdata_themeobstacl_obstacle_group_id_6a51b028_fk_mapdata_o FOREIGN KEY (obstacle_group_id) REFERENCES public.mapdata_obstaclegroup(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_themeobstaclegroupbackgroundcolor mapdata_themeobstacl_theme_id_629c5bc7_fk_mapdata_t; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_themeobstaclegroupbackgroundcolor
+ ADD CONSTRAINT mapdata_themeobstacl_theme_id_629c5bc7_fk_mapdata_t FOREIGN KEY (theme_id) REFERENCES public.mapdata_theme(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_beaconmeasurement mapdata_wifimeasurem_space_id_1d127e47_fk_mapdata_s; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_beaconmeasurement
+ ADD CONSTRAINT mapdata_wifimeasurem_space_id_1d127e47_fk_mapdata_s FOREIGN KEY (space_id) REFERENCES public.mapdata_space(locationslug_ptr_id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mapdata_beaconmeasurement mapdata_wifimeasurement_author_id_e4b5352e_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mapdata_beaconmeasurement
+ ADD CONSTRAINT mapdata_wifimeasurement_author_id_e4b5352e_fk_auth_user_id FOREIGN KEY (author_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_firmwarebuild mesh_firmwarebuild_version_id_93e4b318_fk_mesh_firm; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwarebuild
+ ADD CONSTRAINT mesh_firmwarebuild_version_id_93e4b318_fk_mesh_firm FOREIGN KEY (version_id) REFERENCES public.mesh_firmwareversion(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_firmwarebuildboard mesh_firmwarebuildbo_build_id_902517a9_fk_mesh_firm; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwarebuildboard
+ ADD CONSTRAINT mesh_firmwarebuildbo_build_id_902517a9_fk_mesh_firm FOREIGN KEY (build_id) REFERENCES public.mesh_firmwarebuild(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_firmwareversion mesh_firmwareversion_uploader_id_30c14fe3_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_firmwareversion
+ ADD CONSTRAINT mesh_firmwareversion_uploader_id_30c14fe3_fk_auth_user_id FOREIGN KEY (uploader_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_meshnode mesh_meshnode_uplink_id_cf6b04db_fk_mesh_meshuplink_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_meshnode
+ ADD CONSTRAINT mesh_meshnode_uplink_id_cf6b04db_fk_mesh_meshuplink_id FOREIGN KEY (uplink_id) REFERENCES public.mesh_meshuplink(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_meshnode mesh_meshnode_upstream_id_c946622a_fk_mesh_meshnode_address; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_meshnode
+ ADD CONSTRAINT mesh_meshnode_upstream_id_c946622a_fk_mesh_meshnode_address FOREIGN KEY (upstream_id) REFERENCES public.mesh_meshnode(address) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_meshuplink mesh_meshuplink_node_id_e0c94b45_fk_mesh_meshnode_address; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_meshuplink
+ ADD CONSTRAINT mesh_meshuplink_node_id_e0c94b45_fk_mesh_meshnode_address FOREIGN KEY (node_id) REFERENCES public.mesh_meshnode(address) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_nodemessage mesh_nodemessage_src_node_id_2754ac40_fk_mesh_meshnode_address; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_nodemessage
+ ADD CONSTRAINT mesh_nodemessage_src_node_id_2754ac40_fk_mesh_meshnode_address FOREIGN KEY (src_node_id) REFERENCES public.mesh_meshnode(address) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_nodemessage mesh_nodemessage_uplink_id_22f38887_fk_mesh_meshuplink_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_nodemessage
+ ADD CONSTRAINT mesh_nodemessage_uplink_id_22f38887_fk_mesh_meshuplink_id FOREIGN KEY (uplink_id) REFERENCES public.mesh_meshuplink(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_otaupdate mesh_otaupdate_build_id_af114c77_fk_mesh_firmwarebuild_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_otaupdate
+ ADD CONSTRAINT mesh_otaupdate_build_id_af114c77_fk_mesh_firmwarebuild_id FOREIGN KEY (build_id) REFERENCES public.mesh_firmwarebuild(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_otaupdaterecipient mesh_otaupdaterecipi_node_id_0fd5e307_fk_mesh_mesh; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_otaupdaterecipient
+ ADD CONSTRAINT mesh_otaupdaterecipi_node_id_0fd5e307_fk_mesh_mesh FOREIGN KEY (node_id) REFERENCES public.mesh_meshnode(address) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: mesh_otaupdaterecipient mesh_otaupdaterecipient_update_id_95637e8a_fk_mesh_otaupdate_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.mesh_otaupdaterecipient
+ ADD CONSTRAINT mesh_otaupdaterecipient_update_id_95637e8a_fk_mesh_otaupdate_id FOREIGN KEY (update_id) REFERENCES public.mesh_otaupdate(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: site_announcement site_announcement_author_id_136858c5_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.site_announcement
+ ADD CONSTRAINT site_announcement_author_id_136858c5_fk_auth_user_id FOREIGN KEY (author_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- PostgreSQL database dump complete
+--
+
diff --git a/local_run/db/restore.sh b/local_run/db/restore.sh
new file mode 100644
index 00000000..d20c7931
--- /dev/null
+++ b/local_run/db/restore.sh
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2024 NOI Techpark
+#
+# SPDX-License-Identifier: CC0-1.0
+
+#/bin/bash
+cat dump.sql | docker exec -i c3nav-postgres-1 su - postgres -c 'psql c3nav'
\ No newline at end of file
diff --git a/local_run/manage_noi_sensors.sh b/local_run/manage_noi_sensors.sh
new file mode 100755
index 00000000..d6c23b0a
--- /dev/null
+++ b/local_run/manage_noi_sensors.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+# Helper script to manage NOI sensors
+# Usage: ./manage_noi_sensors.sh [add|list|scrape] [args...]
+
+COMPOSE_EXEC="docker compose exec -T c3nav-core python manage.py"
+
+case "$1" in
+ "add")
+ if [ $# -lt 6 ]; then
+ echo "Usage: $0 add "
+ echo "Example: $0 add 'NOI:MyNewSensor' 'My New Sensor' 300.0 250.0 floor1"
+ exit 1
+ fi
+ SENSOR_ID="$2"
+ NAME="$3"
+ X="$4"
+ Y="$5"
+ LEVEL="$6"
+ echo "Adding sensor: $NAME ($SENSOR_ID) at ($X, $Y) on $LEVEL"
+ $COMPOSE_EXEC add_sensor --overlay-id 1 --sensor-id "$SENSOR_ID" --name "$NAME" --x "$X" --y "$Y" --level "$LEVEL"
+ ;;
+ "list")
+ echo "Listing all sensors in overlay 1:"
+ $COMPOSE_EXEC list_sensors --overlay-id 1
+ ;;
+ "scrape")
+ echo "Scraping data for all sensors in overlay 1:"
+ $COMPOSE_EXEC manage_sensors --scrape-data --overlay-id 1
+ ;;
+ *)
+ echo "NOI Sensor Management Helper"
+ echo "Usage: $0 [add|list|scrape] [args...]"
+ echo ""
+ echo "Commands:"
+ echo " add - Add a new sensor"
+ echo " list - List all sensors"
+ echo " scrape - Scrape data for all sensors"
+ echo ""
+ echo "Examples:"
+ echo " $0 add 'NOI:NewSensor' 'My Sensor' 300.0 250.0 floor1"
+ echo " $0 list"
+ echo " $0 scrape"
+ exit 1
+ ;;
+esac
diff --git a/local_run/up.sh b/local_run/up.sh
new file mode 100755
index 00000000..a1c3e0e6
--- /dev/null
+++ b/local_run/up.sh
@@ -0,0 +1,117 @@
+
+docker compose down --remove-orphans
+rm -rf data || true
+cp -r data-copy data
+chmod 777 data
+docker volume rm c3nav-postgres c3nav-redis || true
+docker volume create c3nav-postgres
+docker volume create c3nav-redis
+
+# Start only postgres and redis first (no build since we pre-built)
+docker compose up -d postgres redis
+
+sleep 10
+cat ./db/auth_user.sql | docker exec -i local_run-postgres-1 su - postgres -c 'psql c3nav'
+
+
+# Load database dump before starting the main app
+cat ./db/dump.sql | docker exec -i local_run-postgres-1 su - postgres -c 'psql c3nav' > /dev/null
+
+# Fix geometry access permissions for anonymous users
+ docker exec -i local_run-postgres-1 psql -U postgres -d c3nav -c "UPDATE mapdata_space SET base_mapdata_accessible = true;"
+
+# Now start the main services (no build since we pre-built)
+docker compose up --build -d
+echo "Creating Django superuser"
+# docker exec -i local_run-c3nav-core-1 sh -c "echo \"from django.contrib.auth.models import User; [0].set_password('admin'); User.objects.get(username='admin').save()\" | /app/env/bin/python manage.py shell"
+ docker exec -i local_run-c3nav-core-1 sh -c "echo \"
+from django.contrib.auth.models import User
+user = User.objects.get_or_create(username='admin', defaults={'email': 'admin@example.com', 'is_superuser': True, 'is_staff': True})[0]
+user.set_password('admin')
+user.save()
+print('Password set successfully for user:', user.username)
+\" | /app/env/bin/python manage.py shell"
+
+
+# Apply migrations after loading dump
+echo "Applying migrations..."
+ docker exec -i local_run-c3nav-core-1 sh -c '/app/env/bin/python manage.py migrate --fake'
+echo "Creating new migrations for sensor_data field..."
+ docker exec -i local_run-c3nav-core-1 sh -c '/app/env/bin/python manage.py makemigrations mapdata'
+echo "Applying new migrations..."
+ docker exec -i local_run-c3nav-core-1 sh -c '/app/env/bin/python manage.py migrate mapdata'
+
+ docker compose ps -a
+ docker exec -i local_run-c3nav-core-1 sh -c '/app/env/bin/python manage.py clearmapcache --include-history --include-geometries && /app/env/bin/python manage.py collectstatic -l --no-input'
+
+# Fix NumPy compatibility issue
+echo "Applying NumPy compatibility fix..."
+ docker exec -i local_run-c3nav-core-1 sed -i 's/np\.fromstring(/np.frombuffer(/g' /app/c3nav/mapdata/utils/cache/indexed.py
+
+# Process map updates to rebuild cache with NumPy fix
+echo "Processing map updates to rebuild cache..."
+ docker exec -i local_run-c3nav-core-1 sh -c '/app/env/bin/python manage.py processupdates'
+
+# Setup sensor overlays
+echo "Setting up sensor overlays..."
+docker compose exec -T c3nav-core python manage.py shell << 'EOF'
+from c3nav.mapdata.models import DataOverlay, DataOverlayFeature
+
+# Clear old overlays to avoid conflicts
+DataOverlay.objects.filter(titles__en__icontains='Environmental').delete()
+DataOverlay.objects.filter(titles__en__icontains='Temperature').delete()
+
+# Create single NOI environmental sensor overlay with multiple sensors configuration
+overlay = DataOverlay.objects.create(
+ titles={'en': 'NOI Environmental Sensors'},
+ description='Real-time CO2 and temperature sensors from NOI Open Data Hub - displays current readings with values and units',
+ default_geomtype='point',
+ data_source_url='https://mobility.api.opendatahub.com/v2/flat/IndoorStation/*/latest',
+ sensor_config={
+ 'data_path': 'data',
+ 'mappings': {
+ 'id_field': 'scode',
+ 'name_field': 'sname',
+ 'x_field': 'scoordinate.x',
+ 'y_field': 'scoordinate.y'
+ },
+ 'sensors': [
+ {
+ 'id': 'NOI:FreeSoftwareLab-Temperature',
+ 'coordinates': {'x': 291.0, 'y': 241.0},
+ 'level': 'floor1'
+ },
+ {
+ 'id': 'NOI:NOI-A1-Floor1-CO2',
+ 'coordinates': {'x': 270.0, 'y': 241.0},
+ 'level': 'floor1'
+ }
+ ]
+ },
+ update_interval=120
+)
+print(f"NOI sensor overlay created with ID {overlay.id}")
+
+EOF
+
+# Scrape real NOI sensor data
+echo "Scraping NOI sensor data..."
+# Give the database a moment to settle after overlay creation
+sleep 2
+
+# Scrape the overlay data (should automatically discover all configured sensors)
+echo "Scraping overlay data (ID: 1)..."
+docker compose exec -T c3nav-core python manage.py manage_sensors --scrape-data --overlay-id 1
+
+# List all sensors to verify setup
+echo "Listing all sensors in the overlay..."
+docker compose exec -T c3nav-core python manage.py list_sensors --overlay-id 1
+
+echo "Sensor setup completed!"
+echo ""
+echo "To add a new sensor to the overlay, use:"
+echo "docker compose exec -T c3nav-core python manage.py add_sensor --overlay-id 1 --sensor-id 'NOI:YourSensorID' --name 'Your Sensor Name' --x 300.0 --y 250.0 --level floor1"
+echo ""
+echo "To scrape data for all sensors:"
+echo "docker compose exec -T c3nav-core python manage.py manage_sensors --scrape-data --overlay-id 1"
+
diff --git a/src/c3nav/editor/api/endpoints.py b/src/c3nav/editor/api/endpoints.py
index 10734aae..dcc1576e 100644
--- a/src/c3nav/editor/api/endpoints.py
+++ b/src/c3nav/editor/api/endpoints.py
@@ -8,7 +8,7 @@ from c3nav.api.exceptions import API404
from c3nav.editor.api.base import api_etag_with_update_cache_key
from c3nav.editor.api.geometries import get_level_geometries_result, get_space_geometries_result
from c3nav.editor.api.schemas import EditorGeometriesElemSchema, EditorID, GeometryStylesSchema, UpdateCacheKey, \
- EditorBeaconsLookup
+ EditorBeaconsLookup, CloneFloorRequestSchema, CloneFloorResponseSchema
from c3nav.editor.views.base import editor_etag_func, accesses_mapdata
from c3nav.mapdata.api.base import api_etag
from c3nav.mapdata.models import Source
@@ -145,4 +145,29 @@ def beacons_lookup(request):
return EditorBeaconsLookup(
wifi_beacons=wifi_beacons,
ibeacons=ibeacons,
- ).model_dump(mode="json")
\ No newline at end of file
+ ).model_dump(mode="json")
+
+
+@editor_api_router.post('/clone-floor/', summary="clone floor items",
+ description="clone selected map items from one floor to another",
+ response={200: CloneFloorResponseSchema, **API404.dict(),
+ **auth_permission_responses},
+ openapi_extra={"security": [{"APIKeyAuth": ["editor_access", "write"]}]})
+def clone_floor(request, data: CloneFloorRequestSchema):
+ from c3nav.editor.utils import clone_level_items
+
+ try:
+ result = clone_level_items(
+ request=request,
+ source_level_id=data.source_level_id,
+ target_level_id=data.target_level_id,
+ items=data.items,
+ keep_sync=data.keep_sync
+ )
+ return result
+ except Exception as e:
+ return CloneFloorResponseSchema(
+ success=False,
+ cloned_items=[],
+ message=f"Error cloning items: {str(e)}"
+ ).model_dump(mode="json")
\ No newline at end of file
diff --git a/src/c3nav/editor/api/schemas.py b/src/c3nav/editor/api/schemas.py
index e7abacc0..ace9bbcf 100644
--- a/src/c3nav/editor/api/schemas.py
+++ b/src/c3nav/editor/api/schemas.py
@@ -124,4 +124,28 @@ class EditorBeaconsLookup(BaseSchema):
EditorBeacon
]
]
- ]
\ No newline at end of file
+ ]
+
+
+class CloneItemSchema(BaseSchema):
+ item_type: Annotated[str, APIField(title="geometry type (e.g., 'area', 'obstacle', 'space')")]
+ item_id: EditorID
+
+
+class CloneFloorRequestSchema(BaseSchema):
+ source_level_id: EditorID
+ target_level_id: EditorID
+ items: list[CloneItemSchema]
+ keep_sync: Annotated[bool, APIField(default=False, title="keep cloned items synchronized across levels")]
+
+
+class ClonedItemResult(BaseSchema):
+ item_type: str
+ original_id: EditorID
+ cloned_id: EditorID
+
+
+class CloneFloorResponseSchema(BaseSchema):
+ success: bool
+ cloned_items: list[ClonedItemResult]
+ message: str
\ No newline at end of file
diff --git a/src/c3nav/editor/static/editor/css/editor.scss b/src/c3nav/editor/static/editor/css/editor.scss
index 14602875..93705fff 100644
--- a/src/c3nav/editor/static/editor/css/editor.scss
+++ b/src/c3nav/editor/static/editor/css/editor.scss
@@ -567,56 +567,83 @@ label.theme-color-label {
.leaflet-control-snap {
background-color: white;
border-radius: 4px;
- border: 2px solid rgba(0,0,0,0.2);
background-clip: padding-box;
-
- .snap-toggle {
+
+
+ /* watchout for leaflet.css trying to override a:hover with a different height/width */
+ a.snap-toggle, a.snap-to-original-toggle, a.snap-to-90-toggle {
+ background-size: 30px 30px;
display: block;
- width: 30px;
+ width: 30px;
height: 30px;
- line-height: 26px;
- text-align: center;
- text-decoration: none;
- font-size: 18px;
background-color: white;
color: #666;
- border-radius: 2px;
- transition: all 0.2s ease;
-
+ border-radius: 4px;
+
&:hover {
- background-color: #f4f4f4;
- color: #333;
+ background-color: #a7a7a7;
}
-
+
&.active {
- background-color: #4CAF50;
+ background-color: #b0ecb2;
+ border: 2px solid green;
color: white;
&:hover {
- background-color: #45a049;
+ background-color: #7ac27d;
}
}
}
+
+ a.snap-to-90-toggle {
+ background-color: yellow !important;
+ }
+
+ /* icons */
+ a.snap-toggle {
+ background-image: url("/static/img/snap-to-edges-icon.svg");
+ }
+ a.snap-to-original-toggle {
+ background-image: url("/static/img/snap-to-original-icon.svg");
+ }
+ a.snap-to-90-toggle {
+ background-image: url("/static/img/snap-to-90-icon.svg");
+ }
}
/* Snap indicator styles */
.snap-indicator {
+ transform: scale(11.6);
+ transform-box: fill-box;
+ transform-origin: center;
z-index: 1000;
pointer-events: none;
- animation: snap-pulse 1s infinite;
}
-@keyframes snap-pulse {
- 0% {
- opacity: 0.8;
- transform: scale(1);
- }
- 50% {
- opacity: 1;
- transform: scale(1.2);
- }
- 100% {
- opacity: 0.8;
- transform: scale(1);
- }
-}
\ No newline at end of file
+
+/* Edge highlight styles for snap-to-edges */
+.edge-highlight {
+ z-index: 999;
+ pointer-events: none;
+}
+
+.original-edge-highlight {
+ z-index: 1000;
+ pointer-events: none;
+}
+
+/* Right-angle snap indicators */
+.right-angle-reference {
+ z-index: 998;
+ pointer-events: none;
+}
+
+.right-angle-line {
+ z-index: 1001;
+ pointer-events: none;
+}
+
+.right-angle-square {
+ z-index: 1002;
+ pointer-events: none;
+}
diff --git a/src/c3nav/editor/static/editor/js/editor.js b/src/c3nav/editor/static/editor/js/editor.js
index bf87f13d..4533f057 100644
--- a/src/c3nav/editor/static/editor/js/editor.js
+++ b/src/c3nav/editor/static/editor/js/editor.js
@@ -163,6 +163,7 @@ editor = {
},
_sidebar_unload: function () {
// unload the sidebar. called on sidebar_get and form submit.
+ editor._hide_original_geometry();
editor._level_control.disable();
editor._sublevel_control.disable();
@@ -182,9 +183,11 @@ editor = {
$('#sidebar').addClass('loading').find('.content').html('');
editor._cancel_editing();
-
+
// Clear snap indicators when unloading
editor._clear_snap_indicators();
+
+ editor._destroy_staircase_editing();
},
_fill_level_control: function (level_control, level_list, geometryURLs) {
var levels = level_list.find('a');
@@ -499,6 +502,10 @@ editor = {
// listener for form submits in the sidebar.
e.preventDefault();
if (editor._loading_geometry || $(this).is('.creation-lock') || $(this).is('.scan-lock')) return;
+ if (editor._staircase_layer) {
+ editor._staircase_submit($(this))
+ return
+ }
var data = $(this).serialize();
var btn = $(this).data('btn');
if (btn !== undefined && btn !== null) {
@@ -940,6 +947,12 @@ editor = {
editor._geometries_layer.addTo(editor.map);
editor._highlight_layer.addTo(editor.map);
editor._loading_geometry = false;
+
+ // Initialize clone floor functionality now that geometries are loaded
+ if (editor.cloneFloor && editor.cloneFloor.init) {
+ editor.cloneFloor.init();
+ }
+
if (editor._bounds_layer === null && editor._geometries_layer.getLayers().length) editor._bounds_layer = editor._geometries_layer;
if (editor._next_zoom && editor._bounds_layer !== null) {
editor.map.flyToBounds((editor._bounds_layer.getBounds !== undefined) ? editor._bounds_layer.getBounds() : [editor._bounds_layer.getLatLng(), editor._bounds_layer.getLatLng()], {
@@ -1365,7 +1378,7 @@ editor = {
} else if (mapitem_type) {
// creating a new geometry, already drawn but form was rejected
options = editor._get_mapitem_type_style(mapitem_type);
- if (mapitem_type === 'area') {
+ if (mapitem_type === 'area' || mapitem_type === 'staircase') {
options.fillOpacity = 0.5;
}
}
@@ -1385,7 +1398,7 @@ editor = {
} else if (form.is('[data-new]')) {
// create new geometry
options = editor._get_mapitem_type_style(mapitem_type);
- if (mapitem_type === 'area') {
+ if (mapitem_type === 'area' || mapitem_type === 'staircase') {
options.fillOpacity = 0.5;
}
form.addClass('creation-lock');
@@ -1434,6 +1447,10 @@ editor = {
}
startGeomEditing(selected_geomtype);
}
+
+ if (mapitem_type === 'staircase') {
+ editor._setup_staircase_editing()
+ }
}
},
_cancel_editing: function () {
@@ -1448,7 +1465,7 @@ editor = {
editor._editing_layer.disableEdit();
editor._editing_layer = null;
}
-
+
// Clear snap indicators when canceling editing
editor._clear_snap_indicators();
},
@@ -1664,104 +1681,239 @@ editor = {
},
// Snap-to-edges functionality
- _snap_enabled: true,
- _snap_distance: 15, // pixels
- _snap_to_base_map: false,
+ _snap_enabled: false,
+ _snap_to_original_enabled: false,
+ _snap_to_90_enable: false,
+ _snap_distance: 30, // pixels
+ _extension_area_multiplier: 4, // Extension area = snap_distance * this multiplier
+ _snap_to_base_map: false,
_snap_indicator: null,
_snap_candidates: [],
init_snap_to_edges: function() {
- // Initialize snap indicator layer
editor._snap_indicator = L.layerGroup().addTo(editor.map);
-
- // Override existing drawing event handlers to include snapping
+
editor.map.on('editable:drawing:move', editor._handle_snap_during_draw);
editor.map.on('editable:vertex:drag', editor._handle_snap_during_vertex_drag);
-
- // Add snap toggle to UI
+
editor._add_snap_controls();
},
+
_add_snap_controls: function() {
- // Add snap toggle control to the map
+
+ // add snap to edge toggle
var snapControl = L.control({position: 'topleft'});
snapControl.onAdd = function() {
var container = L.DomUtil.create('div', 'leaflet-bar leaflet-control leaflet-control-snap');
- container.innerHTML = '⚡';
-
+ container.innerHTML = '';
+
L.DomEvent.on(container.querySelector('.snap-toggle'), 'click', function(e) {
e.preventDefault();
editor._toggle_snap();
});
-
+
L.DomEvent.disableClickPropagation(container);
return container;
};
snapControl.addTo(editor.map);
+
+ // add snap to "original edited geometry" toggle
+ var snapToOriginalControl = L.control({position: 'topleft'});
+ snapToOriginalControl.onAdd = function() {
+ var container = L.DomUtil.create('div', 'leaflet-bar leaflet-control leaflet-control-snap');
+ container.innerHTML = '';
+
+ L.DomEvent.on(container.querySelector('.snap-to-original-toggle'), 'click', function(e) {
+ e.preventDefault();
+ editor._toggle_snap_to_original();
+ });
+
+ L.DomEvent.disableClickPropagation(container);
+ return container;
+ };
+ snapToOriginalControl.addTo(editor.map);
+
+ // add snap to 90° toggle
+ var snapTo90Control = L.control({position: 'topleft'});
+ snapTo90Control.onAdd = function() {
+ var container = L.DomUtil.create('div', 'leaflet-bar leaflet-control leaflet-control-snap');
+ container.innerHTML = '';
+
+ L.DomEvent.on(container.querySelector('.snap-to-90-toggle'), 'click', function(e) {
+ e.preventDefault();
+ editor._toggle_snap_to_90();
+ });
+
+ L.DomEvent.disableClickPropagation(container);
+ return container;
+ };
+ snapTo90Control.addTo(editor.map);
},
+
_toggle_snap: function() {
editor._snap_enabled = !editor._snap_enabled;
var toggle = document.querySelector('.snap-toggle');
if (toggle) {
toggle.classList.toggle('active', editor._snap_enabled);
}
- // Clear any existing snap indicators
+
editor._clear_snap_indicators();
},
+ _toggle_snap_to_original: function() {
+ editor._snap_to_original_enabled = !editor._snap_to_original_enabled;
+ var toggle = document.querySelector('.snap-to-original-toggle');
+ if (toggle) {
+ toggle.classList.toggle('active', editor._snap_to_original_enabled);
+ }
+
+ // Show/hide original geometry
+ if (editor._snap_to_original_enabled) {
+ editor._show_original_geometry();
+ } else {
+ editor._hide_original_geometry();
+ }
+ },
+
+ _toggle_snap_to_90: function() {
+ editor._snap_to_90_enabled = !editor._snap_to_90_enabled;
+ var toggle = document.querySelector('.snap-to-90-toggle');
+ if (toggle) {
+ toggle.classList.toggle('active', editor._snap_to_90_enabled);
+ }
+
+ editor._clear_snap_indicators();
+ },
+
+ _show_original_geometry: function() {
+ if (!editor._bounds_layer || editor._original_geometry_layer) return;
+
+ // Create a copy of the original geometry with different styling
+ var originalFeature = editor._bounds_layer.feature;
+ if (!originalFeature) return;
+
+ editor._original_geometry_layer = L.geoJSON(originalFeature, {
+ style: function() {
+ return {
+ stroke: true,
+ color: '#888888',
+ weight: 2,
+ opacity: 0.7,
+ fill: false,
+ dashArray: '5, 5',
+ className: 'original-geometry'
+ };
+ },
+ pointToLayer: editor._point_to_layer
+ });
+
+ editor._original_geometry_layer.addTo(editor.map);
+ },
+
+ _hide_original_geometry: function() {
+ if (editor._original_geometry_layer) {
+ editor.map.removeLayer(editor._original_geometry_layer);
+ editor._original_geometry_layer = null;
+ }
+ },
+
_handle_snap_during_draw: function(e) {
if (!editor._snap_enabled || !editor._creating) return;
-
+
var snapped = editor._find_and_apply_snap(e.latlng);
if (snapped) {
e.latlng.lat = snapped.lat;
e.latlng.lng = snapped.lng;
}
-
- // Apply existing rounding
+
+ // Apply rounding
e.latlng.lat = Math.round(e.latlng.lat * 100) / 100;
e.latlng.lng = Math.round(e.latlng.lng * 100) / 100;
},
_handle_snap_during_vertex_drag: function(e) {
if (!editor._snap_enabled) return;
-
+
var snapped = editor._find_and_apply_snap(e.latlng);
if (snapped) {
e.latlng.lat = snapped.lat;
e.latlng.lng = snapped.lng;
}
-
- // Apply existing rounding and other constraints
+
e.vertex.setLatLng([Math.round(e.latlng.lat * 100) / 100, Math.round(e.latlng.lng * 100) / 100]);
},
_find_and_apply_snap: function(latlng) {
if (!editor._geometries_layer) return null;
-
+
var mapPoint = editor.map.latLngToContainerPoint(latlng);
var candidates = [];
-
- // Find snap candidates from existing geometries
- editor._geometries_layer.eachLayer(function(layer) {
- if (layer === editor._editing_layer) return; // Don't snap to self
-
- var snapPoint = editor._find_closest_point_on_geometry(layer, latlng, mapPoint);
- if (snapPoint && snapPoint.distance < editor._snap_distance) {
- candidates.push(snapPoint);
+
+ // ADD THIS: check for 90° axis snap
+ if (editor._snap_to_90_enabled) {
+ var ninetyDegreeSnap = editor._find_90_degree_snap(latlng, mapPoint);
+ if (ninetyDegreeSnap) {
+ candidates.push(ninetyDegreeSnap);
}
+ }
+
+ // find snap candidates from existing geometries with area-limited infinite extension
+ editor._geometries_layer.eachLayer(function(layer) {
+ if (layer === editor._bounds_layer && !editor._snap_to_original_enabled) return; //don't snap to original if not toggled.
+ if (layer === editor._editing_layer) return; // don't snap to self
+
+ // check if layer is within the area limit for infinite extension
+ var allowInfiniteExtension = editor._is_layer_in_extension_area(layer, latlng, mapPoint);
+
+ var snapPoints = editor._find_closest_point_on_geometry(layer, latlng, mapPoint, allowInfiniteExtension);
+ candidates.push(...snapPoints);
});
-
- // Find the closest candidate
+
+ // check current editing shape with infinite extension enabled
+ if (editor._current_editing_shape) {
+ var currentShapeSnapPoints = editor._find_closest_point_on_geometry(
+ editor._current_editing_shape, latlng, mapPoint, true // Always enable infinite extension for current shape
+ );
+ candidates.push(...currentShapeSnapPoints);
+ }
+
+ // find closest candidate
if (candidates.length > 0) {
candidates.sort(function(a, b) { return a.distance - b.distance; });
var best = candidates[0];
-
- // Show snap indicator
- editor._show_snap_indicator(best.latlng);
-
+
+ // see if we can snap to a corner, i.e. an edge intersection
+ if (candidates.length >= 2 && candidates[0].isLine && candidates[1].isLine) {
+ console.log(candidates.slice(0,2))
+ var inters = editor._intersect_infinite(
+ [candidates[0].edgeStart, candidates[0].edgeEnd],
+ [candidates[1].edgeStart, candidates[1].edgeEnd]
+ )
+ if (inters) {
+ intersMap = editor.map.latLngToContainerPoint(inters)
+ var distance = Math.sqrt(
+ Math.pow(intersMap.x - mapPoint.x, 2) +
+ Math.pow(intersMap.y - mapPoint.y, 2)
+ )
+ if (distance < editor._snap_distance) {
+ best = {
+ latlng: inters,
+ distance: distance,
+ referenceVertex: inters,
+ }
+ }
+ }
+ }
+
+
+ // show snap indicator with edge highlighting
+ editor._show_snap_indicator(best.latlng, best);
+
return best.latlng;
} else {
editor._clear_snap_indicators();
@@ -1769,116 +1921,595 @@ editor = {
}
},
- _find_closest_point_on_geometry: function(layer, targetLatLng, targetMapPoint) {
- if (!layer.getLatLngs) return null;
-
- var closestPoint = null;
- var closestDistance = Infinity;
-
+ _intersect_infinite: function(line1, line2) {
+ const [p1, p2] = line1;
+ const [p3, p4] = line2;
+
+ const x1 = p1.lng, y1 = p1.lat;
+ const x2 = p2.lng, y2 = p2.lat;
+ const x3 = p3.lng, y3 = p3.lat;
+ const x4 = p4.lng, y4 = p4.lat;
+
+ const denom = (x1-x2)*(y3-y4) - (y1-y2)*(x3-x4);
+ if (denom === 0) return null; // parallel
+
+ const px = ((x1*y2 - y1*x2)*(x3-x4) - (x1-x2)*(x3*y4 - y3*x4)) / denom;
+ const py = ((x1*y2 - y1*x2)*(y3-y4) - (y1-y2)*(x3*y4 - y3*x4)) / denom;
+
+ return {lng: px, lat: py};
+ },
+
+ _is_layer_in_extension_area: function(layer, targetLatLng, targetMapPoint) {
+ if (!layer.getLatLngs) return false;
+
+ // skip circles entirely for infinite extension
+ if (layer instanceof L.Circle || layer instanceof L.CircleMarker) {
+ return false;
+ }
+
try {
var coordinates = [];
-
- // Handle different geometry types
+
+ if (layer instanceof L.Polygon || layer instanceof L.Polyline) {
+ coordinates = layer.getLatLngs();
+ if (coordinates[0] && Array.isArray(coordinates[0])) {
+ coordinates = coordinates[0];
+ }
+ }
+
+ if (coordinates.length === 0) return false;
+
+ // extension area radius (in pixels)
+ var extensionAreaRadius = editor._snap_distance * editor._extension_area_multiplier;
+
+ // check if any vertex of the layer is within the extension area
+ for (var i = 0; i < coordinates.length; i++) {
+ var vertexMapPoint = editor.map.latLngToContainerPoint(coordinates[i]);
+ var distanceToVertex = vertexMapPoint.distanceTo(targetMapPoint);
+
+ if (distanceToVertex <= extensionAreaRadius) {
+ return true;
+ }
+ }
+
+ for (var i = 0; i < coordinates.length; i++) {
+ var p1 = coordinates[i];
+ var p2 = coordinates[(i + 1) % coordinates.length];
+
+ if (editor._edge_intersects_circle(p1, p2, targetLatLng, targetMapPoint, extensionAreaRadius)) {
+ return true;
+ }
+ }
+
+ return false;
+
+ } catch (error) {
+ return false;
+ }
+ },
+
+ _edge_intersects_circle: function(edgeStart, edgeEnd, circleCenter, circleCenterMap, radius) {
+ var p1Map = editor.map.latLngToContainerPoint(edgeStart);
+ var p2Map = editor.map.latLngToContainerPoint(edgeEnd);
+
+ // find closest point on edge to circle center
+ var dx = p2Map.x - p1Map.x;
+ var dy = p2Map.y - p1Map.y;
+ var length = Math.sqrt(dx * dx + dy * dy);
+
+ if (length === 0) {
+ return p1Map.distanceTo(circleCenterMap) <= radius;
+ }
+
+ var t = Math.max(0, Math.min(1,
+ ((circleCenterMap.x - p1Map.x) * dx + (circleCenterMap.y - p1Map.y) * dy) / (length * length)
+ ));
+
+ var closestPoint = {
+ x: p1Map.x + t * dx,
+ y: p1Map.y + t * dy
+ };
+
+ var distance = Math.sqrt(
+ Math.pow(closestPoint.x - circleCenterMap.x, 2) +
+ Math.pow(closestPoint.y - circleCenterMap.y, 2)
+ );
+
+ return distance <= radius;
+ },
+
+ _find_90_degree_snap: function(targetLatLng, targetMapPoint) {
+ if (!editor._geometries_layer) return null;
+
+ var bestSnap = null;
+ var closestDistance = Infinity;
+
+ // Check all geometry vertices for 90° alignment
+ editor._geometries_layer.eachLayer(function(layer) {
+ if (layer === editor._editing_layer) return; // don't snap to self
+ if (!layer.getLatLngs) return;
+
+ try {
+ var coordinates = [];
+ if (layer instanceof L.Polygon || layer instanceof L.Polyline) {
+ coordinates = layer.getLatLngs();
+ if (coordinates[0] && Array.isArray(coordinates[0])) {
+ coordinates = coordinates[0];
+ }
+ } else if (layer instanceof L.Circle || layer instanceof L.CircleMarker) {
+ coordinates = [layer.getLatLng()];
+ }
+
+ // Check each vertex for 90° alignment
+ for (var i = 0; i < coordinates.length; i++) {
+ var vertex = coordinates[i];
+ var vertexMapPoint = editor.map.latLngToContainerPoint(vertex);
+
+ // Calculate horizontal and vertical snap points
+ var horizontalSnap = {
+ x: targetMapPoint.x,
+ y: vertexMapPoint.y
+ };
+ var verticalSnap = {
+ x: vertexMapPoint.x,
+ y: targetMapPoint.y
+ };
+
+ // Check horizontal alignment
+ var horizontalDistance = Math.abs(targetMapPoint.y - vertexMapPoint.y);
+ if (horizontalDistance < editor._snap_distance) {
+ var horizontalLatLng = editor.map.containerPointToLatLng(horizontalSnap);
+ var totalDistance = targetMapPoint.distanceTo(horizontalSnap);
+
+ if (totalDistance < closestDistance && totalDistance < editor._snap_distance) {
+ closestDistance = totalDistance;
+ bestSnap = {
+ latlng: horizontalLatLng,
+ distance: totalDistance,
+ snapType: 'horizontal',
+ referenceVertex: vertex,
+ isRightAngle: false,
+ is90Degree: true
+ };
+ }
+ }
+
+ // Check vertical alignment
+ var verticalDistance = Math.abs(targetMapPoint.x - vertexMapPoint.x);
+ if (verticalDistance < editor._snap_distance) {
+ var verticalLatLng = editor.map.containerPointToLatLng(verticalSnap);
+ var totalDistance = targetMapPoint.distanceTo(verticalSnap);
+
+ if (totalDistance < closestDistance && totalDistance < editor._snap_distance) {
+ closestDistance = totalDistance;
+ bestSnap = {
+ latlng: verticalLatLng,
+ distance: totalDistance,
+ snapType: 'vertical',
+ referenceVertex: vertex,
+ isRightAngle: false,
+ is90Degree: true
+ };
+ }
+ }
+ }
+ } catch (error) {
+ // Skip problematic layers
+ }
+ });
+
+ return bestSnap;
+ },
+
+ _find_closest_point_on_geometry: function(layer, targetLatLng, targetMapPoint, allowInfiniteExtension) {
+ if (!layer.getLatLngs) return [];
+
+ var closestPoints = [];
+
+ try {
+ var coordinates = [];
+
+ // handle different geometry types
if (layer instanceof L.Polygon || layer instanceof L.Polyline) {
coordinates = layer.getLatLngs();
if (coordinates[0] && Array.isArray(coordinates[0])) {
coordinates = coordinates[0]; // Handle polygon with holes
}
} else if (layer instanceof L.Circle || layer instanceof L.CircleMarker) {
- // For circles, snap to center
var center = layer.getLatLng();
var centerMapPoint = editor.map.latLngToContainerPoint(center);
var distance = centerMapPoint.distanceTo(targetMapPoint);
if (distance < editor._snap_distance) {
- return {
+ return [{
latlng: center,
- distance: distance
- };
+ distance: distance,
+ edgeStart: center,
+ edgeEnd: center,
+ isInfiniteExtension: false,
+ isRightAngle: false
+ }];
}
- return null;
+ return [];
}
-
- // Check each edge of the geometry
+
+ // check each edge of the geometry
for (var i = 0; i < coordinates.length; i++) {
+
var p1 = coordinates[i];
var p2 = coordinates[(i + 1) % coordinates.length];
-
- var snapPoint = editor._find_closest_point_on_edge(p1, p2, targetLatLng, targetMapPoint);
- if (snapPoint && snapPoint.distance < closestDistance) {
- closestDistance = snapPoint.distance;
- closestPoint = snapPoint;
+
+ var snapPoint = editor._find_closest_point_on_edge(p1, p2, targetLatLng, targetMapPoint, allowInfiniteExtension);
+ if (snapPoint && snapPoint.distance < editor._snap_distance) {
+ closestPoints.push(snapPoint);
}
}
-
+
} catch (error) {
- // Silently handle geometry access errors
- return null;
+ return [];
}
-
- return closestPoint;
+
+ return closestPoints;
},
- _find_closest_point_on_edge: function(p1, p2, targetLatLng, targetMapPoint) {
+ _find_closest_point_on_edge: function(p1, p2, targetLatLng, targetMapPoint, allowInfiniteExtension) {
var p1Map = editor.map.latLngToContainerPoint(p1);
var p2Map = editor.map.latLngToContainerPoint(p2);
-
- // Find closest point on line segment
+
+ // find closest point on line (infinite or segment based on allowInfiniteExtension)
var dx = p2Map.x - p1Map.x;
var dy = p2Map.y - p1Map.y;
var length = Math.sqrt(dx * dx + dy * dy);
-
+
if (length === 0) {
- // Points are the same, snap to the point
+ // points are the same, snap to the point
var distance = p1Map.distanceTo(targetMapPoint);
return {
latlng: p1,
- distance: distance
+ distance: distance,
+ edgeStart: p1,
+ edgeEnd: p2,
+ isLine: true,
+ isInfiniteExtension: false,
+ isRightAngle: false
};
}
-
- // Calculate parameter t for closest point on line
+
+ // calculate parameter t for closest point on line
var t = ((targetMapPoint.x - p1Map.x) * dx + (targetMapPoint.y - p1Map.y) * dy) / (length * length);
- t = Math.max(0, Math.min(1, t)); // Clamp to line segment
-
- // Calculate closest point
+
+ // clamp t based on allowInfiniteExtension
+ var originalT = t;
+ if (!allowInfiniteExtension) {
+ t = Math.max(0, Math.min(1, t)); // Clamp to line segment
+ }
+
+ // calculate closest point
var closestMapPoint = {
x: p1Map.x + t * dx,
y: p1Map.y + t * dy
};
-
+
var distance = Math.sqrt(
- Math.pow(closestMapPoint.x - targetMapPoint.x, 2) +
+ Math.pow(closestMapPoint.x - targetMapPoint.x, 2) +
Math.pow(closestMapPoint.y - targetMapPoint.y, 2)
);
-
- // Convert back to lat/lng
+
var closestLatLng = editor.map.containerPointToLatLng(closestMapPoint);
-
+
+ // determine if this is an infinite extension
+ var isInfiniteExtension = allowInfiniteExtension && (originalT < 0 || originalT > 1);
+
return {
latlng: closestLatLng,
- distance: distance
+ distance: distance,
+ edgeStart: p1,
+ edgeEnd: p2,
+ isLine: true,
+ isInfiniteExtension: isInfiniteExtension,
+ isRightAngle: false,
+ t: originalT
};
},
-
- _show_snap_indicator: function(latlng) {
+
+ _show_snap_indicator: function(latlng, snapInfo) {
editor._clear_snap_indicators();
-
- var indicator = L.circleMarker(latlng, {
- radius: 4,
- color: '#ff6b6b',
- fillColor: '#ff6b6b',
- fillOpacity: 0.8,
+
+ var size = 0.001;
+ var bounds = [
+ [latlng.lat - size, latlng.lng - size],
+ [latlng.lat + size, latlng.lng + size]
+ ];
+ var indicator = L.rectangle(bounds, {
+ color: '#666',
weight: 2,
- className: 'snap-indicator'
- });
-
+ lineCap: "square",
+ fillOpacity: 1.,
+ className: 'snap-indicator'
+ });
+
editor._snap_indicator.addLayer(indicator);
+
+ if (snapInfo && snapInfo.is90Degree) {
+ editor._show_90_degree_highlight(snapInfo);
+ } else if (snapInfo && snapInfo.edgeStart && snapInfo.edgeEnd) {
+ editor._show_edge_highlight(snapInfo);
+ } else if (snapInfo && snapInfo.referenceVertex) {
+ editor._show_intersect_highlight(snapInfo);
+ }
},
+ _show_intersect_highlight: function(snapInfo) {
+ var referenceVertex = snapInfo.referenceVertex;
+ var snapPoint = snapInfo.latlng;
+
+ // Draw line from reference vertex to snap point
+ var guideLine = L.polyline([referenceVertex, snapPoint], {
+ color: '#00aaff',
+ weight: 2,
+ opacity: 0.8,
+ dashArray: '4, 4',
+ className: '90-degree-guide'
+ });
+ editor._snap_indicator.addLayer(guideLine);
+ },
+
+ _show_90_degree_highlight: function(snapInfo) {
+ var referenceVertex = snapInfo.referenceVertex;
+ var snapPoint = snapInfo.latlng;
+
+ // Draw line from reference vertex to snap point
+ var guideLine = L.polyline([referenceVertex, snapPoint], {
+ color: '#00aaff',
+ weight: 2,
+ opacity: 0.8,
+ dashArray: '4, 4',
+ className: '90-degree-guide'
+ });
+ editor._snap_indicator.addLayer(guideLine);
+
+ // Highlight the reference vertex
+ var vertexHighlight = L.circle(referenceVertex, {
+ radius: 0.05,
+ color: '#00aaff',
+ weight: 2,
+ opacity: 0.8,
+ fillOpacity: 0.3,
+ className: '90-degree-vertex'
+ });
+ editor._snap_indicator.addLayer(vertexHighlight);
+
+ // Add axis indicator
+ var referenceMap = editor.map.latLngToContainerPoint(referenceVertex);
+ var snapMap = editor.map.latLngToContainerPoint(snapPoint);
+
+ var axisText = snapInfo.snapType === 'horizontal' ? '─' : '│';
+ var midPoint = editor.map.containerPointToLatLng({
+ x: (referenceMap.x + snapMap.x) / 2,
+ y: (referenceMap.y + snapMap.y) / 2
+ });
+
+ // Create a small text indicator (you might need to style this with CSS)
+ var textMarker = L.marker(midPoint, {
+ icon: L.divIcon({
+ html: '' + axisText + '
',
+ className: '90-degree-axis-indicator',
+ iconSize: [20, 20],
+ iconAnchor: [10, 10]
+ })
+ });
+ editor._snap_indicator.addLayer(textMarker);
+ },
+
+ _show_edge_highlight: function(snapInfo) {
+ if (!snapInfo.edgeStart || !snapInfo.edgeEnd) return;
+ var startPoint = snapInfo.edgeStart;
+ var endPoint = snapInfo.edgeEnd;
+ var extendedStart, extendedEnd;
+
+ if (snapInfo.isInfiniteExtension && snapInfo.t !== undefined) {
+ // Extend the line significantly beyond the original edge
+ var startMap = editor.map.latLngToContainerPoint(startPoint);
+ var endMap = editor.map.latLngToContainerPoint(endPoint);
+
+ var dx = endMap.x - startMap.x;
+ var dy = endMap.y - startMap.y;
+ var length = Math.sqrt(dx * dx + dy * dy);
+
+ if (length > 0) {
+ dx /= length;
+ dy /= length;
+
+ var extensionDistance = 1000;
+ var extStartMap = {
+ x: startMap.x - dx * extensionDistance,
+ y: startMap.y - dy * extensionDistance
+ };
+ var extEndMap = {
+ x: endMap.x + dx * extensionDistance,
+ y: endMap.y + dy * extensionDistance
+ };
+
+ extendedStart = editor.map.containerPointToLatLng(extStartMap);
+ extendedEnd = editor.map.containerPointToLatLng(extEndMap);
+ } else {
+ extendedStart = startPoint;
+ extendedEnd = endPoint;
+ }
+ } else {
+ extendedStart = startPoint;
+ extendedEnd = endPoint;
+ }
+
+ // create edge highlight line
+ var edgeHighlight = L.polyline([extendedStart, extendedEnd], {
+ color: snapInfo.isInfiniteExtension ? '#ffaa00' : '#66dd66', // Orange for infinite, green for original edge
+ weight: snapInfo.isInfiniteExtension ? 2 : 3,
+ opacity: snapInfo.isInfiniteExtension ? 0.4 : 0.6,
+ dashArray: snapInfo.isInfiniteExtension ? '8, 4' : null, // Dashed for infinite extension
+ className: 'edge-highlight'
+ });
+
+ editor._snap_indicator.addLayer(edgeHighlight);
+
+ // if it's an infinite extension, also show the original edge segment more prominently
+ if (snapInfo.isInfiniteExtension) {
+ var originalEdge = L.polyline([startPoint, endPoint], {
+ color: '#66dd66',
+ weight: 3,
+ opacity: 0.8,
+ className: 'original-edge-highlight'
+ });
+ editor._snap_indicator.addLayer(originalEdge);
+ }
+ },
_clear_snap_indicators: function() {
if (editor._snap_indicator) {
editor._snap_indicator.clearLayers();
}
+ },
+
+ _setup_staircase_editing: function() {
+ editor._staircase_steps_count = 10
+ editor._staircase_layer = L.layerGroup().addTo(editor.map);
+ $('#stairway-steps').on('input', function() {
+ editor._staircase_steps_count = parseInt($(this).val()) || 10;
+ editor._update_staircase_preview();
+ });
+
+ editor.map.on('editable:editing', editor._update_staircase_preview);
+ },
+
+ _destroy_staircase_editing: function() {
+ if (editor._staircase_layer) {
+ editor.map.removeLayer(editor._staircase_layer)
+ editor._staircase_layer = null
+ }
+ editor.map.off('editable:editing', editor._update_staircase_preview)
+ if (editor._current_editing_shape && editor._current_editing_shape.editor) {
+ editor._current_editing_shape.editor.cancelDrawing()
+ editor._current_editing_shape.remove()
+ editor._current_editing_shape = null
+ }
+ },
+
+ _transform_point_for_staircase: function(p, p0, cos_a, sin_a) {
+ return {
+ x: + (p.x - p0.x) * cos_a + (p.y - p0.y) * sin_a + p0.x,
+ y: - (p.x - p0.x) * sin_a + (p.y - p0.y) * cos_a + p0.y,
+ }
+ },
+
+ _transform_for_staircase: function(xs, ys, num_stairs) {
+ let base_length = Math.sqrt((xs[1]-xs[0])**2 + (ys[1]-ys[0])**2)
+ let cos_a = (xs[1] - xs[0]) / base_length
+ let sin_a = (ys[1] - ys[0]) / base_length
+ let p0 = { x: xs[0], y: ys[0] }
+
+ xs = points.map(p => editor._transform_point_for_staircase(p, p0, cos_a, sin_a).x)
+ ys = points.map(p => editor._transform_point_for_staircase(p, p0, cos_a, sin_a).y)
+ n = xs.length
+
+ if (Math.abs(Math.max(...ys) - ys[0]) > Math.abs(Math.min(...ys) - ys[0])) {
+ height = Math.max(...ys) - ys[0]
+ } else {
+ height = Math.min(...ys) - ys[0]
+ }
+
+ lines = [{p1: { x: xs[0], y: ys[0] }, p2: { x: xs[1], y: ys[1] }}]
+ for (i = 1; i < num_stairs; ++i) {
+ // intersect line y=y0+height/num_stairs*i with all transformed (xs,ys)
+ y = ys[0] + height/num_stairs*i
+ inters_xs = []
+ for (j = 0; j < n; ++j) {
+ y1 = ys[j]
+ y2 = ys[(j+1)%n]
+ x1 = xs[j]
+ x2 = xs[(j+1)%n]
+ if ((y1 > y && y2 > y) || (y1 < y && y2 < y)) {
+ continue
+ }
+
+ if (Math.abs(x2 - x1) < 0.0001) {
+ // vertical line, m would be infinity
+ inters_xs.push(x1)
+ continue
+ }
+
+ m = (y2 - y1) / (x2 - x1)
+ q = y2 - m * x2
+ inters_xs.push((y - q) / m)
+ }
+
+ if (inters_xs.length < 2) {
+ continue
+ }
+
+ min_xs = Math.min(...inters_xs)
+ max_xs = Math.max(...inters_xs)
+ lines.push({p1: {x: min_xs-2, y: y}, p2: {x: max_xs+2, y: y}})
+ }
+
+ lines = lines.map(l => ({
+ p1: editor._transform_point_for_staircase(l.p1, p0, cos_a, -sin_a),
+ p2: editor._transform_point_for_staircase(l.p2, p0, cos_a, -sin_a),
+ }))
+
+ return lines
+ },
+
+ _get_staircase_lines: function() {
+ if (!editor._current_editing_shape || !editor._current_editing_shape._parts) {
+ return []
+ }
+ points = editor._current_editing_shape._parts[0] || []
+ if (points.length < 3) {
+ return []
+ }
+
+ xs = points.map(p => p.x)
+ ys = points.map(p => p.y)
+ lines = editor._transform_for_staircase(xs, ys, editor._staircase_steps_count)
+ lines = lines.map(l => [
+ editor.map.layerPointToLatLng([l.p1.x, l.p1.y]),
+ editor.map.layerPointToLatLng([l.p2.x, l.p2.y]),
+ ])
+ return lines
+ },
+
+ _update_staircase_preview: function(e = null) {
+ if (editor._staircase_layer) {
+ editor._staircase_layer.clearLayers()
+ }
+ lines = editor._get_staircase_lines()
+ lines.forEach(l => {
+ L.polyline(l, {color: "red"}).addTo(editor._staircase_layer);
+ })
+ },
+
+ _staircase_submit: function(form) {
+ csrfmiddlewaretoken = form.find('input[name=csrfmiddlewaretoken]').attr('value')
+ import_tag = form.find('input[name=import_tag]').val()
+ space = form.attr('space')
+ lines = editor._get_staircase_lines()
+
+ Promise.all(lines.map(l =>
+ fetch("/editor/spaces/" + space + "/stairs/create", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
+ "X-Requested-With": "XMLHttpRequest",
+ },
+ body: "csrfmiddlewaretoken=" + encodeURIComponent(csrfmiddlewaretoken) +
+ "&geometry=" + encodeURIComponent(JSON.stringify({
+ type: "LineString",
+ coordinates: [[l[0]["lng"], l[0]["lat"]], [l[1]["lng"], l[1]["lat"]]]
+ })) +
+ "&import_tag=" + encodeURIComponent(import_tag)
+ })
+ )).then(() => {
+ form.remove()
+ window.location.href = "/editor/spaces/" + space + "/stairs"
+ })
}
};
@@ -2164,6 +2795,354 @@ OverlayControl = L.Control.extend({
},
});
+// Clone Floor Functionality
+editor.cloneFloor = {
+ selectedItems: [],
+ isSelectionMode: false,
+
+ init: function() {
+ // This will be called after geometries are loaded
+ // Check if clone floor elements exist in the template
+ if ($('#clone-floor-btn').length > 0) {
+ // Unbind any existing handlers first
+ $('#clone-floor-btn').off('click');
+ $('#execute-clone-btn').off('click');
+ $('#cancel-clone-btn').off('click');
+ $('#select-all-btn').off('click');
+ $('#clear-selection-btn').off('click');
+
+ // Bind click event to the button that's already in the template
+ $('#clone-floor-btn').click(editor.cloneFloor.toggleSelectionMode);
+
+ // Bind events to the selector elements that are already in the template
+ $('#execute-clone-btn').click(editor.cloneFloor.executeClone);
+ $('#cancel-clone-btn').click(editor.cloneFloor.cancelSelection);
+ $('#select-all-btn').click(editor.cloneFloor.selectAllItems);
+ $('#clear-selection-btn').click(editor.cloneFloor.clearSelection);
+
+ console.log('Clone floor functionality initialized');
+ } else {
+ console.log('Clone floor button not found in template');
+ }
+ },
+
+ toggleSelectionMode: function() {
+ if (editor.cloneFloor.isSelectionMode) {
+ editor.cloneFloor.cancelSelection();
+ } else {
+ editor.cloneFloor.startSelection();
+ }
+ },
+
+ startSelection: function() {
+ editor.cloneFloor.isSelectionMode = true;
+ editor.cloneFloor.selectedItems = [];
+
+ console.log('Clone floor: Starting selection mode');
+
+ $('#clone-floor-btn').html(' Cancel Selection').removeClass('btn-info').addClass('btn-warning');
+ $('#clone-floor-selector').show();
+ editor.cloneFloor.updateSelectedCount();
+
+ // Define supported item types that can be cloned
+ var supportedTypes = ['area', 'obstacle', 'lineobstacle', 'stair', 'ramp', 'hole', 'column', 'poi', 'altitudemarker', 'space', 'building', 'door'];
+
+ // Add click handlers directly to geometry layers
+ if (editor._geometries_layer) {
+ var layerCount = 0;
+ var supportedCount = 0;
+ editor._geometries_layer.eachLayer(function(layer) {
+ if (layer.feature && layer.feature.properties) {
+ layerCount++;
+ var itemType = layer.feature.properties.type;
+
+ // Only make supported types selectable
+ if (supportedTypes.indexOf(itemType.toLowerCase()) >= 0) {
+ // Add click handler for selection
+ layer.on('click', editor.cloneFloor.onItemClick);
+
+ // Make layer visually selectable
+ var currentStyle = layer.options || {};
+ layer.setStyle(Object.assign({}, currentStyle, {
+ cursor: 'pointer',
+ opacity: Math.max(currentStyle.opacity || 0, 0.5)
+ }));
+ supportedCount++;
+ }
+ }
+ });
+ console.log('Clone floor: Made', supportedCount, 'out of', layerCount, 'geometries selectable (supported types only)');
+ } else {
+ console.log('Clone floor: No geometries layer found');
+ }
+
+ // Disable map editing
+ editor.map.doubleClickZoom.disable();
+ },
+
+ cancelSelection: function() {
+ editor.cloneFloor.isSelectionMode = false;
+ editor.cloneFloor.selectedItems = [];
+
+ $('#clone-floor-btn').html(' Clone to Floor').removeClass('btn-warning').addClass('btn-info');
+ $('#clone-floor-selector').hide();
+
+ // Remove click handlers and reset styles for all geometry layers
+ if (editor._geometries_layer) {
+ editor._geometries_layer.eachLayer(function(layer) {
+ if (layer.feature && layer.feature.properties) {
+ // Remove click handler
+ layer.off('click', editor.cloneFloor.onItemClick);
+
+ // Reset to original style
+ layer.setStyle(editor._get_geometry_style(layer.feature));
+ }
+ });
+ }
+
+ // Re-enable map editing
+ editor.map.doubleClickZoom.enable();
+ },
+
+ onItemClick: function(e) {
+ if (!editor.cloneFloor.isSelectionMode) return;
+
+ // Prevent default behavior and stop propagation
+ if (e.originalEvent) {
+ e.originalEvent.stopPropagation();
+ e.originalEvent.preventDefault();
+ }
+ L.DomEvent.stopPropagation(e);
+ L.DomEvent.preventDefault(e);
+
+ var layer = e.target;
+ var feature = layer.feature;
+
+ console.log('Clone floor: Item clicked', feature);
+
+ if (!feature || !feature.properties) {
+ console.log('Clone floor: No feature or properties found');
+ return false;
+ }
+
+ var itemId = feature.properties.id;
+ var itemType = feature.properties.type;
+
+ console.log('Clone floor: Item ID:', itemId, 'Type:', itemType);
+ console.log('Clone floor: Full feature properties:', JSON.stringify(feature.properties, null, 2));
+
+ // Define supported item types that can be cloned
+ var supportedTypes = ['area', 'obstacle', 'lineobstacle', 'stair', 'ramp', 'hole', 'column', 'poi', 'altitudemarker', 'space', 'building', 'door'];
+
+ if (supportedTypes.indexOf(itemType.toLowerCase()) === -1) {
+ console.log('Clone floor: Item type "' + itemType + '" is not supported for cloning. Supported types:', supportedTypes);
+ return false;
+ }
+
+ // Check if item is already selected
+ var existingIndex = editor.cloneFloor.selectedItems.findIndex(
+ function(item) { return item.item_id === itemId && item.item_type === itemType; }
+ );
+
+ if (existingIndex >= 0) {
+ // Deselect item
+ editor.cloneFloor.selectedItems.splice(existingIndex, 1);
+ console.log('Clone floor: Item deselected');
+ } else {
+ // Select item
+ editor.cloneFloor.selectedItems.push({
+ item_id: itemId,
+ item_type: itemType
+ });
+ console.log('Clone floor: Item selected');
+ }
+
+ editor.cloneFloor.updateSelectedCount();
+ editor.cloneFloor.updateVisualSelection();
+
+ return false; // Prevent further event propagation
+ },
+
+ updateSelectedCount: function() {
+ $('#selected-count').text(editor.cloneFloor.selectedItems.length);
+ },
+
+ selectAllItems: function() {
+ if (!editor.cloneFloor.isSelectionMode) {
+ console.log('Clone floor: Select all called but not in selection mode');
+ return;
+ }
+
+ // Clear current selection
+ editor.cloneFloor.selectedItems = [];
+
+ // Define supported item types that can be cloned
+ var supportedTypes = ['area', 'obstacle', 'lineobstacle', 'stair', 'ramp', 'hole', 'column', 'poi', 'altitudemarker', 'space', 'building', 'door'];
+
+ if (editor._geometries_layer) {
+ var selectedCount = 0;
+ editor._geometries_layer.eachLayer(function(layer) {
+ if (layer.feature && layer.feature.properties) {
+ var itemType = layer.feature.properties.type;
+ var itemId = layer.feature.properties.id;
+
+ // Only select supported types
+ if (supportedTypes.indexOf(itemType.toLowerCase()) >= 0) {
+ editor.cloneFloor.selectedItems.push({
+ item_id: itemId,
+ item_type: itemType
+ });
+ selectedCount++;
+ }
+ }
+ });
+ console.log('Clone floor: Selected all', selectedCount, 'supported items');
+ }
+
+ editor.cloneFloor.updateSelectedCount();
+ editor.cloneFloor.updateVisualSelection();
+ },
+
+ clearSelection: function() {
+ if (!editor.cloneFloor.isSelectionMode) {
+ console.log('Clone floor: Clear selection called but not in selection mode');
+ return;
+ }
+
+ // Clear current selection
+ editor.cloneFloor.selectedItems = [];
+ console.log('Clone floor: Cleared all selected items');
+
+ editor.cloneFloor.updateSelectedCount();
+ editor.cloneFloor.updateVisualSelection();
+ },
+
+ updateVisualSelection: function() {
+ if (!editor._geometries_layer) return;
+
+ // Reset all styles first
+ editor._geometries_layer.eachLayer(function(layer) {
+ if (layer.feature && layer.feature.properties) {
+ layer.setStyle(editor._get_geometry_style(layer.feature));
+ }
+ });
+
+ // Highlight selected items
+ editor._geometries_layer.eachLayer(function(layer) {
+ if (layer.feature && layer.feature.properties) {
+ var isSelected = false;
+ for (var i = 0; i < editor.cloneFloor.selectedItems.length; i++) {
+ var item = editor.cloneFloor.selectedItems[i];
+ if (item.item_id === layer.feature.properties.id &&
+ item.item_type === layer.feature.properties.type) {
+ isSelected = true;
+ break;
+ }
+ }
+
+ if (isSelected) {
+ layer.setStyle({
+ stroke: true,
+ color: '#ff0000',
+ weight: 4,
+ opacity: 1,
+ fillOpacity: 0.7,
+ fillColor: '#ff0000'
+ });
+ }
+ }
+ });
+ },
+
+
+ executeClone: function() {
+ var targetLevelId = $('#target-level-select').val();
+ var keepSync = $('#keep-sync-checkbox').is(':checked');
+
+ if (!targetLevelId) {
+ alert('Please select a target level');
+ return;
+ }
+
+ if (editor.cloneFloor.selectedItems.length === 0) {
+ alert('Please select items to clone');
+ return;
+ }
+
+ // Get current level ID
+ var currentLevelId = editor._level_control.current_level_id;
+
+ if (currentLevelId === parseInt(targetLevelId)) {
+ alert('Source and target levels cannot be the same');
+ return;
+ }
+
+ // Show loading state
+ $('#execute-clone-btn').prop('disabled', true).html(' Cloning...');
+
+ // Prepare request data
+ var requestData = {
+ source_level_id: currentLevelId,
+ target_level_id: parseInt(targetLevelId),
+ items: editor.cloneFloor.selectedItems,
+ keep_sync: keepSync
+ };
+
+ // Debug: Log detailed request data
+ console.log('Clone floor: Making API call with data:', requestData);
+ console.log('Clone floor: Selected items details:', JSON.stringify(editor.cloneFloor.selectedItems, null, 2));
+ console.log('Clone floor: Source level ID:', currentLevelId);
+ console.log('Clone floor: Target level ID:', parseInt(targetLevelId));
+
+ // Use the raw fetch API with better error handling
+ c3nav_api.authenticated().then(function() {
+ return fetch(c3nav_api.make_url('editor/clone-floor/'), {
+ method: 'POST',
+ credentials: 'include',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'X-API-Key': c3nav_api.key,
+ 'Accept': 'application/json'
+ },
+ body: JSON.stringify(requestData)
+ });
+ })
+ .then(function(response) {
+ console.log('Clone floor: API response status:', response.status);
+
+ if (!response.ok) {
+ // Log the actual response text for debugging
+ return response.text().then(function(text) {
+ console.error('Clone floor: API error response:', text);
+ throw new Error('HTTP ' + response.status + ': ' + response.statusText);
+ });
+ }
+
+ return response.json();
+ })
+ .then(function(data) {
+ console.log('Clone floor: API response data:', data);
+ console.log('Clone floor: API response type:', typeof data);
+ console.log('Clone floor: API response keys:', Object.keys(data));
+
+ if (data.success) {
+ var clonedCount = data.cloned_items ? data.cloned_items.length : 0;
+ alert('Successfully cloned ' + clonedCount + ' items: ' + data.message);
+ editor.cloneFloor.cancelSelection();
+ } else {
+ alert('Clone failed: ' + data.message);
+ }
+ })
+ .catch(function(error) {
+ console.error('Clone floor: Error details:', error);
+ alert('Clone failed: ' + error.message);
+ })
+ .finally(function() {
+ $('#execute-clone-btn').prop('disabled', false).html(' Clone Items');
+ });
+ }
+};
+
if ($('#sidebar').length) {
editor.init();
}
diff --git a/src/c3nav/editor/templates/editor/create_staircase.html b/src/c3nav/editor/templates/editor/create_staircase.html
new file mode 100644
index 00000000..0c3937ea
--- /dev/null
+++ b/src/c3nav/editor/templates/editor/create_staircase.html
@@ -0,0 +1,40 @@
+{% load bootstrap3 %}
+{% load i18n %}
+
+{% include 'editor/fragment_levels.html' %}
+
+
+ {% blocktrans %}Add staircase{% endblocktrans %}
+
+{% bootstrap_messages %}
+
+
diff --git a/src/c3nav/editor/templates/editor/level.html b/src/c3nav/editor/templates/editor/level.html
index fdd08ee3..0082939f 100644
--- a/src/c3nav/editor/templates/editor/level.html
+++ b/src/c3nav/editor/templates/editor/level.html
@@ -16,6 +16,9 @@
{% trans 'Level' as model_title %}
{% blocktrans %}Edit {{ model_title }}{% endblocktrans %}
+
{% if level.on_top_of == None %}
@@ -25,6 +28,45 @@
{% endif %}
+
+
+
Clone Selected Items
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Selected Items: 0
+
Click on map items to select them for cloning. Selected items will be highlighted in red.
+
+
+
{% url 'editor.levels.graph' level=level.pk as graph_url %}
{% url 'editor.levels.overlays' level=level.pk as overlays_url %}
{% include 'editor/fragment_child_models.html' with graph_url=graph_url overlays_url=overlays_url %}
diff --git a/src/c3nav/editor/templates/editor/list.html b/src/c3nav/editor/templates/editor/list.html
index fc923038..1bd75d0a 100644
--- a/src/c3nav/editor/templates/editor/list.html
+++ b/src/c3nav/editor/templates/editor/list.html
@@ -20,6 +20,11 @@
{% blocktrans %}New {{ model_title }}{% endblocktrans %}
+ {% if model_title == "Stair" %}
+
+ {% blocktrans %}New staircase{% endblocktrans %}
+
+ {% endif %}
{% endif %}
{% if explicit_edit %}
diff --git a/src/c3nav/editor/urls.py b/src/c3nav/editor/urls.py
index fe4f50ef..4c987ea1 100644
--- a/src/c3nav/editor/urls.py
+++ b/src/c3nav/editor/urls.py
@@ -4,7 +4,7 @@ from django.views.generic import TemplateView
from c3nav.editor.views.account import change_password_view, login_view, logout_view, register_view
from c3nav.editor.views.changes import changeset_detail, changeset_edit, changeset_redirect
-from c3nav.editor.views.edit import edit, graph_edit, level_detail, list_objects, main_index, sourceimage, space_detail
+from c3nav.editor.views.edit import edit, graph_edit, level_detail, list_objects, main_index, staircase_edit, sourceimage, space_detail
from c3nav.editor.views.overlays import overlays_list, overlay_features, overlay_feature_edit
from c3nav.editor.views.quest import QuestFormView
from c3nav.editor.views.users import user_detail, user_redirect
@@ -33,7 +33,6 @@ def add_editor_urls(model_name, parent_model_name=None, with_list=True, explicit
])
return result
-
# todo: custom path converters
urlpatterns = [
path('levels//', level_detail, name='editor.levels.detail'),
@@ -91,3 +90,4 @@ urlpatterns.extend(add_editor_urls('LeaveDescription', 'Space'))
urlpatterns.extend(add_editor_urls('CrossDescription', 'Space'))
urlpatterns.extend(add_editor_urls('BeaconMeasurement', 'Space'))
urlpatterns.extend(add_editor_urls('RangingBeacon', 'Space'))
+urlpatterns.append(path('spaces//staircase', edit, name='editor.stairs.staircase', kwargs={'model': apps.get_model('mapdata', 'Stair')}))
diff --git a/src/c3nav/editor/utils.py b/src/c3nav/editor/utils.py
index 7c846405..6fdb30c8 100644
--- a/src/c3nav/editor/utils.py
+++ b/src/c3nav/editor/utils.py
@@ -55,3 +55,274 @@ class SpaceChildEditUtils(DefaultEditUtils):
@property
def _geometry_url(self):
return '/api/v2/editor/geometries/space/'+str(self.space.pk) # todo: resolve correctly
+
+
+def clone_level_items(request, source_level_id, target_level_id, items, keep_sync=False):
+ """
+ Clone selected map items from one level to another.
+
+ Args:
+ request: Django request object
+ source_level_id: ID of the source level
+ target_level_id: ID of the target level
+ items: List of items to clone (each with item_type and item_id)
+ keep_sync: Whether to keep cloned items synchronized
+
+ Returns:
+ Dictionary with success status, cloned items list, and message
+ """
+ from django.apps import apps
+ from django.contrib.contenttypes.models import ContentType
+ from c3nav.mapdata.models import Level
+ from c3nav.mapdata.models.sync import ClonedItemSync
+ from c3nav.editor.api.schemas import CloneFloorResponseSchema
+
+ # Get the source and target levels
+ try:
+ source_level = Level.objects.get(pk=source_level_id)
+ target_level = Level.objects.get(pk=target_level_id)
+ except Level.DoesNotExist:
+ return CloneFloorResponseSchema(
+ success=False,
+ cloned_items=[],
+ message="Source or target level not found"
+ ).model_dump(mode="json")
+
+ # Check if user has editor permissions (simplified check for API)
+ if not hasattr(request, 'user') or not request.user.is_authenticated:
+ return CloneFloorResponseSchema(
+ success=False,
+ cloned_items=[],
+ message="Authentication required"
+ ).model_dump(mode="json")
+
+ cloned_items = []
+
+ # Define supported item types and their model mappings
+ SUPPORTED_TYPES = {
+ 'area': 'Area',
+ 'obstacle': 'Obstacle',
+ 'lineobstacle': 'LineObstacle',
+ 'stair': 'Stair',
+ 'ramp': 'Ramp',
+ 'hole': 'Hole',
+ 'column': 'Column',
+ 'poi': 'POI',
+ 'altitudemarker': 'AltitudeMarker',
+ 'space': 'Space',
+ 'building': 'Building',
+ 'door': 'Door'
+ }
+
+ try:
+ print(f"Starting to process {len(items)} items")
+
+ for i, item in enumerate(items):
+ item_type = item.item_type.lower()
+ item_id = item.item_id
+
+ print(f"Processing item {i+1}/{len(items)}: {item_type} with ID {item_id}")
+
+ if item_type not in SUPPORTED_TYPES:
+ print(f"Item type '{item_type}' not supported. Supported types: {list(SUPPORTED_TYPES.keys())}")
+ continue
+
+ model_name = SUPPORTED_TYPES[item_type]
+ Model = apps.get_model('mapdata', model_name)
+
+ print(f"Looking for {model_name} with ID {item_id}")
+
+ # Get the original item
+ try:
+ original_item = Model.objects.get(pk=item_id)
+ print(f"Found original item: {original_item}")
+ except Model.DoesNotExist:
+ print(f"{model_name} with ID {item_id} not found")
+ continue
+
+ # Prepare the clone data
+ clone_data = {}
+ print(f"Model fields: {[f.name for f in Model._meta.fields]}")
+
+ # Handle different item types differently
+ if item_type == 'space':
+ # For spaces, we need level but no space reference
+ print(f"Processing space item with fields: {[f.name for f in Model._meta.fields]}")
+ for field in Model._meta.fields:
+ if field.name in ['id', 'pk']:
+ continue
+
+ # Skip auto fields and read-only fields
+ if (hasattr(field, 'auto_created') and field.auto_created) or \
+ (hasattr(field, 'editable') and not field.editable):
+ print(f"Skipping field {field.name}: auto_created={getattr(field, 'auto_created', False)}, editable={getattr(field, 'editable', True)}")
+ continue
+
+ try:
+ field_value = getattr(original_item, field.name)
+ print(f"Field {field.name}: {field_value} (type: {type(field_value)})")
+ except (AttributeError, ValueError) as e:
+ print(f"Could not get field {field.name}: {e}")
+ continue
+
+ # Handle level reference
+ if field.name == 'level':
+ clone_data[field.name] = target_level
+ print(f"Set level to target_level: {target_level}")
+ else:
+ # Copy other fields - but check for special fields that shouldn't be copied
+ if field.name in ['slug']:
+ # Don't copy slug directly as it needs to be unique
+ # Instead, create a new unique slug based on the original
+ if field_value:
+ import re
+ base_slug = re.sub(r'-\d+$', '', field_value) # Remove trailing numbers
+ new_slug = f"{base_slug}-clone"
+ # Make sure the new slug is unique
+ counter = 1
+ test_slug = new_slug
+ while Model.objects.filter(slug=test_slug).exists():
+ test_slug = f"{new_slug}-{counter}"
+ counter += 1
+ clone_data[field.name] = test_slug
+ print(f"Generated unique slug: {test_slug}")
+ continue
+ if field_value is not None:
+ clone_data[field.name] = field_value
+ print(f"Copied field {field.name}: {field_value}")
+
+ print(f"Final space clone data: {clone_data}")
+ else:
+ # For space-related items (areas, obstacles, etc.)
+ space_found = False
+ for field in Model._meta.fields:
+ if field.name in ['id', 'pk']:
+ continue
+
+ # Skip auto fields and read-only fields
+ if (hasattr(field, 'auto_created') and field.auto_created) or \
+ (hasattr(field, 'editable') and not field.editable):
+ continue
+
+ try:
+ field_value = getattr(original_item, field.name)
+ except (AttributeError, ValueError):
+ continue
+
+ # Handle level reference
+ if field.name == 'level':
+ clone_data[field.name] = target_level
+ # Handle space reference - need to find equivalent space on target level
+ elif field.name == 'space':
+ if hasattr(original_item, 'space') and original_item.space:
+ original_space = original_item.space
+ # Try to find a space with the same slug/title on target level
+ try:
+ target_space = target_level.spaces.filter(
+ title=original_space.title
+ ).first()
+ if target_space:
+ clone_data[field.name] = target_space
+ space_found = True
+ print(f"Found target space: {target_space}")
+ else:
+ print(f"No equivalent space found for '{original_space.title}' on target level")
+ except Exception as e:
+ print(f"Error finding target space: {e}")
+ else:
+ # Copy other fields
+ if field_value is not None:
+ clone_data[field.name] = field_value
+
+ # Skip space-related items if no equivalent space found
+ if 'space' in [f.name for f in Model._meta.fields] and not space_found:
+ print(f"Skipping {item_type} {item_id} because no equivalent space found")
+ continue
+
+ print(f"Clone data for {item_type} {item_id}: {clone_data}")
+
+ # Create the cloned item
+ try:
+ print(f"Attempting to clone {model_name} with data: {clone_data}")
+ print(f"Creating {model_name} object...")
+ cloned_item = Model(**clone_data)
+ print(f"Created object, now saving...")
+ cloned_item.save()
+ print(f"Successfully created cloned item with ID: {cloned_item.pk}")
+ except Exception as create_error:
+ print(f"Error creating {model_name}: {create_error}")
+ print(f"Error type: {type(create_error)}")
+ print(f"Clone data was: {clone_data}")
+
+ # Try a different approach - create empty object and set fields one by one
+ try:
+ print("Trying field-by-field approach...")
+ cloned_item = Model()
+ for field_name, field_value in clone_data.items():
+ try:
+ setattr(cloned_item, field_name, field_value)
+ print(f"Set {field_name} = {field_value}")
+ except Exception as field_error:
+ print(f"Could not set {field_name}={field_value}: {field_error}")
+ cloned_item.save()
+ print(f"Successfully created item using setattr approach with ID: {cloned_item.pk}")
+ except Exception as setattr_error:
+ print(f"Setattr approach also failed: {setattr_error}")
+ continue # Skip this item
+
+ # Create sync relationship if requested
+ if keep_sync:
+ try:
+ original_ct = ContentType.objects.get_for_model(Model)
+ cloned_ct = ContentType.objects.get_for_model(Model)
+
+ # Define fields that should be synchronized for each model type
+ sync_field_map = {
+ 'Area': ['title', 'access_restriction', 'slow_down_factor'],
+ 'Obstacle': ['height', 'altitude'],
+ 'LineObstacle': ['width', 'height', 'altitude'],
+ 'Stair': [], # Geometry-only, no additional fields to sync
+ 'Ramp': [],
+ 'Hole': [],
+ 'Column': ['access_restriction'],
+ 'POI': ['title', 'access_restriction'],
+ 'AltitudeMarker': ['groundaltitude'],
+ 'Space': ['title', 'access_restriction', 'outside'],
+ 'Building': ['title'],
+ 'Door': ['access_restriction']
+ }
+
+ sync_fields = sync_field_map.get(model_name, [])
+
+ ClonedItemSync.objects.create(
+ original_content_type=original_ct,
+ original_object_id=original_item.pk,
+ cloned_content_type=cloned_ct,
+ cloned_object_id=cloned_item.pk,
+ sync_fields=sync_fields
+ )
+ except Exception as sync_error:
+ # Don't fail the entire operation if sync setup fails
+ print(f"Warning: Could not create sync relationship: {sync_error}")
+
+ cloned_items.append({
+ 'item_type': item_type,
+ 'original_id': item_id,
+ 'cloned_id': cloned_item.pk
+ })
+
+ print(f"Successfully added item {i+1} to cloned_items list")
+
+ print(f"Finished processing. Total cloned items: {len(cloned_items)}")
+ return CloneFloorResponseSchema(
+ success=True,
+ cloned_items=cloned_items,
+ message=f"Successfully cloned {len(cloned_items)} items"
+ ).model_dump(mode="json")
+
+ except Exception as e:
+ return CloneFloorResponseSchema(
+ success=False,
+ cloned_items=cloned_items,
+ message=f"Error during cloning: {str(e)}"
+ ).model_dump(mode="json")
diff --git a/src/c3nav/editor/views/edit.py b/src/c3nav/editor/views/edit.py
index fc3060c0..3b7aa8c7 100644
--- a/src/c3nav/editor/views/edit.py
+++ b/src/c3nav/editor/views/edit.py
@@ -70,6 +70,12 @@ def main_index(request):
})
+@etag(editor_etag_func)
+@accesses_mapdata
+@sidebar_view
+def staircase_edit(request, space):
+ return render(request, "editor/create_staircase.html")
+
@etag(editor_etag_func)
@accesses_mapdata
@sidebar_view
@@ -405,7 +411,11 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e
"access_restriction_select": True,
})
- return render(request, 'editor/edit.html', ctx)
+ if request.path.endswith("staircase"):
+ ctx["space"] = space_id
+ return render(request, 'editor/create_staircase.html', ctx)
+ else:
+ return render(request, 'editor/edit.html', ctx)
def get_visible_spaces(request):
diff --git a/src/c3nav/mapdata/api/updates.py b/src/c3nav/mapdata/api/updates.py
index b7801e8c..541677fb 100644
--- a/src/c3nav/mapdata/api/updates.py
+++ b/src/c3nav/mapdata/api/updates.py
@@ -125,7 +125,7 @@ def fetch_updates(request, response: HttpResponse):
}
if cross_origin is None:
result.update({
- 'user_data': request.user_data,
+ 'user_data': dict(request.user_data),
})
if cross_origin is not None:
diff --git a/src/c3nav/mapdata/apps.py b/src/c3nav/mapdata/apps.py
index 5d47afa1..6bb6e524 100644
--- a/src/c3nav/mapdata/apps.py
+++ b/src/c3nav/mapdata/apps.py
@@ -8,3 +8,4 @@ class MapdataConfig(AppConfig):
from c3nav.mapdata.utils.cache.changes import register_signals
register_signals()
import c3nav.mapdata.metrics # noqa
+ import c3nav.mapdata.signals.sync # noqa
diff --git a/src/c3nav/mapdata/management/commands/add_sensor.py b/src/c3nav/mapdata/management/commands/add_sensor.py
new file mode 100644
index 00000000..829f8d68
--- /dev/null
+++ b/src/c3nav/mapdata/management/commands/add_sensor.py
@@ -0,0 +1,141 @@
+import json
+from django.core.management.base import BaseCommand
+from django.utils import timezone
+from shapely.geometry import Point
+
+from c3nav.mapdata.models import DataOverlay, DataOverlayFeature, Level
+
+
+class Command(BaseCommand):
+ help = 'Add a new sensor to an existing overlay'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--overlay-id',
+ type=int,
+ required=True,
+ help='ID of the overlay to add the sensor to',
+ )
+ parser.add_argument(
+ '--sensor-id',
+ type=str,
+ required=True,
+ help='Unique ID for the sensor (e.g., NOI:Sensor-ID)',
+ )
+ parser.add_argument(
+ '--name',
+ type=str,
+ required=True,
+ help='Display name for the sensor',
+ )
+ parser.add_argument(
+ '--x',
+ type=float,
+ required=True,
+ help='X coordinate in c3nav coordinate system',
+ )
+ parser.add_argument(
+ '--y',
+ type=float,
+ required=True,
+ help='Y coordinate in c3nav coordinate system',
+ )
+ parser.add_argument(
+ '--level',
+ type=str,
+ default='floor0',
+ help='Level/floor where the sensor is located (default: floor0)',
+ )
+ parser.add_argument(
+ '--sensor-type',
+ type=str,
+ default='environmental',
+ help='Type of sensor (default: environmental)',
+ )
+
+ def handle(self, *args, **options):
+ try:
+ overlay = DataOverlay.objects.get(id=options['overlay_id'])
+ except DataOverlay.DoesNotExist:
+ self.stderr.write(f'Overlay with ID {options["overlay_id"]} not found')
+ return
+
+ try:
+ level = Level.objects.get(short_label=options['level'])
+ except Level.DoesNotExist:
+ self.stderr.write(f'Level "{options["level"]}" not found')
+ return
+
+ # Update overlay configuration to include the new sensor
+ sensor_config = overlay.sensor_config or {}
+ if 'sensors' not in sensor_config:
+ sensor_config['sensors'] = []
+
+ # Check if sensor already exists in config
+ existing_sensor = None
+ for i, sensor in enumerate(sensor_config['sensors']):
+ if sensor['id'] == options['sensor_id']:
+ existing_sensor = i
+ break
+
+ new_sensor_config = {
+ 'id': options['sensor_id'],
+ 'coordinates': {'x': options['x'], 'y': options['y']},
+ 'level': options['level']
+ }
+
+ if existing_sensor is not None:
+ sensor_config['sensors'][existing_sensor] = new_sensor_config
+ self.stdout.write(f'Updated sensor configuration for {options["sensor_id"]}')
+ else:
+ sensor_config['sensors'].append(new_sensor_config)
+ self.stdout.write(f'Added sensor configuration for {options["sensor_id"]}')
+
+ overlay.sensor_config = sensor_config
+ overlay.save()
+
+ # Create the sensor feature (or update if it exists)
+ point = Point(options['x'], options['y'])
+
+ feature, created = DataOverlayFeature.objects.update_or_create(
+ overlay=overlay,
+ sensor_id=options['sensor_id'],
+ defaults={
+ 'titles': {'en': options['name']},
+ 'geometry': point,
+ 'level': level,
+ 'sensor_type': options['sensor_type'],
+ 'coordinates_x': options['x'],
+ 'coordinates_y': options['y'],
+ 'fill_color': '#95A5A6', # Default gray
+ 'stroke_color': '#95A5A6',
+ 'stroke_width': 2,
+ 'fill_opacity': 0.8,
+ 'show_label': True,
+ 'show_geometry': True,
+ 'interactive': True,
+ 'point_icon': 'sensors',
+ 'last_updated': timezone.now(),
+ 'extra_data': {
+ 'Status': 'No data yet',
+ 'Last Updated': timezone.now().strftime('%Y-%m-%d %H:%M:%S'),
+ 'Data Source': 'Manual configuration',
+ 'Station ID': options['sensor_id']
+ }
+ }
+ )
+
+ action = 'Created' if created else 'Updated'
+ self.stdout.write(
+ self.style.SUCCESS(
+ f'{action} sensor "{options["name"]}" (ID: {options["sensor_id"]}) '
+ f'at coordinates ({options["x"]}, {options["y"]}) on level {options["level"]}'
+ )
+ )
+
+ self.stdout.write(
+ 'You can now run the scrape command to fetch data for this sensor:'
+ )
+ self.stdout.write(
+ f'python manage.py manage_sensors --scrape-data --overlay-id {options["overlay_id"]}'
+ )
diff --git a/src/c3nav/mapdata/management/commands/list_sensors.py b/src/c3nav/mapdata/management/commands/list_sensors.py
new file mode 100644
index 00000000..75d1e6b8
--- /dev/null
+++ b/src/c3nav/mapdata/management/commands/list_sensors.py
@@ -0,0 +1,60 @@
+from django.core.management.base import BaseCommand
+from c3nav.mapdata.models import DataOverlay, DataOverlayFeature
+
+
+class Command(BaseCommand):
+ help = 'List all sensors in overlays'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--overlay-id',
+ type=int,
+ help='ID of a specific overlay to list sensors for',
+ )
+
+ def handle(self, *args, **options):
+ if options['overlay_id']:
+ try:
+ overlay = DataOverlay.objects.get(id=options['overlay_id'])
+ overlays = [overlay]
+ except DataOverlay.DoesNotExist:
+ self.stderr.write(f'Overlay with ID {options["overlay_id"]} not found')
+ return
+ else:
+ overlays = DataOverlay.objects.all()
+
+ for overlay in overlays:
+ self.stdout.write(f'\n=== Overlay {overlay.id}: {overlay.titles.get("en", "Unknown")} ===')
+
+ # Show overlay configuration
+ sensor_config = overlay.sensor_config or {}
+ configured_sensors = sensor_config.get('sensors', [])
+ if configured_sensors:
+ self.stdout.write('Configured sensors:')
+ for sensor in configured_sensors:
+ self.stdout.write(f' - {sensor["id"]} at ({sensor["coordinates"]["x"]}, {sensor["coordinates"]["y"]}) on level {sensor.get("level", "default")}')
+
+ # Show actual sensor features in database
+ features = DataOverlayFeature.objects.filter(overlay=overlay)
+ if features:
+ self.stdout.write(f'\nSensor features in database ({features.count()}):')
+ for feature in features:
+ title = feature.titles.get('en', 'Unknown') if feature.titles else 'Unknown'
+ level_name = feature.level.short_label if feature.level else 'No level'
+ coords = f'({feature.coordinates_x}, {feature.coordinates_y})' if feature.coordinates_x is not None else 'No coords'
+ last_updated = feature.last_updated.strftime('%Y-%m-%d %H:%M:%S') if feature.last_updated else 'Never'
+
+ self.stdout.write(f' - {feature.sensor_id}: {title}')
+ self.stdout.write(f' Level: {level_name}, Coords: {coords}')
+ self.stdout.write(f' Type: {feature.sensor_type or "Unknown"}, Last updated: {last_updated}')
+
+ if feature.extra_data:
+ readings = [f'{k}: {v}' for k, v in feature.extra_data.items()
+ if k not in ['Last Updated', 'Data Source', 'Station ID']]
+ if readings:
+ self.stdout.write(f' Readings: {", ".join(readings)}')
+ else:
+ self.stdout.write('No sensor features found in database')
+
+ if not overlays:
+ self.stdout.write('No overlays found')
diff --git a/src/c3nav/mapdata/management/commands/manage_sensors.py b/src/c3nav/mapdata/management/commands/manage_sensors.py
new file mode 100644
index 00000000..8996d06c
--- /dev/null
+++ b/src/c3nav/mapdata/management/commands/manage_sensors.py
@@ -0,0 +1,461 @@
+import json
+import requests
+from django.core.management.base import BaseCommand
+from django.utils import timezone
+from shapely.geometry import Point
+
+from c3nav.mapdata.models import DataOverlay, DataOverlayFeature, Level
+
+class Command(BaseCommand):
+ help = 'Setup and manage sensor overlays with generic sensor data'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--create-overlay',
+ type=str,
+ help='Create a new sensor overlay with given name',
+ )
+ parser.add_argument(
+ '--data-source-url',
+ type=str,
+ help='URL to scrape sensor data from',
+ )
+ parser.add_argument(
+ '--sensor-config',
+ type=str,
+ help='JSON configuration for sensor data mapping',
+ )
+ parser.add_argument(
+ '--add-sensor',
+ action='store_true',
+ help='Add sensors manually with provided coordinates',
+ )
+ parser.add_argument(
+ '--scrape-data',
+ action='store_true',
+ help='Scrape data from configured data sources',
+ )
+ parser.add_argument(
+ '--overlay-id',
+ type=int,
+ help='ID of the overlay to work with',
+ )
+
+ def handle(self, *args, **options):
+ if options['create_overlay']:
+ self.create_overlay(options)
+ elif options['add_sensor']:
+ self.add_sensors_manually(options)
+ elif options['scrape_data']:
+ self.scrape_sensor_data(options)
+ else:
+ self.stdout.write('Please specify an action: --create-overlay, --add-sensor, or --scrape-data')
+
+ def create_overlay(self, options):
+ """Create a new sensor overlay"""
+ name = options['create_overlay']
+
+ # Parse sensor configuration
+ sensor_config = {}
+ if options['sensor_config']:
+ try:
+ sensor_config = json.loads(options['sensor_config'])
+ except json.JSONDecodeError:
+ self.stderr.write('Invalid JSON in sensor_config')
+ return
+
+ overlay = DataOverlay.objects.create(
+ titles={'en': name},
+ description=f'Sensor overlay for {name}',
+ default_geomtype=DataOverlay.GeometryType.POINT,
+ data_source_url=options['data_source_url'],
+ sensor_config=sensor_config,
+ update_interval=30, # Update every 30 seconds
+ )
+
+ self.stdout.write(
+ self.style.SUCCESS(f'Created overlay "{name}" with ID {overlay.id}')
+ )
+
+ def add_sensors_manually(self, options):
+ """Add sensors manually with coordinates"""
+ if not options['overlay_id']:
+ self.stderr.write('--overlay-id required when adding sensors manually')
+ return
+
+ try:
+ overlay = DataOverlay.objects.get(id=options['overlay_id'])
+ except DataOverlay.DoesNotExist:
+ self.stderr.write(f'Overlay with ID {options["overlay_id"]} not found')
+ return
+
+ # Get the ground floor level (floor0)
+ try:
+ level = Level.objects.get(short_label='floor0')
+ except Level.DoesNotExist:
+ level = Level.objects.first() # Fallback to first level
+ if not level:
+ self.stderr.write('No levels found in database')
+ return
+
+ # Example sensors - this should be configurable via command line or config file
+ sensors = [
+ {
+ 'sensor_id': 'temp_001',
+ 'sensor_type': 'temperature',
+ 'name': 'Meeting Room A1 - Temperature',
+ 'coordinates_x': 500,
+ 'coordinates_y': 300,
+ 'value': 22.5,
+ 'unit': '°C'
+ },
+ {
+ 'sensor_id': 'hum_001',
+ 'sensor_type': 'humidity',
+ 'name': 'Meeting Room A1 - Humidity',
+ 'coordinates_x': 500,
+ 'coordinates_y': 300,
+ 'value': 55.0,
+ 'unit': '%'
+ },
+ {
+ 'sensor_id': 'temp_002',
+ 'sensor_type': 'temperature',
+ 'name': 'Server Room - Temperature',
+ 'coordinates_x': 750,
+ 'coordinates_y': 400,
+ 'value': 18.2,
+ 'unit': '°C'
+ },
+ {
+ 'sensor_id': 'co2_001',
+ 'sensor_type': 'co2',
+ 'name': 'Office Space - CO2',
+ 'coordinates_x': 300,
+ 'coordinates_y': 600,
+ 'value': 450,
+ 'unit': 'ppm'
+ }
+ ]
+
+ for sensor_item in sensors:
+ # Create geometry from c3nav coordinates
+ point = Point(sensor_item['coordinates_x'], sensor_item['coordinates_y'])
+
+ # Get color based on sensor type and value
+ color = self.get_sensor_color(sensor_item['sensor_type'], sensor_item['value'])
+
+ feature = DataOverlayFeature.objects.create(
+ overlay=overlay,
+ titles={'en': sensor_item['name']},
+ geometry=point,
+ level=level,
+ sensor_id=sensor_item['sensor_id'],
+ sensor_type=sensor_item['sensor_type'],
+ sensor_value=sensor_item['value'],
+ sensor_unit=sensor_item['unit'],
+ coordinates_x=sensor_item['coordinates_x'],
+ coordinates_y=sensor_item['coordinates_y'],
+ fill_color=color,
+ stroke_color=color,
+ stroke_width=2,
+ fill_opacity=0.8,
+ show_label=True,
+ show_geometry=True,
+ interactive=True,
+ point_icon=self.get_sensor_icon(sensor_item['sensor_type']),
+ last_updated=timezone.now(),
+ extra_data={
+ 'value': str(sensor_item['value']),
+ 'unit': sensor_item['unit'],
+ 'sensor_type': sensor_item['sensor_type']
+ }
+ )
+
+ self.stdout.write(
+ f'Created sensor {sensor_item["sensor_id"]}: {sensor_item["name"]} '
+ f'({sensor_item["value"]}{sensor_item["unit"]}) at ({sensor_item["coordinates_x"]}, {sensor_item["coordinates_y"]})'
+ )
+
+ def scrape_sensor_data(self, options):
+ """Scrape sensor data from configured data sources"""
+ overlays = DataOverlay.objects.filter(data_source_url__isnull=False)
+
+ if options['overlay_id']:
+ overlays = overlays.filter(id=options['overlay_id'])
+
+ for overlay in overlays:
+ self.stdout.write(f'Scraping data for overlay: {overlay.titles.get("en", "Unknown")}')
+
+ try:
+ # Fetch data from the source URL
+ response = requests.get(overlay.data_source_url, timeout=30)
+ response.raise_for_status()
+ data = response.json()
+
+ # Process data using sensor configuration
+ self.process_scraped_data(overlay, data)
+
+ except requests.RequestException as e:
+ self.stderr.write(f'Error fetching data from {overlay.data_source_url}: {e}')
+ except json.JSONDecodeError as e:
+ self.stderr.write(f'Error parsing JSON from {overlay.data_source_url}: {e}')
+ except Exception as e:
+ self.stderr.write(f'Error processing data for overlay {overlay.id}: {e}')
+
+ def process_scraped_data(self, overlay, data):
+ """Process scraped data according to overlay configuration"""
+ sensor_config = overlay.sensor_config or {}
+
+ # Default configuration for NOI Open Data Hub
+ default_config = {
+ "data_path": "data",
+ "mappings": {
+ "id_field": "scode",
+ "name_field": "sname",
+ "x_field": "scoordinate.x",
+ "y_field": "scoordinate.y"
+ },
+ "sensors": [] # List of specific sensors to process
+ }
+
+ config = {**default_config, **sensor_config}
+
+ # Extract sensor data array
+ api_data = data
+ if config.get("data_path"):
+ for path_part in config["data_path"].split("."):
+ api_data = api_data.get(path_part, [])
+
+ updated_count = 0
+ created_count = 0
+
+ # Group measurements by station (scode) first and discover sensor types dynamically
+ stations = {}
+ for item in api_data:
+ station_id = self.get_nested_field(item, config["mappings"]["id_field"])
+ station_name = self.get_nested_field(item, config["mappings"]["name_field"])
+ measurement_type = self.get_nested_field(item, "tname")
+
+ if not station_id or not measurement_type:
+ continue
+
+ if station_id not in stations:
+ stations[station_id] = {
+ 'name': station_name,
+ 'measurements': {}
+ }
+
+ stations[station_id]['measurements'][measurement_type] = item
+
+ # If specific sensors are configured, only process those
+ configured_sensors = config.get('sensors', [])
+ sensor_configs = {s['id']: s for s in configured_sensors} if configured_sensors else {}
+
+ # Process each station and its measurements
+ for station_id, station_data in stations.items():
+ # Skip if we have specific sensors configured and this isn't one of them
+ if sensor_configs and station_id not in sensor_configs:
+ continue
+
+ # Get sensor-specific configuration
+ sensor_specific_config = sensor_configs.get(station_id, {})
+
+ # Determine coordinates and level for this sensor
+ if sensor_specific_config.get('coordinates'):
+ # Use sensor-specific coordinates
+ x_coord = sensor_specific_config['coordinates']['x']
+ y_coord = sensor_specific_config['coordinates']['y']
+ else:
+ # Get coordinates from measurement data
+ first_measurement = next(iter(station_data['measurements'].values()))
+ x_coord = self.get_nested_field(first_measurement, config["mappings"]["x_field"])
+ y_coord = self.get_nested_field(first_measurement, config["mappings"]["y_field"])
+
+ if x_coord is None or y_coord is None:
+ continue
+
+ # Convert coordinates if needed
+ x_coord = float(x_coord)
+ y_coord = float(y_coord)
+
+ # Determine level for this sensor
+ level_name = sensor_specific_config.get('level', config.get('level', 'floor0'))
+ try:
+ level = Level.objects.get(short_label=level_name)
+ except Level.DoesNotExist:
+ self.stderr.write(f'Level "{level_name}" not found for sensor {station_id}, using ground floor')
+ try:
+ level = Level.objects.get(short_label='floor0')
+ except Level.DoesNotExist:
+ level = Level.objects.first() # Final fallback
+ if not level:
+ self.stderr.write(f'No levels found in database for sensor {station_id}')
+ continue
+
+ # Collect all sensor data for this station in one feature
+ sensor_readings = {}
+ raw_measurements = {}
+
+ # Process ALL measurements found in the API response (dynamically discovered)
+ for measurement_type, measurement in station_data['measurements'].items():
+ # Extract values dynamically from the API response
+ sensor_value = self.get_nested_field(measurement, "mvalue")
+ sensor_unit = self.get_nested_field(measurement, "tunit")
+ sensor_name = self.get_nested_field(measurement, "tname")
+ sensor_description = self.get_nested_field(measurement, "tdescription")
+
+ if sensor_value is None:
+ continue # Skip if no value
+
+ # Convert sensor value to float
+ try:
+ sensor_value = float(sensor_value)
+ except (ValueError, TypeError):
+ continue
+
+ # Store this measurement for the combined sensor
+ display_name = sensor_description or sensor_name or measurement_type
+ unit_str = f" {sensor_unit}" if sensor_unit else ""
+ sensor_readings[display_name] = f"{sensor_value}{unit_str}"
+ raw_measurements[measurement_type] = measurement
+
+ if not sensor_readings:
+ continue # Skip if no valid measurements
+
+ # Create a single sensor feature with all measurements
+ sensor_id = station_id # Use station ID as sensor ID
+ display_name = f"{station_data['name']} - Environmental Sensor"
+
+ # Determine primary color based on the most critical measurement
+ # Priority: CO2 > Temperature > Humidity
+ primary_color = '#95A5A6' # Default gray
+
+ # Look for CO2 measurements (various naming conventions)
+ co2_measurement = None
+ for mtype, measurement in raw_measurements.items():
+ if any(keyword in mtype.lower() for keyword in ['co2', 'carbon']):
+ co2_measurement = measurement
+ break
+
+ if co2_measurement:
+ co2_value = self.get_nested_field(co2_measurement, "mvalue")
+ if co2_value:
+ primary_color = self.get_sensor_color('co2', float(co2_value))
+ else:
+ # Look for temperature measurements
+ temp_measurement = None
+ for mtype, measurement in raw_measurements.items():
+ if any(keyword in mtype.lower() for keyword in ['temperature', 'temp']):
+ temp_measurement = measurement
+ break
+
+ if temp_measurement:
+ temp_value = self.get_nested_field(temp_measurement, "mvalue")
+ if temp_value:
+ primary_color = self.get_sensor_color('temperature', float(temp_value))
+
+ # Create geometry
+ point = Point(x_coord, y_coord)
+
+ feature, created = DataOverlayFeature.objects.update_or_create(
+ overlay=overlay,
+ sensor_id=sensor_id,
+ defaults={
+ 'titles': {'en': display_name},
+ 'geometry': point,
+ 'level': level,
+ 'sensor_type': 'environmental', # Combined sensor type
+ 'sensor_value': None, # No single value for combined sensor
+ 'sensor_unit': None, # No single unit for combined sensor
+ 'coordinates_x': x_coord,
+ 'coordinates_y': y_coord,
+ 'fill_color': primary_color,
+ 'stroke_color': primary_color,
+ 'stroke_width': 2,
+ 'fill_opacity': 0.8,
+ 'show_label': True,
+ 'show_geometry': True,
+ 'interactive': True,
+ 'point_icon': 'sensors', # Generic sensor icon
+ 'last_updated': timezone.now(),
+ 'sensor_data': raw_measurements, # Store all raw measurements
+ 'extra_data': {
+ **sensor_readings, # All sensor readings as separate entries
+ 'Last Updated': timezone.now().strftime('%Y-%m-%d %H:%M:%S'),
+ 'Data Source': 'NOI Open Data Hub',
+ 'Station ID': station_id
+ }
+ }
+ )
+
+ if created:
+ created_count += 1
+ readings_str = ', '.join([f"{k}: {v}" for k, v in sensor_readings.items()])
+ self.stdout.write(f'Created sensor {sensor_id} on level {level.short_label}: {readings_str}')
+ else:
+ updated_count += 1
+ readings_str = ', '.join([f"{k}: {v}" for k, v in sensor_readings.items()])
+ self.stdout.write(f'Updated sensor {sensor_id} on level {level.short_label}: {readings_str}')
+
+ self.stdout.write(
+ f'Processed overlay {overlay.id}: {created_count} created, {updated_count} updated'
+ )
+
+ def get_nested_field(self, data, field_path):
+ """Get value from nested field path like 'scoordinate.x'"""
+ try:
+ value = data
+ for part in field_path.split('.'):
+ value = value[part]
+ return value
+ except (KeyError, TypeError):
+ return None
+
+ def get_sensor_color(self, sensor_type, value):
+ """Get color based on sensor type and value"""
+ sensor_type_lower = sensor_type.lower()
+
+ if any(keyword in sensor_type_lower for keyword in ['temperature', 'temp']):
+ if value < 15:
+ return '#0066CC' # Cold - blue
+ elif value < 18:
+ return '#00AAFF' # Cool - light blue
+ elif value < 22:
+ return '#00CC66' # Comfortable - green
+ elif value < 25:
+ return '#FFAA00' # Warm - orange
+ else:
+ return '#FF3333' # Hot - red
+ elif any(keyword in sensor_type_lower for keyword in ['humidity', 'humid']):
+ if value < 30:
+ return '#FF6B6B' # Too dry - red
+ elif value < 60:
+ return '#4ECDC4' # Good - teal
+ else:
+ return '#45B7D1' # Too humid - blue
+ elif any(keyword in sensor_type_lower for keyword in ['co2', 'carbon']):
+ if value < 400:
+ return '#2ECC71' # Excellent - green
+ elif value < 800:
+ return '#F39C12' # Good - orange
+ elif value < 1200:
+ return '#E74C3C' # Poor - red
+ else:
+ return '#8E44AD' # Very poor - purple
+ else:
+ return '#95A5A6' # Default - gray
+
+ def get_sensor_icon(self, sensor_type):
+ """Get icon based on sensor type"""
+ icons = {
+ 'air-temperature': 'thermostat',
+ 'air-humidity': 'water_drop',
+ 'co2-ppm': 'air',
+ 'temperature': 'thermostat',
+ 'humidity': 'water_drop',
+ 'co2': 'air',
+ 'pressure': 'compress',
+ 'light': 'light_mode'
+ }
+ return icons.get(sensor_type, 'sensors')
diff --git a/src/c3nav/mapdata/management/commands/pulloverlaydata.py b/src/c3nav/mapdata/management/commands/pulloverlaydata.py
new file mode 100644
index 00000000..80c3d810
--- /dev/null
+++ b/src/c3nav/mapdata/management/commands/pulloverlaydata.py
@@ -0,0 +1,187 @@
+import logging
+import requests
+from django.core.management.base import BaseCommand
+from c3nav.mapdata.models import DataOverlay, DataOverlayFeature, MapUpdate, Level
+from shapely.geometry import Point
+import json
+import traceback
+
+logger = logging.getLogger(__name__)
+
+class Command(BaseCommand):
+ help = 'Pull overlay data from external APIs'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--force',
+ action='store_true',
+ help='Force update even if not enough time has passed',
+ )
+
+ def handle(self, *args, **options):
+ overlays = DataOverlay.objects.all()
+ for overlay in overlays:
+ self.stdout.write(f"Processing overlay: {overlay.title}")
+ try:
+ self.update_overlay(overlay, force=options['force'])
+ except Exception as e:
+ logger.error(f"Error updating overlay {overlay.id}: {e}")
+ logger.error(traceback.format_exc())
+ self.stderr.write(f"Error updating overlay {overlay.id}: {e}")
+
+ def update_overlay(self, overlay, force=False):
+ """Update a single overlay from its API URL"""
+
+ if not overlay.pull_url:
+ self.stdout.write(f"No API URL configured for overlay {overlay.id}")
+ return
+
+ try:
+ self.stdout.write(f"Fetching data from: {overlay.pull_url}")
+ response = requests.get(overlay.pull_url, timeout=30)
+ response.raise_for_status()
+ data = response.json()
+
+ self.stdout.write(f"Received {len(data)} items from API")
+
+ # Process the data based on overlay type
+ if hasattr(overlay, 'description') and overlay.description and 'temperature' in overlay.description.lower():
+ self.process_temperature_data(overlay, data)
+ else:
+ self.stdout.write(f"Unknown overlay type for overlay {overlay.id}")
+
+ except requests.RequestException as e:
+ logger.error(f"HTTP error fetching {overlay.pull_url}: {e}")
+ self.stderr.write(f"HTTP error: {e}")
+ except Exception as e:
+ logger.error(f"Error processing overlay {overlay.id}: {e}")
+ logger.error(traceback.format_exc())
+ self.stderr.write(f"Error: {e}")
+
+ def process_temperature_data(self, overlay, data):
+ """Process temperature sensor data from NOI Open Data Hub"""
+
+ # Clear existing features for this overlay
+ DataOverlayFeature.objects.filter(overlay=overlay).delete()
+ self.stdout.write(f"Cleared existing features for overlay {overlay.id}")
+
+ # Group measurements by station
+ stations = {}
+ for item in data:
+ scode = item.get('scode')
+ if scode:
+ if scode not in stations:
+ stations[scode] = {
+ 'sname': item.get('sname'),
+ 'scoordinate': item.get('scoordinate'),
+ 'measurements': []
+ }
+ stations[scode]['measurements'].append(item)
+
+ self.stdout.write(f"Found {len(stations)} stations")
+
+ for scode, station_data in stations.items():
+ try:
+ self.create_temperature_feature(overlay, scode, station_data)
+ except Exception as e:
+ logger.error(f"Error creating feature for station {scode}: {e}")
+ logger.error(traceback.format_exc())
+ self.stderr.write(f"Error creating feature for {scode}: {e}")
+
+ def create_temperature_feature(self, overlay, scode, station_data):
+ """Create a DataOverlayFeature for a temperature station"""
+
+ # Extract coordinates from scoordinate object
+ scoordinate = station_data.get('scoordinate')
+ if not scoordinate:
+ self.stdout.write(f"No coordinates for station {scode}")
+ return
+
+ # scoordinate is a dict with x, y coordinates
+ x = scoordinate.get('x')
+ y = scoordinate.get('y')
+
+ if x is None or y is None:
+ self.stdout.write(f"Invalid coordinates for station {scode}: {scoordinate}")
+ return
+
+ self.stdout.write(f"Station {scode} coordinates: x={x}, y={y}")
+
+ # Create point geometry (assuming WGS84/EPSG:4326)
+ point = Point(x, y)
+
+ # Find temperature measurement
+ temperature = None
+ humidity = None
+
+ for measurement in station_data['measurements']:
+ tname = measurement.get('tname', '').lower()
+ if 'temperature' in tname:
+ temperature = measurement.get('mvalue')
+ elif 'humidity' in tname:
+ humidity = measurement.get('mvalue')
+
+ self.stdout.write(f"Station {scode}: temp={temperature}, humidity={humidity}")
+
+ if temperature is None:
+ self.stdout.write(f"No temperature data for station {scode}")
+ return
+
+ # Determine color based on temperature
+ color = self.get_temperature_color(temperature)
+
+ # Try to find appropriate level (ground floor by default)
+ level = None
+ try:
+ # Look for ground floor or level 0
+ level = Level.objects.filter(
+ short_label__in=['0', 'EG', 'Ground', 'G']
+ ).first()
+
+ if not level:
+ # Fallback to any level
+ level = Level.objects.first()
+
+ except Exception as e:
+ logger.warning(f"Could not determine level: {e}")
+
+ if not level:
+ self.stdout.write(f"No level found for station {scode}")
+ return
+
+ self.stdout.write(f"Using level: {level.short_label} for station {scode}")
+
+ # Create the feature
+ title = f"{station_data.get('sname', scode)} ({temperature}°C)"
+
+ feature = DataOverlayFeature.objects.create(
+ overlay=overlay,
+ level=level,
+ geometry=point.wkt,
+ title=title,
+ color=color,
+ opacity=0.8,
+ icon='thermometer'
+ )
+
+ self.stdout.write(f"Created feature {feature.id} for station {scode}")
+
+ def get_temperature_color(self, temperature):
+ """Get color based on temperature value"""
+ try:
+ temp = float(temperature)
+ except (ValueError, TypeError):
+ return '#808080' # Gray for invalid values
+
+ if temp < 10:
+ return '#0000FF' # Blue for very cold
+ elif temp < 15:
+ return '#00BFFF' # Light blue for cold
+ elif temp < 20:
+ return '#00FF00' # Green for cool
+ elif temp < 25:
+ return '#FFFF00' # Yellow for comfortable
+ elif temp < 30:
+ return '#FFA500' # Orange for warm
+ else:
+ return '#FF0000' # Red for hot
\ No newline at end of file
diff --git a/src/c3nav/mapdata/migrations/0139_add_last_pull_time.py b/src/c3nav/mapdata/migrations/0139_add_last_pull_time.py
new file mode 100644
index 00000000..ef731e36
--- /dev/null
+++ b/src/c3nav/mapdata/migrations/0139_add_last_pull_time.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.1.5 on 2025-08-02 06:06
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('mapdata', '0138_rangingbeacon_max_observed_num_clients_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='dataoverlay',
+ name='last_pull_time',
+ field=models.DateTimeField(blank=True, null=True, verbose_name='last pull time'),
+ ),
+ ]
diff --git a/src/c3nav/mapdata/migrations/0140_add_temperature_fields.py b/src/c3nav/mapdata/migrations/0140_add_temperature_fields.py
new file mode 100644
index 00000000..0ad4b9a2
--- /dev/null
+++ b/src/c3nav/mapdata/migrations/0140_add_temperature_fields.py
@@ -0,0 +1,73 @@
+# Generated by Django 5.1.5 on 2025-08-02 07:18
+
+from django.db import migrations, models
+import django_pydantic_field
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('mapdata', '0139_add_last_pull_time'),
+ ]
+
+ operations = [
+ # Add data source URL to DataOverlay
+ migrations.AddField(
+ model_name='dataoverlay',
+ name='data_source_url',
+ field=models.URLField(blank=True, null=True, verbose_name='Data Source URL',
+ help_text='URL to scrape sensor data from'),
+ ),
+
+ # Add sensor configuration to DataOverlay
+ migrations.AddField(
+ model_name='dataoverlay',
+ name='sensor_config',
+ field=django_pydantic_field.SchemaField(
+ schema=dict, blank=True, null=True,
+ verbose_name='Sensor Configuration',
+ help_text='JSON configuration for sensor data mapping and processing'
+ ),
+ ),
+
+ # Add generic sensor fields to DataOverlayFeature
+ migrations.AddField(
+ model_name='dataoverlayfeature',
+ name='sensor_id',
+ field=models.CharField(max_length=100, blank=True, null=True, verbose_name='Sensor ID'),
+ ),
+ migrations.AddField(
+ model_name='dataoverlayfeature',
+ name='sensor_type',
+ field=models.CharField(max_length=50, blank=True, null=True, verbose_name='Sensor Type',
+ help_text='Type of sensor: temperature, humidity, co2, etc.'),
+ ),
+ migrations.AddField(
+ model_name='dataoverlayfeature',
+ name='sensor_value',
+ field=models.FloatField(blank=True, null=True, verbose_name='Sensor Value'),
+ ),
+ migrations.AddField(
+ model_name='dataoverlayfeature',
+ name='sensor_unit',
+ field=models.CharField(max_length=20, blank=True, null=True, verbose_name='Sensor Unit',
+ help_text='Unit of measurement: °C, %, ppm, etc.'),
+ ),
+ migrations.AddField(
+ model_name='dataoverlayfeature',
+ name='coordinates_x',
+ field=models.FloatField(blank=True, null=True, verbose_name='X Coordinate',
+ help_text='X coordinate in c3nav coordinate system'),
+ ),
+ migrations.AddField(
+ model_name='dataoverlayfeature',
+ name='coordinates_y',
+ field=models.FloatField(blank=True, null=True, verbose_name='Y Coordinate',
+ help_text='Y coordinate in c3nav coordinate system'),
+ ),
+ migrations.AddField(
+ model_name='dataoverlayfeature',
+ name='last_updated',
+ field=models.DateTimeField(blank=True, null=True, verbose_name='Last Updated'),
+ ),
+ ]
diff --git a/src/c3nav/mapdata/migrations/0141_add_sensor_data_field.py b/src/c3nav/mapdata/migrations/0141_add_sensor_data_field.py
new file mode 100644
index 00000000..392b5921
--- /dev/null
+++ b/src/c3nav/mapdata/migrations/0141_add_sensor_data_field.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.1.5 on 2025-08-02 12:00
+
+from django.db import migrations
+import django_pydantic_field
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('mapdata', '0140_add_temperature_fields'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='dataoverlayfeature',
+ name='sensor_data',
+ field=django_pydantic_field.SchemaField(
+ schema=dict, blank=True, null=True,
+ verbose_name='Raw Sensor Data',
+ help_text='Raw data from sensor for debugging and additional info'
+ ),
+ ),
+ ]
diff --git a/src/c3nav/mapdata/migrations/0142_add_cloned_item_sync.py b/src/c3nav/mapdata/migrations/0142_add_cloned_item_sync.py
new file mode 100644
index 00000000..215b3ae1
--- /dev/null
+++ b/src/c3nav/mapdata/migrations/0142_add_cloned_item_sync.py
@@ -0,0 +1,35 @@
+# Generated by Django 5.1.5 on 2025-08-02 00:38
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contenttypes', '0002_remove_content_type_name'),
+ ('mapdata', '0138_rangingbeacon_max_observed_num_clients_and_more'),
+ ('mapdata', '0141_add_sensor_data_field')
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ClonedItemSync',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('original_object_id', models.PositiveIntegerField()),
+ ('cloned_object_id', models.PositiveIntegerField()),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('is_active', models.BooleanField(default=True)),
+ ('sync_fields', models.JSONField(default=list, help_text='List of field names to keep synchronized')),
+ ('cloned_content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cloned_synced_items', to='contenttypes.contenttype')),
+ ('original_content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='original_synced_items', to='contenttypes.contenttype')),
+ ],
+ options={
+ 'verbose_name': 'Cloned Item Sync',
+ 'verbose_name_plural': 'Cloned Item Syncs',
+ 'indexes': [models.Index(fields=['original_content_type', 'original_object_id'], name='mapdata_clo_origina_62f4ee_idx'), models.Index(fields=['cloned_content_type', 'cloned_object_id'], name='mapdata_clo_cloned__027e07_idx')],
+ 'unique_together': {('original_content_type', 'original_object_id', 'cloned_content_type', 'cloned_object_id')},
+ },
+ ),
+ ]
diff --git a/src/c3nav/mapdata/models/__init__.py b/src/c3nav/mapdata/models/__init__.py
index 277bd505..34c5cf02 100644
--- a/src/c3nav/mapdata/models/__init__.py
+++ b/src/c3nav/mapdata/models/__init__.py
@@ -8,4 +8,5 @@ from c3nav.mapdata.models.locations import Location, LocationSlug, LocationGroup
from c3nav.mapdata.models.source import Source # noqa
from c3nav.mapdata.models.graph import GraphNode, WayType, GraphEdge # noqa
from c3nav.mapdata.models.theme import Theme # noqa
-from c3nav.mapdata.models.overlay import DataOverlay, DataOverlayFeature # noqa
\ No newline at end of file
+from c3nav.mapdata.models.overlay import DataOverlay, DataOverlayFeature # noqa
+from c3nav.mapdata.models.sync import ClonedItemSync # noqa
\ No newline at end of file
diff --git a/src/c3nav/mapdata/models/overlay.py b/src/c3nav/mapdata/models/overlay.py
index a66da733..3920bcd1 100644
--- a/src/c3nav/mapdata/models/overlay.py
+++ b/src/c3nav/mapdata/models/overlay.py
@@ -44,6 +44,13 @@ class DataOverlay(TitledMixin, AccessRestrictionMixin, models.Model):
verbose_name=_('Editor Access Restriction'),
on_delete=models.PROTECT)
+ # Generic sensor data configuration
+ data_source_url = models.URLField(blank=True, null=True, verbose_name=_('Data Source URL'),
+ help_text=_('URL to scrape sensor data from'))
+ sensor_config: Optional[dict] = SchemaField(schema=dict, blank=True, null=True,
+ verbose_name=_('Sensor Configuration'),
+ help_text=_('JSON configuration for sensor data mapping and processing'))
+
class Meta:
verbose_name = _('Data Overlay')
verbose_name_plural = _('Data Overlays')
@@ -72,6 +79,22 @@ class DataOverlayFeature(TitledMixin, LevelGeometryMixin, models.Model):
null=True,
default=None,
verbose_name=_('extra data (JSON object)'))
+
+ # Generic sensor fields
+ sensor_id = models.CharField(max_length=100, blank=True, null=True, verbose_name=_('Sensor ID'))
+ sensor_type = models.CharField(max_length=50, blank=True, null=True, verbose_name=_('Sensor Type'),
+ help_text=_('Type of sensor: temperature, humidity, co2, etc.'))
+ sensor_value = models.FloatField(blank=True, null=True, verbose_name=_('Sensor Value'))
+ sensor_unit = models.CharField(max_length=20, blank=True, null=True, verbose_name=_('Sensor Unit'),
+ help_text=_('Unit of measurement: °C, %, ppm, etc.'))
+ coordinates_x = models.FloatField(blank=True, null=True, verbose_name=_('X Coordinate'),
+ help_text=_('X coordinate in c3nav coordinate system'))
+ coordinates_y = models.FloatField(blank=True, null=True, verbose_name=_('Y Coordinate'),
+ help_text=_('Y coordinate in c3nav coordinate system'))
+ last_updated = models.DateTimeField(blank=True, null=True, verbose_name=_('Last Updated'))
+ sensor_data: Optional[dict] = SchemaField(schema=dict, blank=True, null=True,
+ verbose_name=_('Raw Sensor Data'),
+ help_text=_('Raw data from sensor for debugging and additional info'))
def to_geojson(self, instance=None) -> dict:
result = {
diff --git a/src/c3nav/mapdata/models/sync.py b/src/c3nav/mapdata/models/sync.py
new file mode 100644
index 00000000..01966cfa
--- /dev/null
+++ b/src/c3nav/mapdata/models/sync.py
@@ -0,0 +1,47 @@
+from django.db import models
+from django.utils.translation import gettext_lazy as _
+
+
+class ClonedItemSync(models.Model):
+ """
+ Tracks relationships between cloned items across different levels
+ to keep them synchronized when one is modified.
+ """
+ # The original item
+ original_content_type = models.ForeignKey(
+ 'contenttypes.ContentType',
+ on_delete=models.CASCADE,
+ related_name='original_synced_items'
+ )
+ original_object_id = models.PositiveIntegerField()
+
+ # The cloned item
+ cloned_content_type = models.ForeignKey(
+ 'contenttypes.ContentType',
+ on_delete=models.CASCADE,
+ related_name='cloned_synced_items'
+ )
+ cloned_object_id = models.PositiveIntegerField()
+
+ # Metadata
+ created_at = models.DateTimeField(auto_now_add=True)
+ is_active = models.BooleanField(default=True)
+
+ # Fields to sync (JSON field storing field names to keep in sync)
+ sync_fields = models.JSONField(
+ default=list,
+ help_text=_('List of field names to keep synchronized')
+ )
+
+ class Meta:
+ verbose_name = _('Cloned Item Sync')
+ verbose_name_plural = _('Cloned Item Syncs')
+ unique_together = ('original_content_type', 'original_object_id',
+ 'cloned_content_type', 'cloned_object_id')
+ indexes = [
+ models.Index(fields=['original_content_type', 'original_object_id']),
+ models.Index(fields=['cloned_content_type', 'cloned_object_id']),
+ ]
+
+ def __str__(self):
+ return f"Sync: {self.original_content_type.model}#{self.original_object_id} -> {self.cloned_content_type.model}#{self.cloned_object_id}"
\ No newline at end of file
diff --git a/src/c3nav/mapdata/signals/sync.py b/src/c3nav/mapdata/signals/sync.py
new file mode 100644
index 00000000..80fa92c2
--- /dev/null
+++ b/src/c3nav/mapdata/signals/sync.py
@@ -0,0 +1,95 @@
+from django.db.models.signals import post_save, post_delete
+from django.dispatch import receiver
+from django.contrib.contenttypes.models import ContentType
+
+from c3nav.mapdata.models.sync import ClonedItemSync
+
+
+@receiver(post_save)
+def sync_cloned_items_on_save(sender, instance, created, **kwargs):
+ """
+ When a model instance is saved, update any cloned items that should be synchronized.
+ """
+ if created:
+ return # Only sync on updates, not creation
+
+ # Check if ClonedItemSync table exists (avoid errors during migrations)
+ try:
+ from django.db import connection
+ with connection.cursor() as cursor:
+ cursor.execute("SELECT 1 FROM information_schema.tables WHERE table_name = 'mapdata_cloneditemsync' LIMIT 1")
+ if not cursor.fetchone():
+ return # Table doesn't exist yet, skip sync
+ except Exception:
+ return # Any database error, skip sync
+
+ content_type = ContentType.objects.get_for_model(sender)
+
+ # Find all sync relationships where this item is the original
+ try:
+ sync_relationships = ClonedItemSync.objects.filter(
+ original_content_type=content_type,
+ original_object_id=instance.pk,
+ is_active=True
+ )
+ except Exception:
+ return # ClonedItemSync model not available, skip sync
+
+ for sync_rel in sync_relationships:
+ try:
+ # Get the cloned item
+ cloned_model = sync_rel.cloned_content_type.model_class()
+ cloned_item = cloned_model.objects.get(pk=sync_rel.cloned_object_id)
+
+ # Update synchronized fields
+ updated = False
+ for field_name in sync_rel.sync_fields:
+ if hasattr(instance, field_name) and hasattr(cloned_item, field_name):
+ original_value = getattr(instance, field_name)
+ current_value = getattr(cloned_item, field_name)
+
+ if original_value != current_value:
+ setattr(cloned_item, field_name, original_value)
+ updated = True
+
+ if updated:
+ cloned_item.save()
+
+ except Exception as e:
+ # Log error but don't break the original save operation
+ print(f"Error syncing cloned item: {e}")
+ # Optionally deactivate the sync relationship if it's broken
+ sync_rel.is_active = False
+ sync_rel.save()
+
+
+@receiver(post_delete)
+def cleanup_sync_on_delete(sender, instance, **kwargs):
+ """
+ When a model instance is deleted, clean up any sync relationships.
+ """
+ # Check if ClonedItemSync table exists (avoid errors during migrations)
+ try:
+ from django.db import connection
+ with connection.cursor() as cursor:
+ cursor.execute("SELECT 1 FROM information_schema.tables WHERE table_name = 'mapdata_cloneditemsync' LIMIT 1")
+ if not cursor.fetchone():
+ return # Table doesn't exist yet, skip cleanup
+ except Exception:
+ return # Any database error, skip cleanup
+
+ try:
+ content_type = ContentType.objects.get_for_model(sender)
+
+ # Clean up sync relationships where this item is either original or cloned
+ ClonedItemSync.objects.filter(
+ original_content_type=content_type,
+ original_object_id=instance.pk
+ ).delete()
+
+ ClonedItemSync.objects.filter(
+ cloned_content_type=content_type,
+ cloned_object_id=instance.pk
+ ).delete()
+ except Exception:
+ pass # ClonedItemSync model not available, skip cleanup
\ No newline at end of file
diff --git a/src/c3nav/mapdata/tasks.py b/src/c3nav/mapdata/tasks.py
index 2897c29a..5d486bbe 100644
--- a/src/c3nav/mapdata/tasks.py
+++ b/src/c3nav/mapdata/tasks.py
@@ -82,3 +82,76 @@ def update_ap_names_bssid_mapping(self, map_name, user_id):
with changeset.lock_to_edit() as locked_changeset:
locked_changeset.title = 'passive update bssids'
locked_changeset.apply(user)
+
+
+@app.task(bind=True, max_retries=3)
+def pull_overlay_data(self, overlay_id=None):
+ """
+ Celery task to pull data overlay features from external URLs.
+
+ Args:
+ overlay_id (int, optional): Specific overlay ID to update.
+ If None, updates all overlays with pull_url.
+ """
+ logger.info('Starting overlay data pull task...')
+
+ from django.core.management import call_command
+ from io import StringIO
+
+ try:
+ # Capture output from the management command
+ output = StringIO()
+
+ if overlay_id:
+ call_command('pulloverlaydata', overlay=overlay_id, stdout=output)
+ else:
+ call_command('pulloverlaydata', stdout=output)
+
+ result = output.getvalue()
+ logger.info(f'Overlay data pull completed: {result}')
+ return result
+
+ except Exception as e:
+ logger.error(f'Overlay data pull failed: {e}')
+ if self.request.retries < self.max_retries:
+ logger.info(f'Retrying in 60 seconds... (attempt {self.request.retries + 1}/{self.max_retries})')
+ raise self.retry(countdown=60, exc=e)
+ else:
+ logger.error('Max retries exceeded for overlay data pull')
+ raise
+
+
+@app.task(bind=True)
+def schedule_overlay_data_pulls(self):
+ """
+ Periodic task to schedule individual overlay data pulls based on their intervals.
+ This should be called every minute by a periodic task scheduler.
+ """
+ from c3nav.mapdata.models import DataOverlay
+ from django.utils import timezone
+
+ logger.info('Checking overlays for scheduled pulls...')
+
+ overlays = DataOverlay.objects.exclude(pull_url__isnull=True).exclude(pull_url='').exclude(pull_interval__isnull=True)
+
+ scheduled_count = 0
+ for overlay in overlays:
+ # Check if it's time to update this overlay
+ should_pull = False
+
+ if overlay.last_pull_time is None:
+ # Never pulled before
+ should_pull = True
+ else:
+ # Check if enough time has passed since last pull
+ next_pull_time = overlay.last_pull_time + overlay.pull_interval
+ should_pull = timezone.now() >= next_pull_time
+
+ if should_pull:
+ # Schedule the pull
+ pull_overlay_data.delay(overlay.pk)
+ scheduled_count += 1
+ logger.info(f'Scheduled pull for overlay: {overlay.title}')
+
+ logger.info(f'Scheduled {scheduled_count} overlay pulls')
+ return scheduled_count
diff --git a/src/c3nav/mapdata/utils/cache/local.py b/src/c3nav/mapdata/utils/cache/local.py
index 32df7fb6..a8f4a910 100644
--- a/src/c3nav/mapdata/utils/cache/local.py
+++ b/src/c3nav/mapdata/utils/cache/local.py
@@ -32,7 +32,6 @@ class LocalCacheProxy:
# not in our cache
result = cache.get(key, default=NoneFromCache)
if result is not NoneFromCache:
- print("result", result, result is NoneFromCache)
if self._items.get(None) is None:
self._items.set(OrderedDict())
self._items.get()[key] = result
diff --git a/src/c3nav/mesh/migrations/0015_alter_nodemessage_message_type.py b/src/c3nav/mesh/migrations/0015_alter_nodemessage_message_type.py
new file mode 100644
index 00000000..90726685
--- /dev/null
+++ b/src/c3nav/mesh/migrations/0015_alter_nodemessage_message_type.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.1.5 on 2025-08-02 00:51
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('mesh', '0014_remove_meshnode_name'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='nodemessage',
+ name='message_type',
+ field=models.CharField(choices=[('NOOP', 'noop'), ('ECHO_REQUEST', 'echo request'), ('ECHO_RESPONSE', 'echo response'), ('MESH_SIGNIN', 'mesh signin'), ('MESH_LAYER_ANNOUNCE', 'mesh layer announce'), ('MESH_ADD_DESTINATION', 'mesh add destination'), ('MESH_REMOVE_DESTINATIONS', 'mesh remove destinations'), ('MESH_ROUTE_REQUEST', 'mesh route request'), ('MESH_ROUTE_RESPONSE', 'mesh route response'), ('MESH_ROUTE_TRACE', 'mesh route trace'), ('MESH_ROUTING_FAILED', 'mesh routing failed'), ('MESH_SIGNIN_CONFIRM', 'mesh signin confirm'), ('MESH_RESET', 'mesh reset'), ('CONFIG_DUMP', 'dump config'), ('CONFIG_HARDWARE', 'hardware config'), ('CONFIG_BOARD', 'board config'), ('CONFIG_FIRMWARE', 'firmware config'), ('CONFIG_UPLINK', 'uplink config'), ('CONFIG_POSITION', 'position config'), ('CONFIG_NODE', 'node config'), ('CONFIG_IBEACON', 'ibeacon config'), ('OTA_STATUS', 'ota status'), ('OTA_REQUEST_STATUS', 'ota request status'), ('OTA_START', 'ota start'), ('OTA_URL', 'ota url'), ('OTA_FRAGMENT', 'ota fragment'), ('OTA_REQUEST_FRAGMENTS', 'ota request fragments'), ('OTA_SETTING', 'ota setting'), ('OTA_APPLY', 'ota apply'), ('OTA_ABORT', 'ota abort'), ('LOCATE_REQUEST_RANGE', 'locate request range'), ('LOCATE_RANGE_RESULTS', 'locate range results'), ('LOCATE_RAW_FTM_RESULTS', 'locate raw ftm results'), ('REBOOT', 'reboot'), ('REPORT_ERROR', 'report error')], db_index=True, max_length=24, verbose_name='message type'),
+ ),
+ ]
diff --git a/src/c3nav/static/img/snap-to-90-icon.svg b/src/c3nav/static/img/snap-to-90-icon.svg
new file mode 100644
index 00000000..e54076c8
--- /dev/null
+++ b/src/c3nav/static/img/snap-to-90-icon.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/c3nav/static/img/snap-to-edges-icon.svg b/src/c3nav/static/img/snap-to-edges-icon.svg
new file mode 100644
index 00000000..2bc7039c
--- /dev/null
+++ b/src/c3nav/static/img/snap-to-edges-icon.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/c3nav/static/img/snap-to-original-icon.svg b/src/c3nav/static/img/snap-to-original-icon.svg
new file mode 100644
index 00000000..938f3d3a
--- /dev/null
+++ b/src/c3nav/static/img/snap-to-original-icon.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/manage.py b/src/manage.py
index 005d7dbf..e7892355 100755
--- a/src/manage.py
+++ b/src/manage.py
@@ -8,3 +8,7 @@ if __name__ == "__main__":
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
+
+
+
+
diff --git a/start_db.sh b/start_db.sh
index 7a588491..a509b94c 100755
--- a/start_db.sh
+++ b/start_db.sh
@@ -12,6 +12,8 @@ if [[ $# == 1 ]] && [[ $1 == "stop" ]]; then
echo "Stopped the postgres container"
elif [[ $# == 1 ]] && [[ $1 == "db" ]]; then
echo "Setting up database"
+ sudo docker stop postgres
+ sudo docker container rm -f postgres
sudo docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=test -e POSTGRES_USER=mindshub postgres
until psql "postgres://mindshub:test@localhost:5432" <<< "CREATE DATABASE insignorocketdb;"; do
sleep 0.5;
@@ -29,6 +31,16 @@ elif [[ $# == 1 ]] && [[ $1 == "run" ]]; then
python manage.py processupdates
python manage.py runserver
popd
+elif [[ $# == 1 ]] && [[ $1 == "run_without_output" ]]; then
+ echo "Processing updates and running server without output"
+ pushd src 2>&1 > /dev/null
+ python manage.py processupdates 2>&1 | (grep -vE '^(INFO|DEBUG)|__debug__' || true)
+ python manage.py runserver 2>&1 | (grep -vE '^(INFO|DEBUG)|__debug__' || true)
+ popd 2>&1 > /dev/null
+elif [[ $# > 0 ]] && [[ $1 == "manage" ]]; then
+ pushd src
+ python manage.py "${@:2}"
+ popd
else
- echo "Usage: $0 [stop|db|run]"
+ echo "Usage: $0 [stop|db|run|run_without_output|manage]"
fi